
                          Guida dell'utente di APT


-----------------------------------------------------------------------------
                                      
                               Jason Gunthorpe

                              <jgg@debian.org>

                               Versione 3.3.0

-----------------------------------------------------------------------------

Diritto d'autore © 1998 Jason Gunthorpe

Licenza

    «APT» e questo documento sono software libero; li si può ridistribuire e/
    o modificare secondo i termini della Licenza Pubblica Generica GNU (GPL),
    pubblicata dalla Free Software Foundation, nella versione 2 o (a propria
    scelta) qualsiasi versione successiva.

    Per ulteriori dettagli, sui sistemi Debian, si veda il testo completo
    della licenza nel file /usr/share/common-licenses/GPL.

Sommario

Questo documento fornisce una panoramica su come usare il gestore di
pacchetti APT.

-----------------------------------------------------------------------------

Indice

1. Descrizione generale
    1.1. Anatomia del sistema dei pacchetti
2. apt-get
3. DSelect
4. L'interfaccia
    4.1. Avvio
    4.2. Il resoconto sullo stato
        4.2.1. L'elenco dei pacchetti extra
        4.2.2. I pacchetti da rimuovere
        4.2.3. L'elenco dei nuovi pacchetti installati
        4.2.4. L'elenco dei pacchetti bloccati
        4.2.5. Messaggi di avvertimento sui pacchetti bloccati
        4.2.6. Resoconto finale
    4.3. La visualizzazione dello stato
    4.4. Dpkg

Capitolo 1. Descrizione generale

Indice

1.1. Anatomia del sistema dei pacchetti

    Il pacchetto APT al momento contiene due sezioni, il metodo APT per 
    dselect e l'interfaccia utente a riga di comando apt-get; entrambi
    forniscono un modo per installare e rimuovere pacchetti, così come per
    scaricarne di nuovi da Internet.

1.1. Anatomia del sistema dei pacchetti

    Il sistema dei pacchetti di Debian contiene un gran numero di
    informazioni associate a ciascun pacchetto, per garantire che si integri
    facilmente ed in maniera pulita nel sistema. La sua caratteristica più
    importante è il sistema di dipendenze.

    Il sistema di dipendenze permette ai singoli programmi di fare uso degli
    elementi condivisi del sistema, quali le librerie. Semplifica
    l'inserimento delle porzioni di un programma usate raramente in pacchetti
    separati per ridurre il numero di cose che l'utente medio deve
    installare. Inoltre, rende possibile avere più di una scelta per cose
    quali i programmi di trasferimento della posta elettronica, i server X e
    così via.

    Il primo passo per capire il sistema di dipendenze è la comprensione del
    concetto di dipendenza semplice: un pacchetto richiede che un altro sia
    installato insieme ad esso per poter funzionare.

    Ad esempio, mailcrypt è un'estensione di emacs che aiuta a cifrare i
    messaggi di posta elettronica GPG. Se GPG non è installato, mailcrypt è
    inutile, quindi mailcrypt ha una dipendenza semplice da GPG. Inoltre,
    dato che si tratta di un'estensione di emacs, mailcrypt ha anche una
    dipendenza semplice da emacs, senza il quale è totalmente inutile.

    L'altro tipo di dipendenza importante da capire è la dipendenza di
    conflitto; significa che un pacchetto, quando è installato insieme ad un
    altro, non funziona e potrebbe potenzialmente causare seri danni al
    sistema. Come esempio, si consideri un programma di trasporto della
    posta, quale sendmail, exim o qmail: non è possibile averne installati
    due contemporaneamente, perché entrambi hanno bisogno di restare in
    ascolto sulla rete per ricevere la posta. Tentare di installarne due
    danneggerebbe seriamente il sistema, quindi ciascun programma di
    trasporto della posta ha una dipendenza di conflitto verso tutti gli
    altri.

    Come ulteriore complicazione, c'è la possibilità per un pacchetto di far
    finta di essere un altro. Ad esempio, exim e sendmail sono dal lato
    pratico identici, dato che entrambi consegnano la posta e utilizzano
    un'interfaccia comune. Il sistema dei pacchetti quindi fornisce un mezzo
    con cui entrambi possono dichiarare di essere programmi di trasporto
    della posta; perciò entrambi dichiarano di fornire un
    mail-transport-agent e gli altri pacchetti che hanno bisogno di un
    programma di trasferimento della posta possono dipendere da
    mail-transport-agent. Quando si cerca di modificare a mano i pacchetti,
    questo può portare a moltissima confusione.

    In un determinato momento una singola dipendenza può essere soddisfatta
    dai pacchetti già installati o può non esserlo; APT cerca di risolvere i
    problemi di dipendenze fornendo svariati algoritmi automatici, che
    aiutano a selezionare i pacchetti da installare.

