Guida dell'utente di APT Jason Gunthorpe jgg@debian.org Traduzione di Eugenia Franzoni eugenia@linuxcare.com $Id: guide.it.sgml,v 1.5 2003/04/26 23:26:13 doogie Exp $ Guida per l'uso del gestore di pacchetti APT. Copyright © Jason Gunthorpe, 1998.

Ed. italiana Copyright © Eugenia Franzoni, 2000.

"APT" e questo documento sono software libero, e 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 (se preferite) qualsiasi versione successiva.

"APT" and this document are free software; you can redistribute them and/or modify them under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

Per ulteriori dettagli sui sistemi GNU/Linux si veda il testo completo della licenza nel file /usr/share/common-licenses/GPL. Descrizione generale

Il pacchetto APT al momento contiene due sezioni, il metodo APT dselect e l'interfaccia utente a linea di comando apt-get; entrambi danno modo di installare e rimuovere pacchetti, e di scaricarne altri da Internet. Anatomia del sistema di pacchettizzazione

Il sistema di pacchettizzazione di Debian contiene un gran numero di informazioni associate a ciascun pacchetto, per assicurarsi che si integri facilmente ed in maniera pulita nel sistema; la più importante di esse è il sistema di dipendenze.

Il sistema di dipendenze permette ai singoli programmi di fare uso degli elementi condivisi del sistema, quali le librerie; per ridurre il numero di elementi che l'utente medio debba installare, le porzioni di programmi che non vengono usate spesso vengono poste in pacchetti separati. Inoltre, è possibile avere più di una scelta per cose quali i programmi di 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, mail-crypt è un'estensione di emacs che aiuta a criptare le mail con PGP. Se PGP non è installato, mail-crypt è inutile, quindi mail-crypt ha una dipendenza semplice da PGP. Inoltre, dato che si tratta di un'estensione di emacs, mail-crypt dipende anche da emacs, senza il quale è totalmente inutile.

L'altro tipo di dipendenza importante da capire è la dipendenza di conflitto; con questa, un pacchetto che venga installato insieme ad un altro pacchetto non funziona, e si hanno seri problemi al sistema. Come esempio, si consideri un programma di trasporto della posta, quale sendmail, exim o qmail: non è possibile averne due contemporaneamente, perché entrambi hanno bisogno di restare in ascolto sulla stessa porta di 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 con tutti gli altri.

Come ulteriore complicazione, c'è la possibilità che un pacchetto voglia prendere il posto di un altro; ad esempio, exim e sendmail per molte cose sono identici, dato che entrambi gestiscono la posta e comprendono un'interfaccia comune, quindi il sistema di pacchettizzazione deve dichiarare che sono entrambi agenti di trasporto della posta, e che gli altri pacchetti a cui serve uno dei due devono dipendere da un pacchetto fittizio agente-di-trasporto-della-posta. Quando si modificano a mano i pacchetti, questo può portare a moltissima confusione.

In ciascun momento una singola dipendenza può essere soddisfatta o meno dai pacchetti già installati; APT cerca di risolvere i problemi di dipendenze con un buon numero di algoritmi automatici, che aiutano a selezionare i pacchetti da installare. apt-get

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

La prima Se state usando un proxy server http, dovete prima ancora impostare la variabile d'ambiente http_proxy; vedere sources.list(5). cosa da fare prima di usare apt-get è impostare l'elenco 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 Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages Reading Package Lists... Done Building Dependency Tree... Done

Dopo aver aggiornato l'elenco si possono usare molti comandi: upgrade Upgrade tenterà di fare un aggiornamento indolore del sistema completo, senza installare nuovi pacchetti o rimuoverne di esistenti, e senza aggiornare un pacchetto che possa rovinarne altri. Upgrade farà un elenco di tutti i pacchetti che non avrà potuto aggiornare, cosa che in genere significa che questi dipendono da nuovi pacchetti o 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 singoli pacchetti dando il loro nome. Il pacchetto viene automaticamente scaricato ed installato, cosa molto utile se già se ne conosce il nome e non si vuole entrare in grafica per selezionarlo. Al comando si possono passare anche più pacchetti, che saranno tutti scaricati. L'installazione automatica cerca di risolvere i problemi di dipendenze con gli altri pacchetti elencati, stampa un riassunto e chiede conferma se si devono modificare altri pacchetti che non siano quelli sulla linea di comando. dist-upgrade Dist-upgrade fa un aggiornamento completo, progettato in modo da rendere semplici gli aggiornamenti tra versioni di Debian. Usa un algoritmo sofisticato per determinare il miglior insieme di pacchetti da installare, aggiornare e rimuovere per arrivare alla versione più aggiornata del sistema possibile. In alcune situazioni può essere vantaggioso usare dist-upgrade invece che sprecare tempo a risolvere manualmente le dipendenze con dselect. Una volta completato 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 a linea di comando, che vengono documentate dettagliatamente nella sua pagina man, . L'opzione più utile è -d, che non installa i file scaricati: se il sistema deve scaricare un gran numero di pacchetti, non è bene farglieli installare subito, in caso dovesse andare male qualcosa. Dopo aver usato -d, gli archivi scaricati possono essere installati semplicemente dando di nuovo lo stesso comando senza l'opzione -d. DSelect