Capitolo 2. apt-get

    apt-get fornisce un modo semplice di installare i pacchetti dalla riga di
    comando. Diversamente da dpkg, apt-get non tratta i file .deb, ma
    utilizza il vero nome dei pacchetti e può installare archivi .deb solo da
    una fonte.

    La prima ^[1] cosa da fare prima di usare apt-get è scaricare gli elenchi
    dei pacchetti dalle fonti in modo che il programma sappia quali pacchetti
    sono disponibili. Lo si fa con apt-get update. Ad esempio,

    # apt-get update
    Scaricamento di: http://ftp.de.debian.org/debian/ stable/binary-i386/ Packages
    Scaricamento di: http://llug.sep.bnl.gov/debian/ testing/contrib Packages
    Lettura elenco dei pacchetti... Fatto
    Generazione albero delle dipendenze... Fatto

    Una volta aggiornato l'elenco, si possono usare svariati comandi:

    upgrade

        Upgrade tenterà di fare un aggiornamento indolore del sistema
        completo, senza installare mai nuovi pacchetti o rimuoverne di
        esistenti, e senza mai aggiornare un pacchetto se ciò ne rende altri
        difettosi. Può essere usato quotidianamente per fare un aggiornamento
        relativamente sicuro del sistema. Upgrade elencherà tutti i pacchetti
        che non avrà potuto aggiornare, cosa che in genere significa che
        questi dipendono da nuovi pacchetti o che vanno in conflitto con
        altri. Per forzare la loro installazione si può usare dselect o
        apt-get install.

    install

        Install viene usato per installare i pacchetti per nome. Il pacchetto
        viene automaticamente scaricato ed installato; questo può essere
        utile se già se ne conosce il nome e non si vuole entrare in
        un'interfaccia grafica per selezionarlo. Al comando si possono
        passare anche più pacchetti, che saranno tutti scaricati. Install
        cerca automaticamente di risolvere i problemi di dipendenze dei
        pacchetti elencati, stampa un riassunto e chiede conferma se devono
        essere modificati altri pacchetti che non siano quelli sulla riga di
        comando.

    dist-upgrade

        Dist-upgrade fa un aggiornamento completo ed è progettato in modo da
        rendere semplici gli aggiornamenti tra i rilasci di Debian. Usa un
        algoritmo sofisticato per determinare il miglior insieme di pacchetti
        da installare, aggiornare e rimuovere per migrare alla versione più
        recente la maggior parte del sistema possibile. In alcune situazioni
        può essere vantaggioso usare dist-upgrade invece di dedicare tempo a
        risolvere manualmente le dipendenze con dselect. Una volta completato
        il lavoro di dist-upgrade, si può usare dselect per installare
        eventuali pacchetti che sono stati tralasciati.

        È importante controllare attentamente cosa intende fare dist-upgrade,
        dato che le sue decisioni a volte possono essere abbastanza
        sorprendenti.

    apt-get ha diverse opzioni per la riga di comando, che sono documentate
    dettagliatamente nella sua pagina di manuale, apt-get(8). L'opzione più
    utile è -d, che non installa i file scaricati; se il sistema deve
    scaricare un gran numero di pacchetti, non è bene iniziare ad installarli
    nel caso qualcosa dovesse andare storto. Quando si usa -d, gli archivi
    scaricati possono essere installati semplicemente eseguendo di nuovo lo
    stesso comando senza l'opzione -d.