Il metodo APT di dselect fornisce tutte le funzionalità di APT all'interno dell'interfaccia grafica di selezione dei pacchetti dselect. dselect viene usato per selezionare i pacchetti da installare o rimuovere, ed APT li installa.

Per abilitare il metodo APT dovete selezionare [A]ccess in dselect e scegliere il metodo APT; vi verrà chiesto un insieme di fonti (Sources), cioè di posti da cui scaricare gli archivi. Tali fonti possono essere siti Internet remoti, mirror locali di Debian o CDROM; ciascuna di esse può fornire una parte dell'archivio Debian, ed APT le combinerà insieme in un set completo di pacchetti. Se avete un CDROM è una buona idea indicare quello per primo, e poi i mirror, in modo da avere accesso alle ultime versioni; APT userà in questo modo automaticamente i pacchetti sul CDROM 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, ftp://ftp.debian.org/debian, http://ftp.de.debian.org/debian, URL [http://llug.sep.bnl.gov/debian]:

La configurazione delle fonti inizia chiedendo la base dell'archivio Debian, propone come default un mirror HTTP, e poi chiede 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 non-US Distribution [stable]:

La distribuzione (``distribution'') fa riferimento alla versione Debian dell'archivio: stable è l'ultima rilasciata, ed unstable è quella di sviluppo. non-US è disponibile solo su alcuni mirror, e contiene dei pacchetti in cui viene usata della tecnologia di criptazione o altre cose che non possano essere esportate dagli Stati Uniti; importare questi pacchetti negli US è però legale.

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

L'elenco dei componenti (``components'') si riferisce alla lista di sotto-distribuzioni da scaricare. Ciascuna distribuzione viene divisa in base al copyright del software: la main contiene pacchetti la cui licenza soddisfa le DFSG, mentre contrib e non-free contengono software che ha diverse restrizioni sull'uso e sulla distribuzione.

Si possono inserire un qualsiasi numero di fonti, e lo script di configurazione continuerà a chiedere fino a che abbiate specificato tutti gli elementi che volete.

Prima di cominciare ad 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 l'informazione scaricata disponibile a dselect. [U]pdate deve essere fatto anche se prima è stato dato 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.

Per default APT rimuoverà automaticamente i pacchetti che sono stati installati con successo. Per modificare questo comportamento, si inserisca Dselect::clean "prompt"; in /etc/apt/apt.conf. L'interfaccia

Entrambi i metodi, dselect APT ed apt-get, condividono la stessa interfaccia; si tratta di un sistema semplice che indica in genere cosa sta per fare, e poi lo fa. Il metodo dselect è in realtà un insieme di script di wrapper ad apt-get. Il metodo fornisce delle funzionalità maggiori del solo apt-get. Dopo la stampa di un riassunto delle operazioni che saranno fatte, APT stampa dei messaggi informativi sullo stato del sistema, in modo che possiate avere davanti agli occhi a quale punto dell'operazione si trova, e quanto ancora si deve aspettare. Avvio

Prima di ciascuna operazione, eccetto l'aggiornamento della lista, APT compie alcune operazioni per prepararsi, oltre a dei controlli dello stato del sistema. In qualsiasi momento le stesse operazioni possono essere fatte con apt-get check

# apt-get check Reading Package Lists... Done Building Dependancy Tree... Done

La prima cosa che fa è leggere tutti i file dei pacchetti in memoria, usando uno schema di caching 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, ed apt-get esce senza eseguire alcuna operazione.

# apt-get check Reading Package Lists... Done Building Dependancy Tree... Done You might want to run apt-get -f install' to correct these. Sorry, but the following packages have unmet dependencies: 9fonts: Depends: xlib6g but it is not installed uucp: Depends: mailx but it is not installed blast: Depends: xlib6g (>= 3.3-5) but it is not installed adduser: Depends: perl-base but it is not installed aumix: Depends: libgpmg1 but it is not installed debiandoc-sgml: Depends: sgml-base but it is not installed bash-builtins: Depends: bash (>= 2.01) but 2.0-3 is installed cthugha: Depends: svgalibg1 but it is not installed Depends: xlib6g (>= 3.3-5) but it is not installed libreadlineg2: Conflicts:libreadline2 (<< 2.1-2.1)

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

Ci sono due modi in cui un sistema possa arrivare in uno stato problematico di questo genere: il primo è causato dal fatto che dpkg possa mancare alcune relazioni sottili tra pacchetti durante un aggiornamento del sistemaAPT considera comunque tutte le dipendenze note, e cerca di prevenire problemi ai pacchetti; il secondo è possibile se l'installazione di un pacchetto fallisce, ed in questo caso è possibile che un pacchetto venga scompattato senza che tutti quelli da cui dipende siano stati installati.

La seconda possibilità è meno seria della prima, dato che APT gestisce l'ordine di installazione dei pacchetti; in entrambi i casi l'opzione -f di apt-get gli farà trovare una soluzione e lo farà continuare. Il metodo APT di dselect comprende sempre l'opzione -f per permettere di configurare facilmente anche i pacchetti con script errati.

Se viene usata però l'opzione -f per correggere un sistema in uno stato molto problematico, è possibile che anche con l'opzione il programma fallisca, subito o 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. 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 operazioni da fare, ma ci sono alcuni elementi comuni: in tutti i casi gli elenchi dipendono dallo stato finale delle cose, e tengono conto dell'opzione -f e di altre attività rilevanti per il comando da eseguire. L'elenco dei pacchetti Extra

The following extra packages will be installed: 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 linea di comando. Viene generato solo per il comando install. I pacchetti elencati sono spesso il risultato di un'operazione di auto installazione (Auto Install). I pacchetti da rimuovere

The following packages will be REMOVED: 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 (Remove) 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, ed in questo caso va fatta estrema attenzione. La lista può contenere dei pacchetti che verranno rimossi perché sono già rimossi parzialmente, forse a causa di un'installazione non terminata correttamente. L'elenco dei nuovi pacchetti installati

The following NEW packages will installed: zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base

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

The following packages have been kept back 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 trattenuti (Kept Back). Il miglior modo per convincere i pacchetti elencati in questa lista è di installarli con apt-get install o usare dselect per risolvere i problemi. Messaggi di attenzione sui pacchetti trattenuti

The following held packages will be changed: cvs

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

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

206 packages upgraded, 8 newly installed, 23 to remove and 51 not upgraded. 12 packages not fully installed or removed. Need to get 65.7M/66.7M of archives. After unpacking 26.5M will be used.

La prima linea del riassunto è semplicemente una versione ridotta di tutte le liste, ed include il numero di aggiornamenti -- cioè dei pacchetti già installati per cui sono disponibili nuove versioni. La seconda linea indica il numero di pacchetti con problemi di configurazione, probabilmente in conseguenza di un'installazione non andata a buon fine. La linea finale indica i requisiti di spazio dell'installazione: i primi due numeri indicano rispettivamente il numero di byte che devono essere trasferiti da posizioni remote, ed il secondo la dimensione totale di tutti gli archivi necessari per l'installazione. 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 dei pacchetti, 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. La visualizzazione dello stato

Durante il download degli archivi e dei file dei pacchetti, APT stampa una serie di messaggi di stato.

# apt-get update Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages Get:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages Hit http://llug.sep.bnl.gov/debian/ testing/main Packages Get:4 http://ftp.de.debian.org/debian-non-US/ unstable/binary-i386/ Packages Get: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 linee che cominciano con Get vengono stampate quando APT inizia a scaricare un file, e l'ultima linea indica il progresso dell'operazione. Il primo valore in percentuale indica la percentuale totale 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 linea di stato viene ripetuta una volta per ciascuna fase del download, 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. La prima parola dopo la parentesi quadra aperta è il nome breve dell'oggetto che si sta scaricando, che per gli archivi è il nome del pacchetto.

All'interno delle virgolette c'è una stringa informativa, che indica il progresso della fase di negoziazione del download. 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 il download viene rappresentato come 102/10.2k, che indica che sono stati scaricati 102 byte di 10.2 kilobyte. 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 del processo di download, e le linee Get scorrono indietro quando viene cominciato il download 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. Dpkg

APT usa dpkg per installare gli archivi e passerà all'interfaccia dpkg una volta finito il download. dpkg porrà anche alcune domande durante la manipolazione dei pacchetti, ed i pacchetti stessi potranno farne altre. Prima di ciascuna domanda viene proposta una descrizione di quello che sta per chiedere, e le domande sono troppo diverse per poter essere discusse in maniera completa in questa occasione.