-----------------------------------------------------------------------------

    ^[1] Se si sta usando un server proxy http, si deve prima ancora
    impostare la variabile d'ambiente http_proxy; vedere sources.list(5).

Capitolo 3. DSelect

    Il metodo APT di dselect fornisce tutte le funzionalità del sistema APT
    con l'interfaccia grafica di selezione dei pacchetti dselect. dselect
    viene usato per selezionare i pacchetti da installare o rimuovere, ed APT
    fa l'effettiva installazione.

    Per abilitare il metodo APT si deve selezionare [A]ccess in dselect e
    scegliere il metodo APT; verrà chiesto un insieme di fonti (Sources),
    cioè di posti da cui scaricare gli archivi. Possono essere siti Internet
    remoti, mirror locali di Debian o CD-ROM; ogni fonte può fornire una
    parte dell'intero archivio Debian, ed APT le combinerà automaticamente
    insieme per formare un insieme completo di pacchetti. Se si ha un CD-ROM
    allora è una buona idea indicarlo per primo e poi specificare un mirror,
    in modo da avere accesso alle ultime versioni con le soluzioni dei bug.
    APT in questo modo userà automaticamente i pacchetti sul CD-ROM prima di
    scaricarli da Internet.

       Set up a list of distribution source locations

     Please give the base URL of the debian distribution.
     The access schemes I know about are: http file

     For example:
          file:/mnt/debian,
          https://deb.debian.org/debian,
          http://deb.debian.org/debian,


     URL [http://llug.sep.bnl.gov/debian]:

    La configurazione delle fonti inizia chiedendo la base dell'archivio
    Debian, proponendo in modo predefinito un mirror HTTP; successivamente
    viene chiesta la distribuzione da scaricare.

     Please give the distribution tag to get or a path to the
     package file ending in a /. The distribution
     tags are typically something like: stable unstable testing

     Distribution [stable]:

    The distribution refers to the Debian version in the archive, stable
    refers to the latest released version and unstable refers to the
    developmental version.

     Please give the components to get
     The components are typically something like: main contrib non-free non-free-firmware

     Components [main contrib non-free non-free-firmware]:

    L'elenco delle componenti indica la lista di sottodistribuzioni da
    scaricare. Ciascuna distribuzione viene suddivisa in base alle licenze
    del software: la componente main contiene pacchetti liberi secondo le
    DFSG, mentre contrib e non-free contengono software che ha diverse
    restrizioni sull'uso e sulla distribuzione.

    Si può aggiungere un qualsiasi numero di fonti, e lo script di
    configurazione continuerà a chiedere fino a che non sono state
    specificate tutte quelle desiderate.

    Prima di cominciare a usare dselect è necessario aggiornare l'elenco dei
    pacchetti disponibili selezionando [U]pdate dal menù: si tratta di un
    sovrainsieme di ciò che fa apt-get update, che rende le informazioni
    scaricate disponibili a dselect. [U]pdate deve essere usato anche se
    prima è stato eseguito apt-get update.

    Si può a questo punto continuare selezionando i pacchetti desiderati
    usando [S]elect e poi installando con [I]nstall. Se si usa il metodo APT,
    i comandi [C]onfig e [R]emove non hanno significato, dato che entrambe le
    fasi sono contenute in [I]nstall.

    In modo predefinito APT rimuoverà automaticamente i file (.deb) dei
    pacchetti che sono stati installati con successo. Per modificare questo
    comportamento, inserire Dselect::clean "prompt"; in /etc/apt/apt.conf.

Capitolo 4. L'interfaccia

Indice

4.1. Avvio
4.2. Il resoconto sullo stato
    4.2.1. L'elenco dei pacchetti extra
    4.2.2. I pacchetti da rimuovere
    4.2.3. L'elenco dei nuovi pacchetti installati
    4.2.4. L'elenco dei pacchetti bloccati
    4.2.5. Messaggi di avvertimento sui pacchetti bloccati
    4.2.6. Resoconto finale
4.3. La visualizzazione dello stato
4.4. Dpkg

    Sia il metodo APT per dselect sia apt-get condividono la stessa
    interfaccia; si tratta di un sistema semplice che indica in genere cosa
    sta per fare, e poi lo fa.^[2] Dopo la stampa di un riassunto delle
    operazioni che saranno fatte, APT stampa dei messaggi informativi sullo
    stato, in modo da poter avere un'idea del punto a cui arrivato e di
    quanto ci sia ancora da fare.

4.1. Avvio

    Prima di ogni operazione, eccetto update, APT compie alcune operazioni
    per preparare il suo stato interno; fa inoltre dei controlli sullo stato
    del sistema. In qualsiasi momento le stesse operazioni possono essere
    fatte con apt-get check.

    # apt-get check
    Lettura elenco pacchetti... Fatto
    Generazione albero delle dipendenze... Fatto

    La prima cosa che fa è leggere tutti i file dei pacchetti in memoria; APT
    usa un sistema di cache in modo da rendere la stessa operazione più
    veloce la seconda volta che la si fa. Se alcuni dei file dei pacchetti
    non vengono trovati, sono ignorati e viene stampato un avvertimento
    all'uscita di apt-get.

    L'operazione finale consiste in un'analisi dettagliata delle dipendenze
    del sistema: viene controllato che tutte le dipendenze dei singoli
    pacchetti installati o non scompattati siano soddisfatte. Se vengono
    individuati dei problemi, viene stampato un resoconto, e apt-get esce
    senza eseguire alcuna operazione.

    # apt-get check
    Lettura elenco pacchetti... Fatto
    Generazione albero delle dipendenze... Fatto
    È utile eseguire "run apt --fix-broken install" per correggere ciò.
    I seguenti pacchetti hanno dipendenze non soddisfatte:
      9fonts: Dipende: xlib6g ma non è installato
      uucp: Dipende: mailx ma non è installato
      blast: Dipende: xlib6g (>= 3.3-5) ma non è installato
      adduser: Dipende: perl-base ma non è installato
      aumix: Dipende: libgpmg1 ma non è installato
      debiandoc-sgml: Dipende: sgml-base ma non è installato
      bash-builtins: Dipende: bash (>= 2.01) ma la versione 2.0-3 è installata
      cthugha: Dipende: svgalibg1 ma non è installato
               Dipende: xlib6g (>= 3.3-5) ma non è installato
      libreadlineg2: Va in conflitto: libreadline2 (<< 2.1-2.1)

    In questo esempio il sistema ha molti problemi, tra cui uno piuttosto
    serio con libreadlineg2. Per ciascun pacchetto che ha dipendenze non
    soddisfatte, viene stampata una riga che indica il pacchetto con il
    problema e quali dipendenze non sono soddisfatte. Viene inclusa inoltre
    una breve spiegazione del perché il pacchetto ha un problema di
    dipendenze.

    Ci sono due modi in cui un sistema può arrivare in uno stato problematico
    di questo genere: il primo avviene se dpkg non ha ravvisato alcune
    relazioni delicate tra i pacchetti durante un aggiornamento.^[3] Il
    secondo è possibile se l'installazione di un pacchetto fallisce; in
    questo caso è possibile che un pacchetto venga scompattato senza che
    tutti quelli da cui dipende siano stati installati.

    La seconda situazione è molto meno seria della prima, dato che APT pone
    alcune restrizioni sull'ordine di installazione dei pacchetti. In
    entrambi i casi l'opzione -f di apt-get farà sì che APT trovi una
    soluzione possibile e possa continuare. Il metodo APT di dselect
    comprende sempre l'opzione -f per permettere di continuare facilmente
    anche in caso di script dei manutentori errati.

    Tuttavia, se l'opzione -f viene usata per correggere un sistema in uno
    stato molto problematico causato da una situazione del primo tipo, è
    possibile che l'operazione fallisca subito o che fallisca durante la
    sequenza di installazione. In entrambi i casi è necessario usare dpkg a
    mano (probabilmente usando delle opzioni di forzatura) per correggere
    quanto basta per poter fare continuare APT.

4.2. Il resoconto sullo stato

    Prima di procedere, apt-get presenterà un resoconto delle operazioni che
    sta per fare. In genere tale resoconto varierà con il tipo di operazione
    da fare, ma ci sono svariati elementi comuni: in tutti i casi gli elenchi
    riflettono lo stato finale delle cose, e tengono conto dell'opzione -f e
    di altre attività rilevanti per il comando da eseguire.

4.2.1. L'elenco dei pacchetti extra

    I seguenti pacchetti saranno inoltre installati:
      libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl
      mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base
      bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy
      squake pgp-i python-base debmake ldso perl libreadlineg2
      ssh

    L'elenco dei pacchetti extra mostra tutti i pacchetti che verranno
    installati o aggiornati oltre a quelli indicati sulla riga di comando.
    Viene generato solo per il comando install. I pacchetti elencati sono
    spesso il risultato di un'operazione di installazione automatica.

4.2.2. I pacchetti da rimuovere

    I seguenti pacchetti saranno RIMOSSI:
      xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix
      xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel
      xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid
      nas xpilot xfig

    L'elenco dei pacchetti da rimuovere indica tutti i pacchetti che verranno
    rimossi dal sistema. Può essere mostrato per una qualsiasi delle
    operazioni, e deve sempre essere esaminato attentamente per assicurarsi
    che non venga eliminato qualcosa di importante. Con l'opzione -f è
    particolarmente probabile che vengano eliminati dei pacchetti, perciò in
    questo caso va fatta particolare attenzione. L'elenco può contenere dei
    pacchetti che verranno rimossi perché sono solo parzialmente installati,
    forse a causa di un'installazione non terminata correttamente.

4.2.3. L'elenco dei nuovi pacchetti installati

    I seguenti pacchetti NUOVI saranno installati:
      zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base

    L'elenco dei nuovi pacchetti installati è semplicemente un promemoria su
    quello che accadrà. I pacchetti nell'elenco non sono al momento
    installati nel sistema, ma lo saranno alla fine delle operazioni di APT.

4.2.4. L'elenco dei pacchetti bloccati

    I seguenti pacchetti sono stati mantenuti alla versione attuale:
      compface man-db tetex-base msql libpaper svgalib1
      gs snmp arena lynx xpat2 groff xscreensaver

    In ogni caso in cui il sistema viene aggiornato nel suo insieme, c'è la
    possibilità che non possano venire installate nuove versioni di alcuni
    pacchetti, dato che potrebbero richiedere l'installazione di pacchetti
    non presenti nel sistema o entrare in conflitto con altri già presenti.
    In questo caso, il pacchetto viene elencato nella lista di quelli
    mantenuti alla versione attuale. Il miglior modo per forzare
    l'installazione dei pacchetti elencati in questa lista è installarli con
    apt-get install o usare dselect per risolvere i problemi.

4.2.5. Messaggi di avvertimento sui pacchetti bloccati

    I seguenti pacchetti bloccati saranno cambiati:
      cvs

    A volte si può richiedere ad APT di installare un pacchetto che è stato
    bloccato; in questi casi viene stampato un messaggio che avverte che il
    pacchetto verrà modificato. Questo dovrebbe accadere solo durante
    operazioni di dist-upgrade o di install.

4.2.6. Resoconto finale

    Infine, APT stamperà un riassunto di tutte le modifiche che accadranno.

    206 aggiornati, 8 installati, 23 da rimuovere e 51 non aggiornati.
    12 non completamente installati o rimossi..
    È necessario scaricare 65.7M/66.7M di archivi. Dopo quest'operazione, verranno occupati 26.5M di spazio su disco.

    La prima riga del riassunto è semplicemente una versione ridotta di tutti
    gli elenchi ed include il numero di aggiornamenti, cioè dei pacchetti già
    installati per cui è disponibile una nuova versione. La seconda riga
    indica il numero di pacchetti con problemi di configurazione,
    probabilmente in conseguenza di un'installazione non andata a buon fine.
    La riga finale indica i requisiti di spazio dell'installazione; i primi
    due numeri riguardano la dimensione dei file archivio: indicano
    rispettivamente il numero di byte che devono essere trasferiti da
    posizioni remote e la dimensione totale di tutti gli archivi necessari.
    Il numero successivo indica la differenza in dimensione tra i pacchetti
    già installati e quelli che lo saranno, ed è approssimativamente
    equivalente allo spazio richiesto in /usr dopo l'installazione. Se si
    stanno rimuovendo molti pacchetti, allora il valore può indicare lo
    spazio che verrà liberato.

    Si possono generare altri resoconti usando l'opzione -u per mostrare i
    pacchetti da aggiornare, ma sono simili all'esempio precedente.

4.3. La visualizzazione dello stato

    Durante lo scaricamento degli archivi e dei file dei pacchetti APT stampa
    una serie di messaggi di stato.

    # apt-get update
    Scaricamento di:1 http://ftp.de.debian.org/debian/ stable/main Packages
    Scaricamento di:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages
    Trovato http://llug.sep.bnl.gov/debian/ testing/main Packages
    Scaricamento di:4 http://ftp.de.debian.org/debian/ unstable/binary-i386/ Packages
    Scaricamento di:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages
    11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s

    Le righe che cominciano con Scaricamento di vengono stampate quando APT
    inizia a scaricare un file, mentre l'ultima riga indica il progresso
    dell'operazione. Il primo valore in percentuale nella riga di progresso
    indica la percentuale totale scaricata di tutti i file; dato che la
    dimensione dei file Package non è nota, purtroppo a volte apt-get update
    fa una stima poco accurata.

    La sezione successiva della riga di stato viene ripetuta una volta per
    ciascuna istanza di scaricamento, ed indica l'operazione in corso,
    insieme ad alcune informazioni utili su cosa stia accadendo. A volte
    questa sezione contiene solamente Forking, che significa che il sistema
    operativo sta caricando il modulo per lo scaricamento. La prima parola
    dopo la parentesi quadra aperta è il numero dello scaricamento come
    mostrato nelle righe della cronologia. La parola successiva è il nome
    breve dell'oggetto che si sta scaricando, che per gli archivi è il nome
    del pacchetto.

    All'interno delle virgolette singole c'è una stringa informativa, che
    indica il progresso della fase di negoziazione dello scaricamento.
    Tipicamente comincia con Connecting, procede con Waiting for file e poi
    con Downloading o Resuming; il valore finale è il numero di byte che sono
    stati scaricati dal sito remoto. Una volta cominciato lo scaricamento,
    viene rappresentato come 102/10.2k, che indica che sono stati scaricati
    102 byte su 10,2 kilobyte attesi. La dimensione totale viene sempre
    espressa in notazione a quattro cifre, per risparmiare spazio. Dopo la
    dimensione viene indicato un indicatore progressivo della percentuale del
    file. Il penultimo elemento è la velocità istantanea media, che viene
    aggiornata ogni 5 secondi e riflette la velocità di trasferimento dei
    dati in quel periodo. Infine, viene visualizzato il tempo stimato per il
    trasferimento, che viene aggiornato periodicamente e riflette il tempo
    necessario per completare tutte le operazioni alla velocità di
    trasferimento mostrata.

    La visualizzazione dello stato viene aggiornata ogni mezzo secondo per
    fornire un feedback costante sul processo di scaricamento, e le righe Get
    scorrono in alto quando viene avviato lo scaricamento di un nuovo file.
    Dato che la visualizzazione dello stato viene costantemente aggiornata,
    non è adatta per essere registrata in un file; per non visualizzarla si
    può usare l'opzione -q.

4.4. Dpkg

    APT usa dpkg per installare gli archivi e passerà all'interfaccia di dpkg
    una volta completati gli scaricamenti. dpkg porrà anche alcune domande
    durante l'elaborazione dei pacchetti, ed i pacchetti stessi potranno
    farne altre. Prima di ciascuna domanda viene proposta di solito una
    descrizione di ciò che viene chiesto, e le domande sono troppo diverse
    per poter essere discusse in maniera completa in questa occasione.


-----------------------------------------------------------------------------

    ^[2] Il metodo dselect è in effetti un insieme di script wrapper per 
    apt-get. Il metodo fornisce di fatto più funzionalità di quanto siano
    presenti nel solo apt-get.

    ^[3] APT tuttavia considera tutte le dipendenze note e cerca di evitare
    che i pacchetti siano difettosi.

