Indice
apt-get
/ apt-cache
-
aptitude
testing
con alcuni pacchetti da
unstable
unstable
con alcuni pacchetti da
experimental
Nota | |
---|---|
Questo capitolo è stato scritto assumendo che il rilascio stabile più
recente abbia nome in codice: |
Debian è un'organizzazione di volontari che crea distribuzioni coerenti di pacchetti binari precompilati di software libero e li distribuisce dal suo archivio.
L'archivio Debian viene fornito da molti siti mirror remoti per l'accesso con i metodi HTTP e FTP. È anche disponibile come CD-ROM/DVD.
Il sistema di gestione dei pacchetti di Debian, se usato in modo corretto, permette all'utente di installare dall'archivio insiemi coerenti di pacchetti binari sul sistema. Attualmente ci sono 55089 pacchetti disponibili per l'architettura amd64.
Il sistema di gestione dei pacchetti di Debian ha una storia ricca e fornisce molti programmi con interfacce per l'utente finale e molti metodi di backend per l'accesso agli archivi tra cui scegliere. Attualmente le scelte raccomandate sono le seguenti.
apt-get(8) per tutte le operazioni dalla riga di comando, incluse le installazioni e le rimozioni di pacchetti nonché gli aggiornamenti dist-upgrade.
aptitude(8) per un'interfaccia testuale interattiva per gestire i pacchetti installati e per cercare i pacchetti disponibili.
Tabella 2.1. Elenco degli strumenti Debian di gestione dei pacchetti
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
apt
|
V:871, I:999 | 3531 |
Advanced Packaging Tool (APT), frontend per dpkg che
fornisce i metodi "http ", "ftp " e
"file " per 'accesso agli archivi (inclusi i comandi
apt-get /apt-cache )
|
aptitude
|
V:151, I:906 | 4452 | gestore di pacchetti interattivo basato su terminale con aptitude(8) |
tasksel
|
V:39, I:972 | 374 | strumento per selezionare attività per l'installazione sul sistema Debian (frontend per APT) |
unattended-upgrades
|
V:132, I:302 | 244 | pacchetto di estensione per APT per abilitare l'installazione automatica degli aggiornamenti di sicurezza |
dselect
|
V:5, I:66 | 2485 | gestore di pacchetti basato su terminale (standard precedente, frontend per APT e altri vecchi metodi di accesso) |
dpkg
|
V:933, I:999 | 6704 | sistema di gestione dei pacchetti per Debian |
synaptic
|
V:68, I:451 | 7793 | gestore grafico dei pacchetti (front-end GNOME per APT) |
apt-utils
|
V:366, I:997 | 1099 | programmi di utilità APT: apt-extracttemplates(1), apt-ftparchive(1) e apt-sortpkgs(1) |
apt-listchanges
|
V:324, I:830 | 368 | strumento di notifica dello storico dei cambiamenti dei pacchetti |
apt-listbugs
|
V:7, I:12 | 451 | elenca i bug critici prima di ogni installazione di APT |
apt-file
|
V:12, I:78 | 82 | utilità APT per ricerca di pacchetti, interfaccia a riga di comando |
apt-rdepends
|
V:0, I:6 | 40 | elenca le dipendenze dei pacchetti in modo ricorsivo |
Questi sono alcuni punti fondamentali per la configurazione dei pacchetti in un sistema Debian.
La configurazione manuale fatta dall'amministratore di sistema viene rispettata. In altre parole, il sistema di configurazione dei pacchetti non fa configurazioni invadenti per ragioni di comodità.
Ogni pacchetto viene fornito con un proprio script di configurazione per l'interfaccia utente standard debconf(7), per aiutare nel processo di configurazione iniziale del pacchetto.
I Debian Developer cercano di fare del loro meglio per rendere l'aggiornamento un'esperienza senza problemi grazie agli script di configurazione dei pacchetti.
Sono disponibili per l'amministratore di sistema le complete funzionalità di un pacchetto software, ma quelle con rischi per la sicurezza sono disabilitate nella installazione predefinita.
Se si attiva manualmente un servizio con rischi per la sicurezza, si è responsabili del contenimento del rischio.
L'amministratore di sistema può abilitare manualmente configurazioni esotiche; questo può creare interferenze con popolari programmi generici di supporto per la configurazione del sistema.
Avvertimento | |
---|---|
Non installare pacchetti da una miscela casuale di suite. Probabilmente si disgrega la coerenza tra i pacchetti che richiede una conoscenza approfondita dalla gestione del sistema, come dell'ABI del compilatore, versione delle librerie, funzionalità dell'interprete, ecc. |
L'amministratore di sistema novizio dovrebbe
rimanere con il rilascio stable
di Debian ed applicare
solo gli aggiornamenti di sicurezza. Ciò significa che alcune delle azioni
spiegate in seguito, seppur valide, sono, come precauzione, da evitare fino
a che non si capisce il sistema Debian molto bene. Ecco alcune cose da
ricordare.
Non includere testing
o unstable
in
"/etc/apt/sources.list
".
Non mescolare gli archivi standard Debian con altri archivi non Debian, come
quelli di Ubuntu, in "/etc/apt/sources.list
".
Non creare il file "/etc/apt/preferences
".
Non cambiare il comportamento degli strumenti di gestione dei pacchetti attraverso i loro file di configurazione senza capire a pieno il loro effetto.
Non installare pacchetti presi qua e là con "dpkg -i
<pacchetto_a_caso>
".
Non installare mai pacchetti presi qua e là con "dpkg --force-all
-i <pacchetto_a_caso>
".
Non cancellare o alterare i file in "/var/lib/dpkg/
".
Non sovrascrivere file di sistema, installando direttamente programmi software compilati dai sorgenti.
Se necessario, installarli in "/usr/local
" o
"/opt
"
Gli effetti causati dalle azioni descritte sopra al sistema di gestione dei pacchetti di Debian portano a incompatibilità che possono lasciare il sistema in uno stato inutilizzabile.
Gli amministratori di sistema Debian seri, che gestiscono server di importanza critica, dovrebbero usare particolari precauzioni.
Non installare alcun pacchetto, compresi quelli di aggiornamenti di sicurezza di Debian, senza averli attentamente testati con la propria particolare configurazione in condizioni sicure.
Alla fin fine è l'amministratore di sistema ad essere responsabile del proprio sistema.
La lunga tradizione di stabilità dei sistemi Debian non è di per sé una garanzia.
Nonostante le avvertenze dette prima, si sa che molti lettori di questo
documento desiderano usare le suite testing
o
unstable
di Debian come loro sistema principale per
ambienti Desktop auto-amministrati. Ciò
accade perché funzionano molto bene, sono aggiornate di frequente e offrono
le più recenti funzionalità.
Attenzione | |
---|---|
Per i server di produzione, è
raccomandata la suite |
Non serve far altro che impostare semplicemente la stringa relativa alla
distribuzione nel file "/etc/apt/sources.list
" con il
nome della suite voluta: "testing
" o
"unstable
", o con il suo nome in codice:
"buster
o
"sid
". Questo farà vivere una
vita di aggiornamenti senza fine
.
L'uso di testing
o unstable
è
molto divertente ma comporta qualche
rischio. Anche se la suite unstable
del sistema Debian
sembra molto stabile per la maggior parte del tempo, ci sono stati alcuni
problemi con i pacchetti delle suite testing
e
unstable
e qualcuno di questi non era affatto banale da
risolvere. Può essere piuttosto doloroso
per l'utente. A volte si hanno pacchetti con dipendenze non soddisfatte o
funzionalità mancanti per qualche settimana.
Ecco alcune idee per assicurare un recupero facile e veloce da bug nei pacchetti Debian.
Impostare il sistema per avere due partizioni
avviabili installando la suite stable
di
Debian in un'altra partizione
Tenere a portata di mano il CD di installazione per l'avvio di ripristino
Considerare l'installazione di apt-listbugs
per
controllare le informazioni del Sistema Debian di tracciamento dei Bug
(BTS) prima degli aggiornamenti
Imparare l'infrastruttura del sistema dei pacchetti abbastanza bene da poter aggirare il problema.
Creare un ambiente chroot o simile ed eseguire prima lì il sistema più recente (vedere Sezione 9.10, «Sistema virtualizzato»)
(Se non si è in grado di intraprendere nessuna di queste azioni
precauzionali, probabilmente non si è pronti per le suite
testing
e unstable
.)
L'illuminazione data dalla lettura di ciò che segue salva l'utente dall'eterna lotta karmica con l'inferno degli aggiornamenti e gli fa raggiungere il nirvana Debian.
Guardiamo l'archivio Debian dalla prospettiva dell'utente.
Suggerimento | |
---|---|
La politica ufficiale per gli archivi Debian è definita nel Capitolo 2 - "L'archivo Debian", del manuale Debian Policy. |
Per il normale accesso HTTP, l'archivio viene specificato nel file
"/etc/apt/sources.list
" come nell'esempio seguente per
l'attuale sistema stable
=
stretch
.
deb http://deb.debian.org/debian/ stretch main contrib non-free deb-src http://deb.debian.org/debian/ stretch main contrib non-free deb http://security.debian.org/ stretch/updates main contrib deb-src http://security.debian.org/ stretch/updates main contrib
Viene qui usato il nome in codice "stretch
invece del nome della suite "stable
" per evitare sorprese
una volta che venga rilasciata la nuova stable
.
La struttura di "/etc/apt/sources.list
" è descritta in
sources.list(5)
ed i punti chiave sono i seguenti.
Le righe "deb
" definiscono voci per pacchetti binari.
Le righe "deb-src
" definiscono voci per i pacchetti
sorgenti.
Il primo argomento è l'URL radice dell'archivio Debian.
Il secondo argomento è il nome della distribuzione, o il nome della suite o il nome in codice.
Il terzo argomento e quelli seguenti sono l'elenco dei nomi di aree valide dell'archivio Debian.
Le righe "deb-src
" possono essere tranquillamente omesse
(o commentate aggiungendo il carattere "#" all'inizio della riga) se si usa
solo aptitude
che non accede ai metadati relativi ai
sorgenti. Si velocizza così l'aggiornamento dei metadati
dell'archivio. L'URL può essere "http://
",
"ftp://
", "file://
", ….
Suggerimento | |
---|---|
Se nell'esempio precedente si usa " |
Ecco l'elenco dei siti degli archivi Debian e dei nomi di suite e nomi in codice usati nel file di configurazione.
Tabella 2.2. Elenco dei siti con l'archivo Debian
URL dell'archivio | nome suite (nome in codice) | scopo |
---|---|---|
http://deb.debian.org/debian/ | stable (stretch )
|
rilascio stable (stretch) |
http://deb.debian.org/debian/ | testing (buster )
|
rilascio testing (buster) |
http://deb.debian.org/debian/ | unstable (sid )
|
rilascio unstable (sid) |
http://deb.debian.org/debian/ |
experimental
|
pre-rilascio sperimentale (opzionale, solo per sviluppatori) |
http://deb.debian.org/debian/ |
stable-proposed-updates
|
aggiornamenti per il prossimo rilascio stabile minore (opzionale) |
http://security.debian.org/ |
stable/updates
|
aggiornamenti di sicurezza per il rilascio stable (importante) |
http://security.debian.org/ |
testing/updates
|
aggiornamenti di sicurezza per il rilascio testing (importante) |
http://deb.debian.org/debian/ |
stretch-updates
|
aggiornamenti compatibili per filtri anti-spam, client di messaggistica istantanea, ecc. per stretch |
http://deb.debian.org/debian/ |
stretch-backports
|
pacchetti più recenti in versione backport per stretch (opzionale) |
Attenzione | |
---|---|
Solo il rilascio |
Attenzione | |
---|---|
Fondamentalmente si dovrebbe mettere una sola tra le suite
|
Suggerimento | |
---|---|
Per i sistemi Debian con le suite |
Nota | |
---|---|
I bug che riguardano la sicurezza per l'archivio |
Tabella 2.3. Elenco delle aree dell'archivio Debian
area | numero di pacchetti | criterio dei componenti del pacchetto |
---|---|---|
main
|
54202 |
aderenti alle DFSG e senza dipendenze da non-free
|
contrib
|
342 |
aderenti alle DFSG ma con dipendenze da non-free
|
non-free
|
545 | non aderenti alle DFSG |
Nella tabella soprastante il numero dei pacchetti è per l'architettura
amd64. L'area main
fornisce il sistema Debian (vedere
Sezione 2.1.5, «Debian è al 100% software libero»).
L'organizzazione dell'archivio Debian può essere studiata meglio puntando il
proprio browser a ciascuno degli URL dell'archivio con aggiunto in coda
dists
o pool
.
Ci si riferisce alla distribuzione in due modi, con la suite o con il nome in codice. In alternativa la parola distribuzione viene usata come sinonimo di suite in molta documentazione. La relazione tra la suite e il nome in codice può essere riassunta nel modo seguente.
Tabella 2.4. Relazione tra suite e nome in codice
periodo |
suite = stable
|
suite = testing
|
suite = unstable
|
---|---|---|---|
dopo il rilascio stretch
|
nome in codice = stretch
|
nome in codice = buster
|
nome in codice = sid
|
dopo il rilascio buster
|
nome in codice = buster
|
nome in codice = bullseye
|
nome in codice = sid
|
La storia dei nomi in codice è descritta nelle FAQ Debian: 6.2.1 Quali altri nomi in codice sono stati usati in passato?
Nella terminologia per gli archivi Debian più precisa, la parola "sezione" è usata specificatamente per la categorizzazione dei pacchetti in base all'area di applicazione. (Anche se l'espressione "sezione main" può essere a volte usata per descrivere l'area dell'archivio Debian chiamata "main".)
Ogni volta che uno sviluppatore Debian (DD) carica un nuovo pacchetto
nell'archivio unstable
(passando per incoming), gli viene richiesto di assicurare che i
pacchetti caricati siano compatibili con l'insieme più recente di pacchetti
nell'archivio unstable
più recente.
Se un DD rompe questa compatibilità intenzionalmente per importanti aggiornamenti di librerie, ecc. di solito viene fatto un annuncio nella mailing list debian-devel, ecc.
Prima di muovere un insieme di pacchetti dall'archivio
unstable
all'archivio testing
, lo
script di gestione degli archivio Debian non solo controlla la maturità
(circa 10 giorni di età) e lo stato delle segnalazioni di bug RC per i
pacchetti, ma cerca anche di assicurare che siano compatibili con il più
recente insieme di pacchetti nell'archivio
testing
. Questo processo rende l'archivio
testing
molto aggiornato e usabile.
Attraverso il graduale processo di freeze dell'archivio, giudato dal team di
rilascio, l'archivio testing
viene fatto maturare con un
po' di intervento manuale per renderlo completamente coerente e libero da
bug. Quindi viene creato il nuovo rilascio stable
assegnando il nome in codice per il vecchio archivio
testing
al nuovo archivio stable
e
creando il nuovo nome in codice per il nuovo archivio
testing
. Il contenuto iniziale del nuovo archivio
testing
è esattamente lo stesso dell'archivio
stable
appena rilasciato.
Sia l'archivio unstable
sia l'archivio
testing
possono soffrire di problemi temporanei a causa
di diversi fattori.
Pacchetti difettosi caricati nell'archivio (principalmente per
unstable
)
Ritardo nell'accettazione di nuovi pacchetti nell'archivio (principalmente
per unstable
)
Problemi nei tempi di sincronizzazione degli archivi (sia per
testing
sia per unstable
)
Interventi manuali all'archivio, come rimozione di pacchetti (più per
testing
) ecc.
Perciò se si decide di usare questi archivi, si dovrebbe essere in grado di risolvere o aggirare questo tipo di problemi.
Attenzione | |
---|---|
Per qualche mese circa dopo un nuovo rilascio |
Suggerimento | |
---|---|
Quando si usa l'archivio |
Vedere il manuale Debian Policy per le definizioni degli archivi.
Debian è al 100% software libero perché:
Debian installa in modo predefinito solo software libero per rispettare le libertà dell'utente;
Debian fornisce in main
solo software libero.
Debian raccomanda l'esecuzione del solo software libero contenuto in
main
.
Nessun pacchetto in main
dipende o raccomanda pacchetti
in non-free
o contrib
.
Alcune persone si chiedono se i seguenti due fatti siano in contraddizione o meno tra loro.
«Debian rimarrà libera al 100%». (Prima voce del Contratto sociale Debian)
I server Debian ospitano alcuni pacchetti non-free
e
contrib
.
Queste due cose non sono in contraddizione, perché:
Il sistema Debian è libero al 100% e i suoi pacchetti sono ospitati dai
server Debian nell'area main
.
I pacchetti esterni al sistema Debian sono ospitati dai server Debian nelle
aree non-free
e contrib
.
Queste sono spiegate in dettaglio nella quarta e nella quinta voce del Contratto sociale Debian:
Le nostre priorità sono gli utenti ed il software libero
Ci faremo guidare dai bisogni dei nostri utenti e della comunità del software libero. Metteremo al primo posto i loro interessi. Supporteremo le necessità dei nostri utenti di operare in molti diversi tipi di ambienti di calcolo. Non ci opporremo alle opere non libere che siano state pensate per l'uso in sistemi Debian e non richiederemo compensi a chi crea o usa queste opere. Permetteremo ad altri di creare distribuzioni contenenti sia il sistema Debian che altre opere, senza richiedere compensi. Per raggiungere questi scopi, forniremo un sistema integrato di materiali di alta qualità senza alcuna restrizione legale che limiti qualsiasi uso del sistema.
Opere che non rispettano i nostri standard free software
Ci rendiamo conto che alcuni dei nostri utenti richiedono di usare opere non conformi alle Debian Free Software Guidelines. Abbiamo creato le aree «contrib» e «non-free» nel nostro archivio per queste opere. I pacchetti in queste aree non fanno parte del sistema Debian, sebbene siano stati configurati per l'uso con Debian. Invitiamo i realizzatori di CD a leggere le licenze dei pacchetti in queste aree per determinare se possono distribuire i pacchetti sui loro CD. Inoltre, anche se le opere non libere non fanno parte di Debian, supporteremo il loro uso e forniremo infrastrutture per i pacchetti non liberi (come il nostro bug tracking system e le mailing list).
Gli utenti dovrebbero essere a conoscenza dei rischi correlati all'uso di
pacchetti nelle aree non-free
e
contrib
:
mancanza di libertà legata a tali pacchetti software
mancanza di supporto da parte di Debian per tali pacchetti software (Debian non può supportare del software in maniera adeguata senza avere accesso al suo codice sorgente)
contaminazione del sistema Debian libero al 100%
Il documento Debian Free Software Guidelines è lo standard di Debian per il software libero. Debian interpreta la parola "software" nel suo senso più ampio includendo documentazione, firmware, logo e dati artistici nel pacchetto. Questo fa sì che gli standard Debian per il software libero siano molto severi.
Per potere rimanere conforme a questi severi standard per il software libero
richiesti per main
, Debian toglie il marchio dai pacchetti software
Mozilla come Firefox, Thunderbird e Seamonkey, rimuovendo i loro logo e
alcuni elementi artistici e li fornisce come Iceweasel, Icedove e Iceape
rispettivamente.
I pacchetti non-free
e contribu
tipici
includono pacchetti liberamente distribuibili dei seguenti tipi:
Pacchetti di documentazione distribuiti sotto la GNU Free Documentation License
con sezioni invarianti come quelli per GCC e Make (per lo più presenti nella
sezione non-free/doc
).
Pacchetti di firmware contenenti dati binari senza sorgenti come quelli
elencati in Sezione 9.9.6, «Driver per hardware e firmware» come non liberi
(per lo più presenti nella sezione non-free/kernel
).
Pacchetti di giochi e tipi di carattere con restrizioni sull'uso a scopo commerciale o sulla modifica dei contenuti.
Notare che il numero dei pacchetti non-free
e
contrib
è meno del 2% di quello dei pacchetti in
main
. Permettere l'accesso alle aree
non-free
e contrib
non oscura la fonte
dei pacchetti. L'uso interattivo a schermo intero di
aptitude(8)
fornisce piena visibilità e controllo su quali pacchetti vengano installati
e da quali aree, per permettere di mantenere il proprio sistema libero
quanto lo si desidera.
Il sistema Debian offre un insieme coerente di pacchetti binari grazie al suo meccanismo di dichiarazione, nei campi di controllo dei file, delle dipendenze binarie basate su versioni . Ecco una definizione molto semplificata delle dipendenze.
"Depends" (Dipende)
Dichiara una dipendenza assoluta e tutti i pacchetti elencati in questo campo devono essere installati insieme a quello scelto o prima.
"Pre-Depends" (Pre-dipende)
È come "Depends", tranne che richiede l'installazione completa dei pacchetti elencati in anticipo.
"Recommends" (Raccomanda)
Dichiara una dipendenza forte, ma non assoluta. La maggior parte degli utenti non vorrà il pacchetto in esame a meno che tutti i pacchetti elencati non siano installati.
"Suggests" (Consiglia)
Dichiara una dipendenza debole. La maggior parte degli utenti del pacchetto potrebbe trarre vantaggio dall'installazione dei pacchetti elencati in questo campo, ma può ottenere una funzionalità adeguata senza di essi.
"Enhances" (Migliora)
Dichiara una dipendenza debole come "Suggests" ma in verso opposto.
"Breaks" (Rompe)
Dichiara un'incompatibilità del pacchetto di solito con qualche specifica versione. Generalmente la soluzione è di aggiornare tutti i pacchetti elencati in questo campo.
"Conflicts" (Va in conflitto)
Dichiara una incompatibilità assoluta. Tutti i pacchetti elencati in questo campo devono essere rimossi per installare il pacchetto in esame.
"Replaces" (Sostituisce)
Viene dichiarata quando i file installati dal pacchetto in esame sostituiscono i file nei pacchetti elencati.
"Provides" (Fornisce)
Viene dichiarata quando il pacchetto fornisce tutti i file e le funzionalità nei pacchetti elencati.
Nota | |
---|---|
Notare che una buona configurazione per un pacchetto virtuale deve avere "Provides", "Conflicts" e "Replaces" simultaneamente definiti. Questo assicura che in un dato momento possa essere installato un solo pacchetto reale che fornisce il pacchetto virtuale. |
La definizione ufficiale, compresa quella di dipendenza dei sorgenti, può essere trovata nel manuale Debian Policy, Capitolo 7, Dichiarare le relazioni tra i pacchetti.
Ecco un riassunto semplificato del flusso di eventi nella gestione dei pacchetti con APT.
Update - aggiorna l'elenco dei pacchetti
("aptitude update
" o "apt-get
update
"):
Recupera i metadati dell'archivio dall'archivio remoto
Ricostruisce e aggiorna i metadati locali usati da APT
Upgrade - aggiorna ("aptitude
safe-upgrade
" e "aptitude full-upgrade
", o
"apt-get upgrade
" e "apt-get
dist-upgrade
"):
Sceglie la versione candidata, che è solitamente la più recente disponibile, per tutti i pacchetti installati (per le eccezioni vedere Sezione 2.7.3, «Modificare la versione candidata»)
Risolve le dipendenze dei pacchetti
Se la versione candidata è diversa da quella installata, scarica i pacchetti binari selezionati dall'archivio remoto
Spacchetta i pacchetti binari scaricati
Esegue gli script preinst
Installa i file binari
Esegue gli script postinst
Install - installa ("aptitude
install …
" o "apt-get install …
"):
Sceglie i pacchetti elencati nella riga di comando
Risolve le dipendenze dei pacchetti
Scarica i pacchetti binari selezionati dall'archivio remoto
Spacchetta i pacchetti binari scaricati
Esegue gli script preinst
Installa i file binari
Esegue gli script postinst
Remove - rimuove ("aptitude
remove …
" o "apt-get remove …
"):
Sceglie i pacchetti elencati nella riga di comando
Risolve le dipendenze dei pacchetti
Esegue gli script prerm
Rimuove i file installati tranne i file di configurazione
Esegue gli script postrm
Purge - elimina del tutto
("aptitude purge …
" o "apt-get purge
…
"):
Sceglie i pacchetti elencati nella riga di comando
Risolve le dipendenze dei pacchetti
Esegue gli script prerm
Rimuove i file installati inclusi i file di configurazione
Esegue gli script postrm
Sono stati intenzionalmente omessi dettagli tecnici a favore di una più chiara vista d'insieme.
Si dovrebbe leggere la bella documentazione ufficiale. Il primo documento da
leggere è il file specifico per Debian,
"/usr/share/doc/<nome_pacchetto>/README.Debian
".
Andrebbe consultata anche l'altra documentazione in
"/usr/share/doc/<nome_pacchetto>/
. Se la shell è
impostata come in Sezione 1.4.2, «Personalizzare bash», digitare quanto
segue.
$ cd <nome_pacchetto> $ pager README.Debian $ mc
Per informazioni dettagliate potrebbe essere necessario installare il
pacchetto di documentazione corrispondente il cui nome ha il suffisso
"-doc
".
Se si stanno avendo problemi con un pacchetto specifico, ricordarsi come prima cosa di controllare il sito del Sistema Debian di tracciamento dei bug (BTS).
Tabella 2.5. Elenco dei siti web importanti per la risoluzione di problemi con un pacchetto specifico
sito web | comando |
---|---|
Pagina web del Sistema Debian di tracciamento dei bug (BTS) |
sensible-browser "http://bugs.debian.org/"
|
Segnalazioni di bug di un pacchetto specifico |
sensible-browser
"http://bugs.debian.org/<nome_pacchetto>"
|
Segnalazione di bug corrispondente ad un numero di bug |
sensible-browser
"http://bugs.debian.org/<numero_bug>"
|
Cercare con Google con parole chiave e
aggiungendo "site:debian.org
",
"site:wiki.debian.org
",
"site:lists.debian.org
", ecc.
Quando si invia una segnalazione di bug, usare il comando reportbug(1).
Le operazioni di gestione dei pacchetti basate sui repository sul sistema
Debian possono essere eseguite da molti strumenti di gestione dei pacchetti
basati su APT disponibili sul sistema Debian. Qui, verranno spiegati 2
strumenti base di gestione dei pacchetti: apt-get
/
apt-cache
e aptitude
.
Per operazioni di gestione dei pacchetti che comportano l'installazione o l'aggiornamento dei metadati dei pacchetti, è necessario avere privilegi di root.
Anche se aptitude
è uno strumento interattivo molto bello
ed è quello principalmente usato dall'autore, si dovrebbero conoscere alcuni
avvertimenti:
Il comando aptitude
non è raccomandato per
l'aggiornamento del sistema da un rilascio ad un altro sul sistema Debian
stable
dopo un nuovo rilascio.
Per questo è raccomandato l'uso di "apt-get
dist-upgrade
". Vedere il Bug
nr. 411280.
Il comando aptitude
a volte suggerisce rimozioni in massa
di pacchetti per l'aggiornamento del sistema sui sistemi Debian
testing
o unstable
.
Questa situazione ha spaventato molti amministratori di sistema. Niente panico.
Ciò sembra essere dovuto soprattutto ad una non corrispondenza tra le
versioni di pacchetti da cui dipende un metapacchetto o che sono
raccomandate da un metapacchetto, come gnome-core
.
Ciò può essere risolto selezionando "Annulla azioni in attesa" nel menu dei
comandi di aptitude
, uscendo da
aptitude
e usando "apt-get
dist-upgrade
".
I comandi apt-get
e apt-cache
sono gli
strumenti di gestione dei pacchetti basati su APT più a livello base.
apt-get
e apt-cache
offrono solo
l'interfaccia utente a riga di comando.
apt-get
è più adatto per gli aggiornamenti principali del sistema tra rilasci
diversi, ecc.
apt-get
offre un sistema robusto di risoluzione delle dipendenze dei
pacchetti.
apt-get
è meno avido di risorse di sistema. Consuma meno
memoria ed è più veloce durante l'esecuzione.
apt-cache
offre una ricerca standard, basata su espressioni regolari, nei nomi
e nelle descrizioni dei pacchetti.
apt-get
e apt-cache
possono gestire
più versioni dei pacchetti usando /etc/apt/preferences
,
ma è piuttosto elaborato farlo.
Il comando aptitude
è lo strumento di gestione dei
pacchetti basato su APT più versatile.
aptitude
offre un'interfaccia utente testuale interattiva
a schermo intero.
aptitude
offre anche un'interfaccia utente a riga di
comando.
aptitude
è più adatto per la gestione interattiva quotidiana dei pacchetti, come
l'ispezione dei pacchetti installati e la ricerca dei pacchetti disponibili.
aptitude
è più avido di risorse di sistema. Consuma più
memoria ed è più lento durante l'esecuzione.
apt-cache
offre una ricerca migliorata, basata su espressioni regolari, su
tutti i metadati dei pacchetti.
aptitude
può gestire più versioni dei pacchetti senza
usare /etc/apt/preferences
e farlo è piuttosto intuitivo.
Ecco alcune operazioni base di gestione dei pacchetti dalla riga di comando usando aptitude(8) e apt-get(8) /apt-cache(8).
Tabella 2.6. Operazioni base di gestione dei pacchetti dalla riga di comando usando aptitude(8) e apt-get(8) /apt-cache(8)
sintassi per aptitude
|
sintassi per apt-get /apt-cache
|
descrizione |
---|---|---|
aptitude update
|
apt-get update
|
aggiorna i metadati dell'archivio dei pacchetti |
aptitude install pippo
|
apt-get install pippo
|
installa la versione candidata del pacchetto "pippo " con
le sue dipendenze
|
aptitude safe-upgrade
|
apt-get upgrade
|
installa le versioni candidate dei pacchetti installati senza rimuovere altri pacchetti |
aptitude full-upgrade
|
apt-get dist-upgrade
|
installa le versioni candidate dei pacchetti installati e rimuove, se necessario, altri pacchetti |
aptitude remove pippo
|
apt-get remove pippo
|
rimuove il pacchetto "pippo " lasciando i suoi file di
configurazione
|
N/D |
apt-get autoremove
|
rimuove i pacchetti installati automaticamente che non sono più necessari |
aptitude purge pippo
|
apt-get purge pippo
|
elimina completamente il pacchetto "pippo " con i suoi
file di configurazione
|
aptitude clean
|
apt-get clean
|
pulisce completamente il repository locale dei file dei pacchetti scaricati |
aptitude autoclean
|
apt-get autoclean
|
pulisce il repository locale dei file dei pacchetti scaricati che sono obsoleti |
aptitude show pippo
|
apt-cache show pippo
|
mostra informazioni dettagliate sul pacchetto "pippo "
|
aptitude search <regex>
|
apt-cache search <regex>
|
cerca i pacchetti che corrispondono all'espressione regolare |
aptitude why <regex>
|
N/D | spiega le ragioni per cui i pacchetti che corrispondono a <regex> dovrebbero essere installati |
aptitude why-not <regex>
|
N/D | spiega le ragioni per cui i pacchetti che corrispondono a <regex> non dovrebbero essere installati |
aptitude search 'i!M'
|
apt-mark showmanual
|
elenca i pacchetti installati manualmente |
Nota | |
---|---|
Sebbene il comando |
Nota | |
---|---|
Dato che |
"aptitude why <regex>
" può mostrare ancor più
informazioni se usato come "aptitude -v why
<regex>
". Informazioni simili possono essere ottenute con
"apt-cache rdepends <pacchetto>
".
Quando il comando aptitude
è avviato in modalità a riga
di comando e si trova davanti a problemi come conflitti tra pacchetti, si
può passare alla modalità interattiva a tutto schermo premendo
successivamente il tasto "e
" al prompt.
Si possono usare opzioni per il comando immediatamente dopo
"aptitude
".
Tabella 2.7. Opzioni degne di nota per il comando aptitude(8)
opzione per il comando | descrizione |
---|---|
-s
|
simula il risultato del comando |
-d
|
scarica solamente ma non installa/aggiorna |
-D
|
mostra delle brevi spiegazioni prima di installazioni e rimozioni automatiche |
Per maggiori informazioni vedere
aptitude(8)
e il "manuale utente di aptitude" in
"/usr/share/doc/aptitude/README
".
Suggerimento | |
---|---|
Il pacchetto |
Per la gestione interattiva dei pacchetti, si avvia
aptitude
in modalità interattiva dal prompt di shell
della console nel modo seguente.
$ sudo aptitude -u Password:
In questo modo si aggiorna la copia locale delle informazioni sull'archivio
e viene mostrato l'elenco dei pacchetti in una schermata a pieno
schermo. Aptitude posiziona la sua configurazione in
"~/.aptitude/config
".
Suggerimento | |
---|---|
Se si desidera usare la configurazione di root, invece di quella
dell'utente, usare " |
Suggerimento | |
---|---|
|
Quelle che seguono sono le associazioni di tasti degne di nota usate, nella modalità a schermo intero, per sfogliare lo stato dei pacchetti e per impostare "azioni pianificate" su di essi.
Tabella 2.8. Elenco delle associazioni di tasti per aptitude
tasto | azione associata |
---|---|
F10 o Ctrl-t
|
menu |
?
|
mostra l'aiuto per i tasti (elenco più completo) |
F10 → Aiuto → Manuale utente
|
mostra il Manuale utente |
u
|
aggiorna le informazioni sull'archivio dei pacchetti |
+
|
segna il pacchetto per l'aggiornamento o l'installazione |
-
|
segna il pacchetto per la rimozione (mantiene i file di configurazione) |
_
|
segna il pacchetto per l'eliminazione completa (rimuove i file di configurazione) |
=
|
blocca il pacchetto |
U
|
segna tutti i pacchetti aggiornabili (funziona come full-upgrade) |
g
|
inizia a scaricare e installare i pacchetti selezionati |
q
|
esce dalla schermata attuale e salva i cambiamenti |
x
|
esce dalla schermata attuale e scarta i cambiamenti |
Invio
|
visualizza le informazioni su un pacchetto |
C
|
visualizza il registro dei cambiamenti di un pacchetto |
l
|
cambia la limitazione dei pacchetti visualizzati |
/
|
cerca la prima corrispondenza |
\
|
ripete l'ultima ricerca |
Le espressioni regolari usate per specificare il nome di pacchetto nella
riga di comando e nel prompt del menu dopo aver premuto
"l
" o "//
" sono descritte in seguito.
Le espressioni regolari di aptitude possono esplicitamente trovare
corrispondenze con nomi di pacchetto usando una stringa che inizia con
"~n
seguita dal nome del pacchetto.
Suggerimento | |
---|---|
È necessario premere " |
Nella modalità interattiva a tutto schermo di aptitude(8), i pacchetti nell'elenco vengono mostrati come nell'esempio seguente.
idA libsmbclient -2220kB 3.0.25a-1 3.0.25a-2
Il significato degli elementi di questa riga, partendo da sinistra, è il seguente.
Il flag di "stato attuale" (la prima lettera)
Il flag di "azione pianificata" (la seconda lettera)
Il flag "automatico" (la terza lettera)
Il nome del pacchetto
Il cambiamento in termini di uso dello spazio su disco collegato dall'"azione pianificata"
La versione attuale del pacchetto
La versione candidata del pacchetto
Suggerimento | |
---|---|
L'elenco completo dei flag è fornito alla fine della schermata mostrata di
Aiuto mostrata se si preme
" |
La versione candidata è scelta in base alle preferenze locali attuali (vedere apt_preferences(5) e Sezione 2.7.3, «Modificare la versione candidata»).
Diversi tipi di viste per i pacchetti sono disponibili nel menu
"Viste
".
Tabella 2.9. Elenco delle viste di aptitude
vista | stato | descrizione della vista |
---|---|---|
Vista dei pacchetti
|
Buona | vedere Tabella 2.10, «Organizzazione delle viste standard dei pacchetti» (vista standard) |
Controlla Raccomandati
|
Buona | elenca i pacchetti che sono raccomandati da alcuni dei pacchetti installati, ma non sono ancora installati |
Elenco unico dei pacchetti
|
Buona | elenca i pacchetti senza organizzarli in gruppi (per l'uso con espressioni regolari) |
Consultazione per «Debtags»
|
Molto usabile | elenca i pacchetti organizzati in base alle loro voci Debtags |
Consultazione per categorie
|
Deprecata |
elenca i pacchetti organizzati in base alla loro categoria (usare al suo
posto Consultazione per «Debtags» )
|
Nota | |
---|---|
È estremamente benvenuto ogni aiuto per migliorare l'assegnazione di etichette Debtags ai pacchetti! |
La "Vista dei pacchetti
" standard organizza i pacchetti
un po' nello stile di dselect
con alcune funzionalità
extra.
Tabella 2.10. Organizzazione delle viste standard dei pacchetti
categoria | descrizione della vista |
---|---|
Pacchetti aggiornabili
|
elenca i pacchetti organizzati in sezione →
area → pacchetto
|
Pacchetti nuovi
|
" " |
Pacchetti installati
|
" " |
Pacchetti non installati
|
" " |
Pacchetti obsoleti e creati localmente
|
" " |
Pacchetti virtuali
|
elenca i pacchetti con la stessa funzione |
Task
|
elenca i pacchetti con funzioni diverse solitamente necessarie per una stessa attività |
Suggerimento | |
---|---|
La vista dei |
Aptitude offre diverse opzioni per cercare pacchetti usando il suo schema di espressioni regolari.
Nella riga di comando della shell:
"aptitude search '<regex_aptitude>'
" per elencare
lo stato di installazione, il nome del pacchetto ed una descrizione breve
dei pacchetti che corrispondono.
"aptitude show '<nome_pacchetto>'
" per elencare una
descrizione dettagliata del pacchetto
Nella modalità interattiva a tutto schermo:
"l
" per limitare la vista dei pacchetti ai pacchetti che
corrispondono
"/
" per cercare un pacchetto che corrisponda
"\
" per cercare all'indietro un pacchetto che corrisponda
"n
" per trovare il successivo
"N
" per trovare il successivo (all'indietro)
Suggerimento | |
---|---|
La stringa <package_name> viene usata per trovare una corrispondenza
esatta con il nome di pacchetto a meno che non venga esplicitamente fatta
iniziare con " |
La struttura delle espressioni regolari di aptitude è quella di ERE (vedere Sezione 1.6.2, «Espressioni regolari»)
estese in stile mutt ed il significato delle speciali regole estese di
corrispondenza, specifiche di aptitude
, è il seguente.
Tabella 2.11. Elenco delle regole per espressioni regolari di aptitude
descrizione della regola estesa di corrispondenza | struttura della espressione regolare |
---|---|
corrispondenza con il nome di pacchetto |
~n<regex_nome>
|
corrispondenza con la descrizione |
~d<regex_descrizione>
|
corrispondenza con il nome del task |
~t<regex_task>
|
corrispondenza con il debtag |
~G<regex_debtag>
|
corrispondenza con il manutentore |
~m<regex_mantainer>
|
corrispondenza con la sezione del pacchetto |
~s<regex_sezione>
|
corrispondenza con la versione del pacchetto |
~V<regex_versione>
|
corrispondenza con l'archivio | ~A{stretch,buster,sid }
|
corrispondenza con l'origine | ~O{debian,… }
|
corrispondenza con la priorità | ~p{extra,important,optional,required,standard }
|
corrispondenza con pacchetti essenziali |
~E
|
corrispondenza con pacchetti virtuali |
~v
|
corrispondenza con pacchetti nuovi |
~N
|
corrispondenza con azioni pendenti | ~a{install,upgrade,downgrade,remove,purge,hold,keep }
|
corrispondenza con pacchetti installati |
~i
|
corrispondenza con pacchetti installati e con l'indicatore A (pacchetti installati automaticamente) |
~M
|
corrispondenza con i pacchetti installati e senza l'indicatore A (pacchetti selezionati dall'amministratore) |
~i!~M
|
corrispondenza con pacchetti installati che sono aggiornabili |
~U
|
corrispondenza con pacchetti rimossi ma non eliminati completamente |
~c
|
corrispondenza con pacchetti rimossi, eliminati o che possono essere rimossi |
~g
|
corrispondenza con pacchetti che dichiarano problemi di dipendenze |
~b
|
corrispondenza con pacchetti con problemi di dipendenze di tipo <tipo> |
~B<tipogt;
|
corrispondenza con pacchetti <modello> con dipendenze di tipo <tipo> |
~D[<tipo>:]<modello>
|
corrispondenza con pacchetti <modello> con dipendenze non soddisfatte di tipo <tipo> |
~DB[<tipo>:]<modello>
|
corrispondenza con pacchetti verso i quali il pacchetto che corrisponde a <modello> dichiara una dipendenza di tipo <tipo> |
~R[<tipo>:]<modello>
|
corrispondenza con pacchetti verso i quali il pacchetto <termine> dichiara una dipendenza non soddisfatta di tipo <tipo> |
~RB[<tipo>:]<modello>
|
corrispondenza con pacchetti da cui dipende un qualche altro pacchetto installato |
~R~i
|
corrispondenza con pacchetti da cui non dipende alcun pacchetto installato |
!~R~i
|
corrispondenza con pacchetti da cui dipende o che vengono raccomandati da qualche altro pacchetto |
~R~i|~Rrecommends:~i
|
corrispondenza con pacchetto <modello> con filtro sulle versioni |
~S filtro <modello>
|
corrispondenza con tutti i pacchetti (vero) |
~T
|
corrispondenza con nessun pacchetto (falso) |
~F
|
Il formato dell'espressione regolare è la stessa di quello ERE usato nei tipici strumenti per il testo in
stile Unix "^
", ".*
",
"$
", ecc. come in
egrep(1),
awk(1)
e
perl(1).
Il <tipo> di relazione è uno tra depends, predepends, recommends, suggests, conflicts, replaces, provides, e definisce la relazione tra i pacchetti.
Il <tipo> di dipendenza predefinito è "depends".
Suggerimento | |
---|---|
Quando <modello_regex> è una stringa vuota, mettere
" |
Ecco alcune scorciatoie.
"~P<termine>
" ==
"~Dprovides:<termine>
"
"~C<termine>
" ==
"~Dconflicts:<termine>
"
"…~W termine
" == "(…|termine)
"
Gli utenti che hanno familiarità con mutt
imparano
presto, dato che la sintassi per le espressioni si è ispirata a mutt. Vedere
"SEARCHING, LIMITING, AND EXPRESSIONS" nel "Manuale utente",
"/usr/share/doc/aptitude/README
".
Nota | |
---|---|
Con la versione |
Se la voce di menuF10
→ Opzioni → Preferenze → Gestione
delle dipendenze" è impostata in modo appropriato, selezionando un pacchetto
in aptitude
non si richiamano solamente i pacchetti
definiti nel suo elenco "Depends:
", ma anche quelli
nell'elenco "Recommends:
". Questi pacchetti installati
automaticamente vengo rimossi automaticamente se non sono più necessari
secondo aptitude
.
L'opzione che controlla il comportamento di "installazione automatica" del
comando aptitude
può anche essere manipolata usando il
comando
apt-mark(8)
dal pacchetto apt
.
Si può controllare lo storico delle attività sui pacchetti nei file di registro.
Tabella 2.12. File di registro per le attività sui pacchetti
file | contenuto |
---|---|
/var/log/dpkg.log
|
Registro delle attività a livello dpkg per tutte le
attività sui pacchetti
|
/var/log/apt/term.log
|
Registro delle attività APT generiche |
/var/log/aptitude
|
Registro delle attività di comandi aptitude
|
In realtà non è facile ottenere delle informazioni immediatamente comprensibili da questi file di registro. Vedere Sezione 9.2.10, «Registrare i cambiamenti a file di configurazione» per un metodo più facile.
Ecco alcuni esempi di operazioni con aptitude(8).
Il seguente comando elenca i pacchetti i cui nomi corrispondono alle espressioni regolari specificate.
$ aptitude search '~n(pam|nss).*ldap' p libnss-ldap - NSS module for using LDAP as a naming service p libpam-ldap - Pluggable Authentication Module allowing LDAP interfaces
È piuttosto utile se si desidera trovare il nome esatto di un pacchetto.
L'espressione regolare "~dipv6
" nel prompt di
"l
" nella vista "Nuovo elenco unico dei pacchetti",
limita la visualizzazione dei pacchetti a quelli la cui descrizione
corrisponde all'espressione "ipv6" e permette di sfogliare interattivamente
le loro informazioni.
Si possono eliminare tutti i file di configurazione rimasti di pacchetti rimossi.
Controllare il risultato del comando seguente.
# aptitude search '~c'
Se si pensa che sia giusto rimuover i pacchetti elencati, eseguire il comando seguente.
# aptitude purge '~c'
Si può fare la stessa cosa in modalità interattiva per avere un controllo più dettagliato.
Fornire l'espressione regolare "~c
" al prompt di
"l
" nella vista "Nuova vista dei pacchetti". In questo
modo si limita la visualizzazione a quei pacchetti che corrispondono
all'espressione regolare, cioè "rimossi ma non eliminati
completamente". Tutte le corrispondenze trovate possono essere mostrate
premendo "[
" nelle intestazioni di primo livello.
Premere poi "_
" nell'intestazione di primo livello, come
"Pacchetti non installati". In questo modo vengono selezionati per
l'eliminazione completa solo quei pacchetti contenuti sotto l'intestazione
che hanno fatto corrispondenza con l'espressione regolare. Si possono
escludere alcuni pacchetti in modo interattivo dall'eliminazione premendo
"=
" per ciascuno di essi.
Questa tecnica è piuttosto comoda e funziona per molti altri tasti di comando.
Ecco come faccio per mettere ordine nello stato di installazione automatico/non automatico per i pacchetti (dopo aver usato un installatore che non sia aptitude, ecc.).
Avviare da root aptitude
in modalità interattiva.
Digitare "u
", "U
",
"f
" e "g
" per aggiornare l'elenco dei
pacchetti e i pacchetti stessi.
Digitare "l
" per impostare la limitazione della
visualizzazione con "~i(~R~i|~Rrecommends:~i)
" e digitare
"M
" su "Pacchetti installati
" per
marcarli come installati automaticamente.
Digitare "l
" per impostare la limitazione della
visualizzazione dei pacchetti con
"~prequired|~pimportant|~pstandard|~E
" e digitare
"m
" su "Pacchetti installati
" per
marcarli come installati manualmente.
Digitare "l
" per impostare la limitazione della
visualizzazione dei pacchetti con "~i!~M
" e rimuovere i
pacchetti inutilizzati digitando "-
" su ciascuno di essi
dopo averli visualizzati digitando "[
" su
"Pacchetti installati
".
Digitare "l
" per impostare la limitazione della
visualizzazione dei pacchetti con "~i
"; poi digitare
"m
" su "Task
" per marcare quei
pacchetti come installati manualmente.
Uscire da aptitude
.
Avviare "apt-get -s autoremove|less
" da root per
controllare quelli che non sono usati.
Riavviare aptitude
in modalità interattiva e segnare i
pacchetti necessari con "m
".
Riavviare "apt-get -s autoremove|less
" da root per
controllare che in REMOVED siano contenuti soltanto i pacchetti attesi.
Avviare "apt-get autoremove|less
" da root per rimuovere
automaticamente i pacchetti non utilizzati.
L'azione "m
" sopra "Task
" è opzionale
e server per prevenire situazioni di rimozioni di massa di pacchetti in
futuro.
Nota | |
---|---|
Quando si passa ad un nuovo rilascio, ecc. si dovrebbe considerare una installazione pulita di un nuovo sistema anche se è possibile aggiornare Debian nel modo descritto in seguito. Ciò dà la possibilità di rimuovere la spazzatura raccolta nel tempo e fornisce la migliore combinazione dei pacchetti più nuovi. Naturalmente si dovrebbe fare un backup completo del sistema in un posto sicuro (vedere Sezione 10.2, «Backup e ripristino») prima di farlo. Raccomando di creare una configurazione con due sistemi avviabili usando due diverse partizioni per avere una transizione il più lineare possibile. |
Si può fare l'aggiornamento completo del sistema ad un nuovo rilascio
cambiando il contenuto del file "/etc/apt/sources.list
"
facendolo puntare al nuovo rilascio ed eseguendo il comando
"apt-get update; apt-get dist-upgrade
".
Per aggiornare da stable
a testing
o
unstable
, sostituire
""stretch
" nel file
"/etc/apt/sources.list
" di esempio descritto in Sezione 2.1.4, «Nozioni di base sugli archivi Debian» con
"buster
" o "sid
".
In realtà si possono dover affrontare alcune complicazioni a causa di
problemi di transizione dei pacchetti, per lo più a causa di dipendenze. Più
è grande la differenza nell'aggiornamento, più è probabile dover affrontare
problemi più grossi. Per la transizione dal vecchio rilascio
stable
al nuovo stable
si possono
leggere le nuove Note di rilascio e
seguire esattamente la procedura che vi è descritta per minimizzare i
problemi.
Quando si decide di passare da stable
a
testing
prima del suo rilascio formale non ci sono Note di rilascio che possano aiutare. La
differenza tra stable
e testing
potrebbe essere diventata piuttosto grande dopo il precendente rilascio
stable
e potrebbe rendere l'aggiornamento complicato.
SI dovrebbero prendere misure precauzionali per l'aggiornamento completo raccogliendo le informazioni più aggiornate da mailing list ed usando il buon senso.
Leggere le "Note di rilascio" precedenti.
Fare il backup dell'intero sistema (specialmente dei dati e della configurazione).
Tenere a portata di mano supporti avviabili in caso di problemi con il bootloader.
Informare con un buon anticipo gli utenti nel sistema.
Registrare l'attività di aggiornamento con script(1).
Applicare l'opzione "unmarkauto" ai pacchetti richiesti, ad esempio
"aptitude unmarkauto vim
, per prevenire la loro
rimozione.
Minimizzare i pacchetti installati per ridurre le probabilità di conflitti tra i pacchetti, ad esempio rimuovere i pacchetti dell'attività desktop.
Rimuovere il file "/etc/apt/preferences
" (disabilitare
apt-pinning).
Cercare di aggiornare per gradi: oldstable
→
stable
→ testing
→
unstable
.
Aggiornare il file "/etc/apt/sources.list
per farlo
puntare solamente al nuovo archivio ed eseguire "aptitude
update
".
Installare, opzionalmente i nuovi pacchetti partendo dai pacchetti fondamentali, ad esempio
"aptitude install perl
".
Eseguire il comando "apt-get -s dist-upgrade
" per avere
un'idea dell'impatto dell'aggiornamento.
Eseguire da ultimo il comando "apt-get dist-upgrade
".
Attenzione | |
---|---|
Non è saggio saltare un rilascio principale Debian quando si aggiorna da un
rilascio |
Attenzione | |
---|---|
Nelle "Note di rilascio" precedenti GCC, il kernel Linux, initrd-tools, Glibc, Perl, APT tool chain, ecc. hanno richiesto un po' di attenzione particolare per gli aggiornamenti dell'intero sistema. |
Per gli aggiornamenti quotidiani in unstable
, vedere
Sezione 2.4.3, «Salvaguardarsi da problemi coi pacchetti».
Ecco un elenco di altre operazioni di gestione dei pacchetti per i quali
aptitude
è di livello troppo altro o manca delle
funzionalità richieste.
Tabella 2.13. Elenco delle operazioni avanzate per la gestione dei pacchetti
comando | azione |
---|---|
COLUMNS=120 dpkg -l <modello_nome_pacchetto>
|
elenca lo stato di un pacchetto installato per una segnalazione di bug |
dpkg -L <nome_pacchetto>
|
elenca il contenuto di un pacchetto installato |
dpkg -L <nome_pacchetto> | egrep
'/usr/share/man/man.*/.+'
|
elenca le pagine man di un pacchetto installato |
dpkg -S <modello_nome_file>
|
elenca i pacchetti installati che uno un file con un nome che corrisponde al modello |
apt-file search <modello_nome_file>
|
elenca i pacchetti nell'archivio che hanno un file con un nome che corrisponde al modello |
apt-file list <modello_nome_pacchetto>
|
elenca il contenuto dei pacchetti nell'archivio che corrispondono al modello |
dpkg-reconfigure <nome_pacchetto>
|
riconfigura il pacchetto con esattamente quel nome |
dpkg-reconfigure -p=low <nome_pacchetto>
|
riconfigura il pacchetto con esattamente quel nome ponendo le domande più dettagliate |
configure-debian
|
riconfigura i pacchetti da un'interfaccia a tutto schermo a menu |
dpkg --audit
|
controlla il sistema alla ricerca di pacchetti parzialmente installati |
dpkg --configure -a
|
configura tutti i pacchetti parzialmente installati |
apt-cache policy <nome_pacchetto_binario>
|
mostra la versione disponibile, la priorità e le informazioni nell'archivio di un pacchetto binario |
apt-cache madison <nome pacchetto>
|
mostra la versione disponibile e le informazioni nell'archivio di un pacchetto |
apt-cache showsrc <nome_pacchetto_binario>
|
mostra informazioni sul pacchetto sorgente di un pacchetto binario |
apt-get build-dep <nome_pacchetto>
|
installa i pacchetti richiesti per compilare un pacchetto |
aptitude build-dep <nome_pacchetto>
|
installa i pacchetti richiesti per compilare un pacchetto |
apt-get source <nome_pacchetto>
|
scarica un sorgente (da un archivio standard) |
dget <URL del file dsc>
|
scarica un pacchetto sorgente (da un altro archivio) |
dpkg-source -x
<nome_pacchetto>_<versione>-<versione_debian>.dsc
|
crea un albero dei sorgenti a partire da un insieme di pacchetti sorgenti
("*.orig.tar.gz " e
"*.debian.tar.gz "/"*.diff.gz ")
|
debuild binary
|
compila pacchetti da un albero dei sorgenti locale |
make-kpkg immagine_kernel
|
compila un pacchetto kernel a partire da un albero dei sorgenti del kernel |
make-kpkg --initrd immagine_kernel
|
compila un pacchetto kernel con initramfs abilitato, a partire da un albero dei sorgenti |
dpkg -i
<nome_pacchetto>_<versione>-<versione_debian>_<arch>.deb
|
installa un pacchetto locale nel sistema |
debi
<nome_pacchetto>_<versione>-<versione_debian>_<arch>.dsc
|
installa pacchetti locali nel sistema |
dpkg --get-selections '*' >selection.txt
|
salva le informazioni di stato sui pacchetti selezionati a livello di
dpkg
|
dpkg --set-selections <selection.txt
|
imposta le informazioni di stato sui pacchetti selezionati a livello di
dpkg
|
echo <nome_pacchetto> hold | dpkg --set-selections
|
imposta lo stato di selezione di un pacchetto a livello di
dpkg a hold
(equivalente a "aptitude hold<nome_pacchetto> ")
|
Nota | |
---|---|
Per un pacchetto con la funzionalità multi-arch, può essere necessario specificare
l'architettura per alcuni comandi. Per esempio, usare « |
Attenzione | |
---|---|
Gli strumenti per i pacchetti a più basso livello, come " |
Notare quanto segue.
Tutti i comandi di configurazione ed installazioni di sistema devono essere eseguiti da root.
A differenza di aptitude
che usa espressioni regolari
(vedere Sezione 1.6.2, «Espressioni regolari»), gli altri comandi di
gestione dei pacchetti usano espansioni di modelli in stile shell (vedere
Sezione 1.5.6, «Glob della shell»).
Per
apt-file(1),
fornito dal pacchetto apt-file
, è necessario eseguire
prima "apt-file update
".
configure-debian(8),
fornito dal pacchetto configure-debian
esegue
dpkg-reconfigure(8)
come suo backend.
dpkg-reconfigure(8) esegue gli script dei pacchetti usando debconf(1) come suo backend.
I comandi "apt-get build-dep
", "apt-get
source
" e "apt-cache showsrc
" richiedono la
voce "deb-src
" in
"/etc/apt/sources.list
".
dget(1),
debuild(1)
e
debi(1)
richiedono il pacchetto devscripts
.
Vedere la procedura per (ri)creare pacchetti usando "apt-get
source
" in Sezione 2.7.13, «Fare il port di un pacchetto nel sistema stabile».
Il comando make-kpkg
richiede il pacchetto
kernel_package
(vedere Sezione 9.9, «Il kernel»).
Vedere Sezione 12.11, «Creare pacchetti Debian» per informazioni generali sulla creazione di pacchetti.
L'installazione di debsums
permette la verifica dei file
di pacchetto installati in base ai valori delle somme di controllo MD5sum
nei file "/var/lib/dpkg/info/*.md5sums
" con
debsums(1).
Per il funzionamento di MD5sum vedere Sezione 10.3.5, «Somme di controllo MD5».
Nota | |
---|---|
Dato che il database MD5sum può essere manomesso da un intruso,
|
Molti utenti preferiscono usare il rilascio unstable del sistema Debian per avere le nuove funzionalità ed i nuovi pacchetti. Questo rende il sistema più esposto a bug critici sui pacchetti.
L'installazione del pacchetto apt-listbugs
salvaguarda il
sistema dai bug critici controllando automaticamente, al momento degli
aggiornamenti fatti con il sistema APT, il BTS Debian alla ricerca dei bug
critici.
L'installazione del pacchetto apt-listchanges
fornisce
importanti notizie contenute in NEWS.Debian
quando si
fanno aggiornamenti con il sistema APT.
Sebbene visitare il sito Debian http://packages.debian.org/ faciliti oggi giorno la ricerca nei metadati dei pacchetti, ci sono metodi più tradizionali per farlo.
I comandi grep-dctrl(1), grep-status(1) e grep-available(1) possono essere usati per cercare in qualsiasi file che sia nel formato generico dei file di controllo dei pacchetti di Debian.
"dpkg -S <modello_nome_file>
" può essere usato per
cercare i pacchetti che contengono al loro interno file installati da
dpkg
il cui nome corrisponde al modello. Ma non trova i
file creati dagli script dei manutentori.
Se è necessario fare ricerche più elaborate sui metadati dei pacchetti, è
necessario eseguire il comando "grep -e modello_regex *
"
nella directory "/var/lib/dpkg/info/
". In questo modo si
cercano le parole indicate negli script e nei testi con le domande di
installazione dei pacchetti.
Se si desiderano vedere in modo ricorsivo le dipendenze dei pacchetti, si dovrebbe usare apt-rdepends(8).
Verranno ora trattati alcuni aspetti tecnici interni del funzionamento del sistema di gestione dei pacchetti Debian. Queste informazioni dovrebbero aiutare a trovare soluzioni proprie ai problemi con i pacchetti.
I file con i metadati per ciascuna distribuzione sono archiviati in
"dists/<codename>
" su ciascun sito mirror di
Debian, ad esempio "http://deb.debian.org/debian/
". La
struttura del suo archivio può essere navigata con il browser web. Ci sono 6
tipi di metadati.
Tabella 2.14. Il contenuto dei metadati dell'archivio Debian
file | posizione | contenuto |
---|---|---|
Release
|
directory della distribuzione di più alto livello | descrizione dell'archivio e informazioni sull'integrità |
Release.gpg
|
directory della distribuzione di più alto livello |
file di firma per il file "Release " firmato con la chiave
dell'archivio
|
Contents-<architettura>
|
directory della distribuzione di più alto livello | elenca tutti i file per tutti i pacchetti nell'archivio relativo |
Release
|
directory più elevata per ciascuna combinazione distribuzione/area/architettura | descrizione dell'archivio usata per le regole di apt_preferences(5) |
Packages
|
directory più elevata per ciascuna combinazione distribuzione/area/architettura-binaria |
dati debian/control concatenati dei pacchetti binari
|
Sources
|
directory più elevata per ciascuna combinazione distribuzione/area/source |
dati debian/control concatenati dei pacchetti sorgenti
|
Negli archivi recenti questi metadati sono memorizzati come file compressi e file di differenze per ridurre il traffico di rete.
Suggerimento | |
---|---|
Il file " |
Ogni suite dell'archivio Debian ha un file "Release
"
nella sua directory di livello più alto, ad esempio
"http://deb.debian.org/debian/dists/unstable/Release
", di
questo tipo.
Origin: Debian Label: Debian Suite: unstable Codename: sid Date: Sat, 14 May 2011 08:20:50 UTC Valid-Until: Sat, 21 May 2011 08:20:50 UTC Architectures: alpha amd64 armel hppa hurd-i386 i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 sparc Components: main contrib non-free Description: Debian x.y Unstable - Not Released MD5Sum: bdc8fa4b3f5e4a715dd0d56d176fc789 18876880 Contents-alpha.gz 9469a03c94b85e010d116aeeab9614c0 19441880 Contents-amd64.gz 3d68e206d7faa3aded660dc0996054fe 19203165 Contents-armel.gz ...
Nota | |
---|---|
Qui si può scoprire il motivo per cui in questa guida si è scelto di usare "suite" e "codename" (nome in codice) in Sezione 2.1.4, «Nozioni di base sugli archivi Debian». Il termine "distribuzione" è usato per riferirsi sia a "suite" sia a "codename". Tutti i nomi delle "aree" dell'archivio offerte da un archivio sono elencate in "Componente". |
L'integrità del file "Release
" nella directory base viene
verificata usando l'infrastruttura crittografica chiamata secure apt.
Il file "Release.gpg
" con la firma crittografica viene
creato a partire dal file "Release
" nella directory base
e dalla chiave segreta dell'archivio Debian.
La chiave pubblica dell'archivio Debian può essere inserita in
"/etc/apt/trusted.gpg
"
automaticamente installando il portachiavi con il file
base-files
più recente o
manualmente dagli strumenti gpg
o
apt-key
con la più recente chiave pubblica
dell'archivio pubblicata su ftp-master.debian.org .
Il sistema secure APT verifica
crittograficamente l'integrità del file "Release
" di più
alto livello scaricato con questo file "Release.gpg
" e la
chiave pubblica dell'archivio Debian in
"/etc/apt/trusted.gpg
".
L'integrità di tutti i file "Packages
" e
"Sources
" viene verificata usando i valori MD5sum nel
file "Release
" nella ripsettiva directory
base. L'integrità di tutti i file di pacchetto viene verificata usando i
valori MD5sum nei file "Packages
" e
"Sources
". Vedere
debsums(1)
e Sezione 2.4.2, «Verifica dei pacchetti installati».
Dato che la verifica crittografica della firma è un processo molto più
dispendioso in termini di uso della CPU rispetto al calcolo di valori
MD5sum, l'uso di valori MD5sum per ciascun pacchetto mentre viene usata la
firma crittografica per il file "Release
" principale,
fornisce una buona sicurezza
con buone prestazioni (vedere Sezione 10.3, «Infrastruttura di sicurezza dei dati»).
Suggerimento | |
---|---|
I file " |
Ci sono file "Release
" a livello di archivio per tutte le
posizioni nell'archivio specificate dalla riga "deb
" in
"/etc/apt/sources.list
", come
"http://ftp.us.debian.org/debian/dists/unstable/main/binary-amd64/Release
"
o
"http://deb.debian.org/debian/dists/sid/main/binary-amd64/Release
"
nell'esempio seguente.
Archive: unstable Origin: Debian Label: Debian Component: main Architecture: amd64
Attenzione | |
---|---|
Nell'archivio Debian, per la voce
" |
Per alcuni archivi, come experimental
e
stretch-backports
, che contengono pacchetti che
non dovrebbero essere installati automaticamente, c'è una riga aggiuntiva,
come
"http://deb.debian.org/debian/dists/experimental/main/binary-amd64/Release
"
nell'esempio seguente.
Archive: experimental Origin: Debian Label: Debian NotAutomatic: yes Component: main Architecture: amd64
Notare che per gli archivi normali senza la riga "NotAutomatic:
yes
", il valore predefinito per la priorità di Pin è 500, mentre
per gli archivi speciali con "NotAutomatic: yes
", il
valore predefinito per la priorità di Pin è 1 (vedere
apt_preferences(5)
e Sezione 2.7.3, «Modificare la versione candidata»).
Quando si usano strumenti APT, quali aptitude
,
apt-get
, synaptic
,
apt-file
, auto-apt
, … è necessario
aggiornare le copie locali dei metadati contenenti le informazioni
sull'archivio Debian. Queste copie locali hanno i seguenti nomi di file che
corrispondono ai nomi di distribuzione
,
area
e architettura
specificati in
"/etc/apt/sources.list
" (vedere Sezione 2.1.4, «Nozioni di base sugli archivi Debian»).
"/var/lib/apt/lists/deb.debian.org_debian_dists_<distribuzione>_Release
"
"/var/lib/apt/lists/deb.debian.org_debian_dists_<distribuzione>_Release.gpg
"
"/var/lib/apt/lists/deb.debian.org_debian_dists_<distribuzione>_<area>_binary-<architettura>_Packages
"
"/var/lib/apt/lists/deb.debian.org_debian_dists_<distribuzione>_<area>_source_Sources
"
"/var/cache/apt/apt-file/deb.debian.org_debian_dists_<distribuzione>_Contents-<architettura>.gz
"
(per apt-file
)
I primi quattro tipi di file sono condivisi da tutti i comandi APT
pertinenti e vengono aggiornati dalla riga di comando con "apt-get
update
" e "aptitude update
". I metadati
"Packages
" sono aggiornati se esiste la riga
"deb
" in "/etc/apt/sources.list
". I
metadati "Sources
" sono aggiornati se esiste la riga
"deb-src
" in "/etc/apt/sources.list
".
I metadati "Packages
" e "Sources
"
contengono la voce "Filename:
" che punta alla posizione
dei file dei pacchetti binari e sorgenti. Attualmente questi pacchetti sono
posizionati nell'albero di directory "pool/
" per una
transizione migliore tra i rilasci.
Le copie locali dei metadati "Packages
" possono essere
ricercate interattivamente con l'aiuto di aptitude
. Il
comando specializzato di ricerca
grep-dctrl(1)
può cercare nelle copie locai dei metadati "Packages
" e
"Sources
".
La copia locale dei metadati
"Contents-<architettura>
" può essere aggiornata con
"apt-file update
" e la sua posizione è diversa da quella
degli altri quattro file. Vedere
apt-file(1).
(auto-apt
usa in modo predefinito una posizione
differente per la copia locale di
"Contents-<architettura>.gz
".)
In aggiunta ai metadati recuperati da remoto, lo strumento APT, a partire da
lenny
, memorizza le informazioni generate localmente
sullo stato delle installazioni in
"/var/lib/apt/extended_states
" che è usato da tutti gli
strumenti APT per tenere traccia dei pacchetti installati automaticamente.
In aggiunta ai metadati recuperati da remoto, il comando
aptitude
memorizza le informazioni generate localmente
sullo stato delle installazioni in
"/var/lib/aptitude/pkgstates
" che è usato solo da esso.
Tutti i pacchetti scaricati da remoto attraverso il meccanismo APT vengono
salvati nella directory "/var/cache/apt/archives
" fino a
che non vengono cancellati.
Questa politica di pulizia dei file della cache per
aptitude
può essere impostata in
"Opzioni
" → "Preferenze
" e può essere
forzata usando la sua voce di menu "Pulisci la cache dei
pacchetti
" o "Cancella i file vecchi
" in
"Azioni
".
I file di pacchetto Debian hanno nomi con una particolare struttura.
Tabella 2.15. La struttura dei nomi dei pacchetti Debian
tipo di pacchetto | struttura del nome |
---|---|
Il pacchetto binario (alias deb )
|
<nome-pacchetto>_<epoca>:<versione-originale>-<versione.debian>-<architettura>.deb
|
Il pacchetto binario per l'installatore Debian (alias
udeb )
|
<nome-pacchetto>_<epoca>:<versione-originale>-<versione.debian>-<architettura>.udeb
|
Il pacchetto sorgente (sorgenti originali) |
<nome-pacchetto>_<epoca>:<versione-originale>-<versione.debian>.orig.tar.gz
|
Il pacchetto sorgente 1.0 (modifiche Debian)
|
<nome-pacchetto>_<epoca>:<versione-originale>-<versione.debian>.diff.gz
|
Il pacchetto sorgente 3.0 (quilt) (modifiche Debian)
|
<nome-pacchetto>_<epoca>:<versione-originale>-<versione.debian>.debian.tar.gz
|
Il pacchetto sorgente (descrizione) |
<nome-pacchetto>_<epoca>:<versione-originale>-<versione.debian>.dsc
|
Suggerimento | |
---|---|
Sono qui descritti solamente i formati base dei pacchetti sorgenti. Per ulteriori informazioni vedere dpkg-source(1). |
Tabella 2.16. I caratteri utilizzabili all'interno di ciascuna porzione del nome dei pacchetti Debian
nome porzione | caratteri utilizzabili (espressione regolare) | presenza |
---|---|---|
<nome-pacchetto>
|
[a-z,A-Z,0-9,.,+,-]+
|
richiesta |
<epoca>:
|
[0-9]+:
|
opzionale |
<versione-originale>
|
[a-z,A-Z,0-9,.,+,-,:]+
|
richiesta |
<versione.debian>
|
[a-z,A-Z,0-9,.,+,~]+
|
opzionale |
Nota | |
---|---|
Si può controllare l'ordine delle versioni dei pacchetti con
dpkg(1),
per esempio con " |
Nota | |
---|---|
L'installatore Debian (d-i) usa
come estensione per i suoi pacchetti binari |
dpkg(1) è lo strumento di più basso livello per la gestione dei pacchetti Debian. È molto potente e deve essere usato con cautela.
Quando installa un pacchetto chiamato
"<nome_pacchetto>
", dpkg
fa
nell'ordine elencato le seguenti operazioni.
Spacchetta il file deb (equivalente di "ar -x
")
Esegue "<nome_pacchetto>.preinst
" usando
debconf(1)
Installa il contenuto del pacchetto nel sistema (equivalente di
"tar -x
")
Esegue "<nome_pacchetto>.postinst
" usando
debconf(1)
Il sistema debconf
fornisce un'interazione standard con
l'utente con supporto per internazionalizzazione e localizzazione (Capitolo 8, I18N e L10N).
Tabella 2.17. I file degni di nota creati da dpkg
file | descrizione del contenuto |
---|---|
/var/lib/dpkg/info/<nome_pacchetto>.conffiles
|
elenco di file di configurazione (modificabile dall'utente) |
/var/lib/dpkg/info/<nome_pacchetto>.list
|
elenco dei file e delle directory installate dal pacchetto |
/var/lib/dpkg/info/<nome_pacchetto>.md5sums
|
elenco dei valori degli hash MD5 per i file installati dal pacchetto |
/var/lib/dpkg/info/<nome_pacchetto>.preinst
|
script del pacchetto da eseguire prima dell'installazione del pacchetto |
/var/lib/dpkg/info/<nome_pacchetto>.postinst
|
script del pacchetto da eseguire dopo l'installazione del pacchetto |
/var/lib/dpkg/info/<nome_pacchetto>.prerm
|
script del pacchetto da eseguire prima della rimozione del pacchetto |
/var/lib/dpkg/info/<nome_pacchetto>.postrm
|
script del pacchetto da eseguire dopo la rimozione del pacchetto |
/var/lib/dpkg/info/<nome_pacchetto>.config
|
script per il sistema debconf
|
/var/lib/dpkg/alternatives/<nome_pacchetto>
|
informazioni sulle alternative usate dal comando
update-alternatives
|
/var/lib/dpkg/available
|
informazioni sulla disponibilità per tutti i pacchetti |
/var/lib/dpkg/diversions
|
le informazioni sulle deviazioni usate da dpkg(1) e impostate da dpkg-divert(8) |
/var/lib/dpkg/statoverride
|
le informazioni per la sovrascrittura dello stato usate da dpkg(1) e impostate da dpkg-statoverride(8) |
/var/lib/dpkg/status
|
le informazioni sullo stato per tutti i pacchetti |
/var/lib/dpkg/status-old
|
la prima generazione di backup del file
"var/lib/dpkg/status "
|
/var/backups/dpkg.status*
|
la seconda generazione e le generazioni precedenti di backup del file
"var/lib/dpkg/status "
|
Il file "status
" è anche usato da altri strumenti come
dpkg(1):
"dselect update
" e "apt-get -u
dselect-upgrade
".
Il comando di ricerca specializzato
grep-dctrl(1)
può ricercare nelle copie locali dei metadati "status
" e
"available
"
Suggerimento | |
---|---|
Nell'ambiente dell'installatore
Debian, viene usato il comando |
Il sistema Debian ha un meccanismo per installare senza problemi programmi
che si sovrappongono nelle loro funzioni usando
update-alternatives(8).
Per esempio, si può far sì che il comando vi
esegua
vim
quando si sono installati entrambi i pacchetti
vim
e nvi
.
$ ls -l $(type -p vi) lrwxrwxrwx 1 root root 20 2007-03-24 19:05 /usr/bin/vi -> /etc/alternatives/vi $ sudo update-alternatives --display vi ... $ sudo update-alternatives --config vi Selezione Percorso ---------------------------------------------- 1 /usr/bin/vim *+ 2 /usr/bin/nvi Premere Invio per mantenere il valore predefinito[*] o digitare il numero della selezione: 1
Il sistema delle alternative Debian mantiene le proprie selezioni in forma
di collegamenti simbolici in "/etc/alternatives/
". Il
procedimento di selezione usa i file corrispondenti in
"/var/lib/dpkg/alternatives/
".
La sovrascrittura dello stato fornita dal
comando
dpkg-statoverride(8)
è un modo per dire a
dpkg(1)
di usare un proprietario o una modalità diversa per un file quando viene installato un pacchetto. Se viene
specificato "--update
" e il file esiste già, viene
immediatamente impostato con il prorpietario e la modalità nuovi.
Attenzione | |
---|---|
La modifica diretta del proprietario o della modalità, usando
|
Nota | |
---|---|
È stata usata la parola file, ma in
realtà si può trattare di un qualsiasi oggetto nel file system gestito da
|
Le deviazioni per i file fornite dal
comando
dpkg-divert(8)
sono un modo per forzare
dpkg(1)
a non installare un file nella sua posizione predefinita, ma in una
posizione deviata. L'uso di
dpkg-divert
è pensato per gli script di manutenzione dei
pacchetti. Il suo uso in maniera superficiale da parte dell'amministratore
di sistema è deprecato.
Quando si usa il sistema unstable
, l'amministratore deve
saper ripristinare le cose da una situazione problematica di gestione dei
pacchetti.
Attenzione | |
---|---|
Alcuni dei metodi descritti comportano azioni ad alto rischio. Ci si consideri avvertiti! |
Se un programma con interfaccia grafica per il desktop presenta problemi di instabilità dopo un importante aggiornamento della versione originale, si dovrebbero sospettare interferenze con vecchi file locali di configurazione creati da esso. Se è stabile per account utente creati da zero, questa ipotesi è confermata. (Questo è un bug nella creazione del pacchetto e viene solitamente evitato dal curatore del pacchetto.)
Per ripristinare la stabilità, si dovrebbero spostare i corrispondenti file locali di configurazione e riavviare il programma GUI. Potrebbe essere necessario leggere il contenuto dei vecchi file di configurazione per ripristinare successivamente le informazioni di configurazione. (Non cancellarli troppo di fretta.)
I sistemi di gestione dei pacchetti a livello dell'archivio, come aptitude(8) o apt-get(1) non provano nemmeno ad installare pacchetti con file sovrapposti, basandosi sulle dipendenze dei pacchetti (vedere Sezione 2.1.6, «Dipendenze dei pacchetti»).
Errori dei manutentori dei pacchetti o l'uso di fonti degli archivi mescolate in modo incoerente (vedere Sezione 2.7.2, «Pacchetti da fonti mescolate di archivi») dall'amministratore di sistema possono creare una situazione con dipendenze dei pacchetti non correttamente definite. Quando, in una situazione di questo tipo, si installa un pacchetto con file sovrapposti usando aptitude(8) o apt-get(1), dpkg(1) che spacchetta i pacchetti si assicura di restituire un errore al programma che lo ha invocato senza sovrascrivere file esistenti.
Attenzione | |
---|---|
L'uso di pacchetti di terze parti introduce significativi rischi per il sistema attraverso gli script dei manutentori che sono eseguiti con privilegi di root e che possono fare qualsiasi cosa nel sistema. Il comando dpkg(1) protegge solo contro la sovrascrittura in fase di spacchettamento. |
Si possono risolvere installazioni problematiche di questo tipo rimuovendo
prima il vecchio pacchetto che crea problemi:
<vecchio-pacchetto>
.
$ sudo dpkg -P <vecchio-pacchetto>
Quando un comando nello script di un pacchetto restituisce un errore per una qualche ragione e lo script finisce con un errore, il sistema di gestione dei pacchetti cancella l'azione e finisce con pacchetti parzialmente installati. Quando un pacchetto contiene bug nei suoi script di rimozione, il pacchetto può diventare impossibile da rimuovere e fonte di problemi.
Per i problemi di script di pacchetto di
"<nome_pacchetto>
", si dovrebbe guardare negli
script di pacchetto seguenti.
"/var/lib/dpkg/info/<nome_pacchetto>.preinst
"
"/var/lib/dpkg/info/<nome_pacchetto>.postinst
"
"/var/lib/dpkg/info/<nome_pacchetto>.prerm
"
"/var/lib/dpkg/info/<nome_pacchetto>.postrm
"
Modificare dall'account root lo script di pacchetto che causa problemi usando le tecniche seguenti.
disabilitare la riga che causa problemi facendola precedere da
"#
"
forzare la restituzione di esecuzione con successo aggiungendo in fondo alla
riga che causa problemi "|| true
"
Configurare tutti i pacchetti parzialmente installati con il comando seguente.
# dpkg --configure -a
Dato che dpkg
è uno strumento per pacchetti a livello
molto basso, può funzionare anche in situazioni molto brutte come un sistema
non avviabile senza una connessione di rete. Assumiamo, per esempio, che il
pacchetto pippo
sia difettoso e debba essere sostituito.
Si possono trovare copie di versioni più vecchie del pacchetto
pippo
, libere dal bug, nella directory della cache dei
pacchetti: "/var/cache/apt/archives/
". (Se non ci sono,
se ne può scaricare una dall'archivio di http://snapshot.debian.net/ o copiarla
dalla cache dei pacchetti di una macchina funzionante.)
Se si può avviare il sistema, lo si può installare con il comando seguente.
# dpkg -i /percorso/di/pippo_<vecchia_versione>_<arch>.deb
Suggerimento | |
---|---|
Se il danno al sistema è piccolo, si può in alternativa retrocedere tutto il sistema ad una versione precedente come in Sezione 2.7.10, «Retrocessione di emergenza alla versione precedente», usando il sistema di più alto livello APT. |
Se il sistema non è avviabile dal disco fisso, si dovrebbe cercare un altro modo per fare l'avvio.
Avviare il sistema usando il CD dell'installatore Debian in modalità ripristino.
Montare il sistema non avviabile sul disco fisso in
"/destinazione
".
Installare una versione più vecchia del pacchetto pippo
con il comando seguente.
# dpkg --root /destinazione -i /percorso/di/pippo_<vecchia_versione>_<arch>.deb
Questo esempio funziona persino se il comando dpkg
sul
disco fisso è danneggiato.
Suggerimento | |
---|---|
Per ripristinare il sistema danneggiato, può essere usato in modo simile qualsiasi sistema GNU/Linux avviato da un altro sistema sul disco fisso, CD live GNU/Linux, chiavetta USB avviabile o avvio di rete. |
Se il tentativo di installare un pacchetto in questo modo fallisce a causa
di qualche violazione di dipendenze e si deve necessariamente farlo come
ultima spiaggia, si possono sovrascrivere le dipendenze usando
"--ignore-depends
", "--force-depends
"
e altre opzioni di dpkg
. Se lo si fa, è necessario in
seguito fare tutti gli sforzi possibili per ripristinare le dipendenze
corrette. Per i dettagli vedere
dpkg(8).
Nota | |
---|---|
Se il sistema è seriamente danneggiato, se ne dovrebbe fare un backup completo in un posto sicuro (vedere Sezione 10.2, «Backup e ripristino») e fare un'installazione pulita. Ciò comporta meno perdita di tempo e alla fine produce un risultato migliore. |
Se "/var/lib/dpkg/status
" diventa corrotto per una
qualsiasi ragione, il sistema Debian perde i dati sulla selezione dei
pacchetti e ne ha grave danno. Cercare il vecchio file
"/var/lib/dpkg/status
" in
"/var/lib/dpkg/status-old
" o
"/var/backups/dpkg.status.*
".
Mantenere "/var/backups/
" in una partizione separata può
essere una buona idea dato che questa directory contiene molti dati
importanti per il sistema.
Per danni molto seri, raccomando di fare una re-installazione pulita dopo
aver fatto il backup del sistema. Anche se tutto ciò che era in
"/var/
" è andato perduto, è sempre possibile recuperare
alcune informazioni dalle directory in "/usr/share/doc/
"
per guidare le nuove installazioni.
Reinstallare un sistema (desktop) minimale
# mkdir -p /percorso/del/vecchio/sistema
Montare il vecchio sistema in
"percorso/del/vecchio/sistema/
".
# cd /percorso/del/vecchio/sistema/usr/share/doc # ls -1 >~/ls1.txt # cd /usr/share/doc # ls -1 >>~/ls1.txt # cd # sort ls1.txt | uniq | less
Verranno mostrati i nomi dei pacchetti da installare. (Ci potrebbero essere
alcuni nomi non di pacchetto, come "texmf
".)
Si possono cercare i pacchetti che soddisfano i propri bisogni con
aptitude
in base alla descrizione del pacchetto o
dall'elenco in "Task".
Quando si incontrano più di due pacchetti simili e non si sa quale installare senza doverli installare per prova, si dovrebbe usare un po' di buon senso. Considero i punti seguenti un buon consiglio per i paccchetti da preferire.
Essenziale: sì > no
Area: main > contrib > non-free
Priorità: richiesto > importante > standard > opzionale > extra
Task: pacchetti elencati in task come "Ambiente desktop"
Pacchetti selezionati da pacchetti di dipendenze (es,
python2.4
selezionato da python
)
Popcon: maggior numero di voti e di installazioni
Changelog: aggiornamenti regolari da parte del manutentore
BTS: nessun bug RC (nessun bug critico, grave o serio)
BTS: manutentore sensibile alle segnalazioni di bug
BTS: maggior numero di bug risolti di recente
BTS: minor numero di bug rimanenti non wishlist
Essendo Debian un progetto di volontari con modello di sviluppo distribuito, i suoi archivi contengono molti pacchetti con scopi e qualità molto differenti. Si deve scegliere con la propria testa che uso farne.
Attenzione | |
---|---|
Installare pacchetti da fonti mescolate di archivi non è supportato dalla
distribuzione Debian ufficiale, tranne che per particolari combinazioni
supportate ufficialmente, come |
Ecco un esempio di operazioni da fare per includere, sporadicamente,
versioni originali più recenti di specifici pacchetti presenti in
unstable
pur mantenendo testing
.
Cambiare temporaneamente il file "/etc/apt/sources.list
"
ad una singola voce "unstable
".
Eseguire "aptitude update
".
Eseguire "aptitude install <nome-pacchetto>
".
Ripristinare il file "/etc/apt/sources.list
" originale
per testing
.
Eseguire "aptitude update
".
Con questo approccio manuale non si deve creare il file
"/etc/apt/preferences
" né ci si deve preoccupare dei pin
di apt. Ma è piuttosto laborioso.
Attenzione | |
---|---|
Quando si usano fonti di archivi mescolate, si deve assicurare la compatibilità tra i pacchetti da soli, dato che Debian non la garantisce. Se esistono incompatibilità tra i pacchetti, si può danneggiare il sistema. Si deve essere in grado di giudicare queste esigenze tecniche. L'uso di fonti mescolate di archivi non correlati è una modalità di funzionamento del tutto facoltativa e il suo uso non è per nulla raccomandato. |
Le regole generali per installare pacchetti da archivi diversi sono le seguenti.
L'installazione di pacchetti non binari ("Architecture:
all
") è più sicura
.
pacchetti di documentazione: nessun requisito particolare
pacchetti programma per interpreti: deve essere disponibile un interprete compatibile
L'installazione di pacchetti binari (non "Architecture:
all
") di solito comporta molte difficoltà e non è
sicura
.
Nota | |
---|---|
Per rendere l'installazione di un pacchetto più sicura, possono essere forniti alcuni pacchetti binari applicativi commerciali non liberi con librerie completamente statiche. Si dovrebbe anche per essi controllare in ogni caso la compatibilità con ABI, ecc. |
Nota | |
---|---|
Installare pacchetti binari da archivi non ufficialmente supportati è generalmente una cattiva idea, tranne che per evitare pacchetti danneggiati per un breve tempo. Questo è vero anche se si usano i pin di APT (vedere Sezione 2.7.3, «Modificare la versione candidata»). Si dovrebbe considerare chroot o tecniche simili (vedere Sezione 9.10, «Sistema virtualizzato») per eseguire programmi da archivi differenti. |
Senza il file "/etc/apt/preferences
", il sistema APT
sceglie la versione più recente disponibile come versione candidata usando la stringa di
versione. Questa è la situazione normale e l'uso raccomandato del sistema
APT. Tutte le combinazioni di archivi supportate ufficialmente non
necessitano del file "/etc/apt/preferences
", dato che gli
archivi che non dovrebbero essere usati come fonti automatica per gli
aggiornamenti sono marcati come NotAutomatic e trattati in modo appropriato.
Suggerimento | |
---|---|
La regola di comparazione della stringa di versione può essere verificata
con, ad esempio, " |
Quando si installano regolarmente pacchetti da fonti di archivi mescolate
(vedere Sezione 2.7.2, «Pacchetti da fonti mescolate di archivi»), si
possono automatizzare queste operazioni complicate creando il file
"/etc/apt/preferences
" con le voci appropriate e
modificando la regola di selezione dei pacchetti per le versioni candidate come descritto in
apt_preferences(5).
Questo è chiamato usare i pin di APT.
Avvertimento | |
---|---|
L'uso dei pin di APT da parte di un utente inesperto è una fonte sicura di grossi problemi. Si dovrebbe evitare l'uso dei pin di APT se non strettamente necessario. |
Attenzione | |
---|---|
Quando si usano i pin di APT si deve assicurare la compatibilità dei pacchetti da soli dato che Debian non la garantisce. L'uso dei pin di APT è una modalità di funzionamento del tutto facoltativa e il suo uso non è per nulla consigliato. |
Attenzione | |
---|---|
Per le regole di
apt_preferences(5)
sono usati i file Release a livello di archivio (vedere Sezione 2.5.3, «File "Release" a livello di archivio»). I pin di APT perciò funzionano
solo con il nome della "suite" per i normali archivi Debian e per gli archivi di sicurezza Debian. (Ciò è
diverso per gli archivi Ubuntu.) Per esempio
nel file " |
Attenzione | |
---|---|
Quando si usano archivi non Debian con i pin di APT si dovrebbe controllare quale sia il loro scopo e la loro credibilità. Ubuntu e Debian, per esempio, non sono fatti per essere mescolati. |
Nota | |
---|---|
Anche se non si crea il file " |
Quella che segue è una spiegazione semplificata delluso dei pin di APT.
Il sistema APT sceglie, dalle fonti per i pacchetti disponibili definite nel
file "/etc/apt/sources.list
", il pacchetto di aggiornamento con la priorità di pin più elevata
come versione candidata del pacchetto. Se
la priorità di pin del pacchetto è maggiore di 1000, la restrizione a
versioni di aggiornamento non viene
considerata per permettere la retrocessione ad una versione precedente
(vedere Sezione 2.7.10, «Retrocessione di emergenza alla versione precedente»).
Il valore della priorità di pin per ciascun pacchetto è definito dalle voci
"Pin-Priority" nel file "/etc/apt/preferences
o viene
usato il valore predefinito.
Tabella 2.18. Elenco di valori di priorità di pin che esemplificano la tecnica d'uso dei pin di APT.
Priorità di pin | Effetti del pin di APT sul pacchetto |
---|---|
1001 | installa il pacchetto anche se ciò costituisce il ritorno ad una versione precedente |
990 | usato come valore predefinito per l'archivio del rilascio prescelto |
500 | usato come valore predefinito per l'archivio normale |
100 | usato come valore predefinito per l'archivio NonAutomatico e MaConAggiornamentiAutomatici |
100 | usato per i pacchetti installati |
1 | usato come valore predefinito per l'archivio NonAutomatico |
-1 | non installa mai il pacchetto nemmeno se raccomandato |
L'archivio del rilascio definito può essere impostato in svariati modi.
nel file di configurazione "/etc/apt/apt.conf
" con la
riga "APT::Default-Release "stable";
"
con l'opzione per la riga di comando, ad esempio, "apt-get install
-t testing qualche-pacchetto
"
Gli attributi di archivio NonAutomatico e
MaConAggiornamentiAutomatici vengono
impostati dal server dell'archivio che ha il file Release a livello di
archivio (vedere Sezione 2.5.3, «File "Release" a livello di archivio») che
contiene sia "NotAutomatic: yes
" sia
"ButAutomaticUpgrades: yes
". L'archivio NonAutomatico viene impostato dal server
dell'archivio che ha il file Release a livello di archivio che contiene
solamente "NotAutomatic: yes
".
La situazione dei pin di APT di
<pacchetto> da diverse fonti di archivi viene mostrata con
"apt-cache policy <pacchetto>
".
Una riga che inizia con "pacchetto pin:
" elenca la
versione del pacchetto di pin se è
definita un'associazione specifica per <pacchetto>, ad esempio
"Package pin: 0.190
".
Non esiste alcuna riga con "Package pin:
" se non è
definita alcuna associazione solamente con <pacchetto>.
Il valore di priorità di pin associato solamente con <pacchetto> viene
mostrato alla destra di tutte le sringhe di versione, ad esempio
"0.181 700
".
Se non è definita un'associazione specifica con <pacchetto> viene
mostrato "0
" alla destra di tutte le stringhe di
versione.
I valori di priorità di pin degli archivi (definiti come "Package:
*
" nel file "/etc/apt/preferences
") sono
elencati alla sinistra di tutti i percorsi di archivio, ad esempio
"100 http://deb.debian.org/debian/stretch-backports/main
Packages
".
Esistono gli archivi di stretch-updates e backports.debian.org che forniscono
pacchetti di aggiornamento per stable
(stretch
).
Per usare questi archivi, si devono elencare tutti quelli richiesti nel file
"/etc/apt/sources.list
" nel modo seguente.
deb http://deb.debian.org/debian/ stretch main contrib non-free deb http://security.debian.org/ stretch/updates main contrib deb http://deb.debian.org/debian/ stretch-updates main contrib non-free deb http://deb.debian.org/debian/ stretch-backports main contrib non-free
Non è necessario impostare esplicitamente un valore di priorità di pin nel
file "/etc/apt/preferences
". Quando nuovi pacchetti
diventano disponibili, la configurazione predefinita fornisce gli
aggiornamenti più ragionevoli (vedere Sezione 2.5.3, «File "Release" a livello di archivio»).
Tutti i vecchi pacchetti installati vengono aggiornati con quelli più nuovi
da stretch-updates
.
Solo i vecchi pacchetti installati manualmente da
stretch-backports
vengono aggiornati a quelli
più nuovi da stretch-backports
.
Ogni volta che si desidera installare manualmente un pacchetto chiamato
"<nome-pacchetto>
" con le sue dipendenze
dall'archivio stretch-backports
, usare questo
comando che sposta il rilascio stabilito con l'opzione
"-t
".
$ sudo apt-get install -t stretch-backports <nome-pacchetto>
Se non si desidera installare pacchetti particolari richiamati
automaticamente perché "Raccomandati", è necessario creare il file
"/etc/apt/preferences
" ed elencarvi esplicitamente
all'inizio tutti quei pacchetti nel modo seguente.
Package: <package-1> Pin: version * Pin-Priority: -1 Package: <package-2> Pin: version * Pin-Priority: -1
Quello che segue è un esempio di uso dei pin di
APT per includere pacchetti specifici con versioni originali più
recenti presenti in unstable
aggiornandoli regolarmente
pur mantenendo testing
. Si devono elencare nel file
"/etc/apt/sources.list
" tutti gli archivi necessari nel
modo seguente.
deb http://deb.debian.org/debian/ testing main contrib non-free deb http://deb.debian.org/debian/ unstable main contrib non-free deb http://security.debian.org/ testing/updates main contrib
Impostare il file "/etc/apt/preferences
" come segue.
Package: * Pin: release a=unstable Pin-Priority: 100
Quando, con questa configurazione, si desidera installare un pacchetto
chiamato "<nome-pacchetto>
" con le sue dipendenze
dall'archivio unstable
, usare il comando seguente che
cambia il rilascio definito con l'opzione "-t
" (la
priorità di pin di unstable
diventa 990).
$ sudo apt-get install -t unstable <nome-pacchetto>
Con quessta configurazione, la normale esecuzione di "apt-get
upgrade
" e "apt-get dist-upgrade
" (o
"aptitude safe-upgrade
" e "aptitude
full-upgrade
") aggiorna i pacchetti che erano stati installati
dall'archivio testing
usando l'attuale archivio
testing
e i pacchetti che erano stati installati
dall'archivio unstable
usando l'attuale archivio
unstable
.
Attenzione | |
---|---|
Fare attenzione a non rimuovere la voce " |
Suggerimento | |
---|---|
Io di solito modifico il file " |
Suggerimento | |
---|---|
Se viene usato " |
Se si desidera tenere traccia automaticamente di particolari pacchetti in
unstable
senza l'iniziale installazione con "-t
unstable
", si deve creare il file
"/etc/apt/preferences
" ed elencarvi esplicitamente tutti
i pacchetti voluti nel modo seguente.
Package: <pacchetto-1> Pin: release a=unstable Pin-Priority: 700 Package: <pacchetto-2> Pin: release a=unstable Pin-Priority: 700
Questo imposta il valore della priorità di pin per ciascun pacchetto
specifico. Per esempio, per tenere traccia della versione più recente in
unstable
di questo manuale "Debian Reference" in inglese,
si dovrebbero avere, nel file "/etc/apt/preferences
" le
voci seguenti.
Package: debian-reference-en Pin: release a=unstable Pin-Priority: 700 Package: debian-reference-common Pin: release a=unstable Pin-Priority: 700
Suggerimento | |
---|---|
Questo modo di usare i pin di APT è valido anche quando si segue l'archivio
|
Quello che segue è un esempio di uso dei pin di
APT per includere pacchetti specifici con versioni originali più
recenti presenti in experimental
pur mantenendo
unstable
. Si devono elencare nel file
"/etc/apt/sources.list
" tutti gli archivi necessari nel
modo seguente.
deb http://deb.debian.org/debian/ unstable main contrib non-free deb http://deb.debian.org/debian/ experimental main contrib non-free deb http://security.debian.org/ testing/updates main contrib
Il valore predefinito della priorità di pin per l'archivio
experimental
è sempre 1 (<<100) dato che è un
archivio Non automatico (vedere Sezione 2.5.3, «File "Release" a livello di archivio»). Per usare semplicemente
l'archivio experimental
non c'è alcun bisogno di
impostare il valore di priorità di pin esplicitamente nel file
"/etc/apt/preferences
", a meno che non si desideri
aggiornare automaticamente da esso in futuro particolari pacchetti.
Il pacchetto apt
viene fornito con il proprio script di
cron, "/etc/cron.daily/apt
" per permettere di scaricare
automaticamente i pacchetti. Questo script può essere migliorato,
installando il pacchetto unattended-upgrades
, per
effettuare l'aggiornamento automatico dei pacchetti. Può essere
personalizzato dai parametri in
"/etc/apt/apt.conf.d/02backup
" e
"/etc/apt/apt.conf.d/50unattended-upgrades
" come
descritto in "/usr/share/doc/unattended-upgrades/README
".
Il pacchetto "unattended-upgrades
è pensato
principalmente per gli aggiornamenti di sicurezza del sistema
stable
. Se il rischio di danneggiare un sistema
stable
esistente con gli aggiornamenti automatici è
minore di quello che il sistema venga danneggiato da un intruso, usando una
falla nella sicurezza chiusa dall'aggiornamento di sicurezza, si dovrebbe
considerare l'uso di questi aggiornamenti automatici con parametri simili ai
seguenti.
APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Download-Upgradeable-Packages "1"; APT::Periodic::Unattended-Upgrade "1";
Se si sta usando un sistema unstable
, non è bene usare
gli aggiornamenti automatici perché certamente prima o poi danneggeranno il
sistema. Anche per unstable
però, per risparmiare tempo
nell'aggiornamento interattivo, si può volere scaricare i pacchetti in
anticipo usando parametri di configurazione come i seguenti.
APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Download-Upgradeable-Packages "1"; APT::Periodic::Unattended-Upgrade "0";
Se si desidera limitare l'uso della banda da parte di APT per gli scaricamenti, per esempio a 800Kib/sec (=100kiB/sec), si devono usare i parametri di configurazione di APT nel modo seguente.
APT::Acquire::http::Dl-Limit "800";
Attenzione | |
---|---|
La retrocessione ad una versione precedente non è ufficialmente supportata da Debian. Dovrebbe essere fatta solamente come parte di un processo di ripristino di emergenza. Nonostante questo è noto che funziona bene in caso di molti incidenti. Per i sistemi critici, si dovrebbe fare un backup di tutti i dati importanti sul sistema dopo l'operazione di ripristino e reinstallare un nuovo sistema da zero. |
Si potrebbe essere fortunati e riuscire a retrocedere da un archivio più
recente ad uno più vecchio per ripristinare un aggiornamento di sistema
andato male, manipolando le versioni
candidate (vedere Sezione 2.7.3, «Modificare la versione candidata»). Questa è l'alternativa pigra al
lavoro tedioso di dover usare molti comandi "dpkg -i
<pacchetto-danneggiato>_<vecchia-versione>.deb
"
(vedereSezione 2.6.4, «Ripristinare con il comando dpkg»).
Cercare le righe nel file "/etc/apt/sources.list
" che
rimandano a unstable
, come la seguente.
deb http://deb.debian.org/debian/ sid main contrib non-free
Sostituirle con la seguente per puntare a testing
.
deb http://deb.debian.org/debian/ buster main contrib non-free
Impostare il file "/etc/apt/preferences
" come segue.
Package: * Pin: release a=testing Pin-Priority: 1010
Eseguire "apt-get update; apt-get dist-upgrade
" per
forzare la retrocessione dei pacchetti in tutto il sistema.
Rimuovere questo file speciale "/etc/apt/preferences
"
dopo la retrocessione di emergenza.
Suggerimento | |
---|---|
È una buona idea rimuovere (non eliminare completamente!) il maggior numero di pacchetti per minimizzare i problemi di dipendenza. Potrebbe essere necessario rimuovere o installare manualmente alcuni pacchetti per retrocedere il sistema. Il kernel Linux, il bootloader, udev, PAM, APT e i pacchetti relativi alla rete ed i loro file di configurazione richiedono particolare attenzione. |
Anche se i nomi dei manutentori elencati in
"/var/lib/dpkg/available
"
e"/usr/share/doc/package_name/changelog
" forniscono
alcune informazioni su "chi stia dietro la pacchettizzazione", l'identità di
chi ha effettivamente caricato il pacchetto è un po'
oscura.
who-uploads(1)
nel pacchetto devscripts
identifica l'effettivo autore
del caricamento dei pacchetti sorgenti Debian.
Se si ha intenzione di compilare un programma dai sorgenti per rimpiazzare
un pacchetto Debian, la cosa migliore è creare un vero pacchetto
debianizzato locale (*.deb
) e usare un archivio privato.
Se si sceglie di compilare un programma dai sorgenti e di installarlo invece
in "/usr/local
", si può usare equivs
come ultima spiaggia per soddisfare le dipendenze mancanti del pacchetto.
Package: equivs Priority: extra Section: admin Description: Circumventing Debian package dependencies This is a dummy package which can be used to create Debian packages, which only contain dependency information.
Per aggiornamenti parziali del sistema stable
, è una
buona idea ricompilare un pacchetto, usando il pacchetto sorgente,
all'interno del suo ambiente. Questo evita massicci aggiornamenti di
pacchetti a causa delle dipendenze.
Aggiungere le voci seguenti al file
"/etc/apt/sources.list
" di un sistema
stable
.
deb-src http://deb.debian.org/debian unstable main contrib non-free
Installare i pacchetti richiesti per la compilazione e scaricare il pacchetto sorgente, come nell'esempio seguente.
# apt-get update # apt-get dist-upgrade # apt-get install fakeroot devscripts build-essential $ apt-get build-dep pippo $ apt-get source pippo $ cd pippo*
Aggiornare alcuni pacchetti con catene di strumenti come
dpkg
e debhelper
dai pacchetti
backport se sono necessari per fare il backport.
Eseguire quanto segue.
$ dch -i
Incrementare la versione del pacchetto, ad esempio aggiungendo
"+bp1
" in "debian/changelog
"
Compilare i pacchetti ed installarli nel sistema nel modo seguente.
$ debuild $ cd .. # debi pippo*.changes
Dato che fare il mirror di intere sottosezioni dell'archivio Debian spreca
spazio su disco e banda, l'utilizzo di un server proxy locale per APT è una
buona idea quando si amministrano molti sistemi in una LAN. APT può essere configurato per usare server proxy
web generici (http), quale squid
(vedere Sezione 6.10, «Altri server di rete») come descritto in
apt.confo(5)
ed in
"/usr/share/doc/apt/examples/configure-index.gz
". La
variabile d'ambiente "$http_proxy
" può essere usata per
scavalcare l'impostazione del server proxy nel file
"/etc/apt/apt.conf
".
Ci sono strumenti proxy specifici per l'archivio Debian. Prima di usarli si dovrebbe contollare il BTS.
Tabella 2.19. Elenco degli strumenti proxy specifici per l'archivio Debian
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
approx
|
V:0, I:1 | 4735 | server proxy con cache per i file di archivio Debian (programma OCaml compilato) |
apt-cacher
|
V:1, I:1 | 287 | proxy con cache per file di pacchetto e sorgenti Debian (programma Perl) |
apt-cacher-ng
|
V:4, I:5 | 1418 | proxy con cache per la distribuzione di pacchetti software (programma in C++ compilato) |
Attenzione | |
---|---|
Quando Debian riorganizza la struttura del suo archivio, questi strumenti proxy specializzati tendono ad aver bisogno di ritocchi al codice da parte del manutentore del pacchetto e possono non essere funzionanti per un po' di tempo. D'altra parte i server proxy web generici (http) sono più robusti e gestiscono questi cambiamenti più facilmente. |
Ecco un esempio per creare un piccolo archivio pubblico di pacchetti compatibile con il moderno sistema APT sicuro (vedere Sezione 2.5.2, «File "Release" nella directory principale ed autenticità»). Consideriamo la situazione seguente.
Nome account: "pippo
"
Nome host: "www.esempio.com
"
Pacchetti necessari: apt-utils
, gnupg
ed altri
URL: "http://www.esempio.com/~pippo/
" ( →
"/home/pippo/public_html/index.html
")
Architettura dei pacchetti: "amd64
"
Creare una chiave per l'archivio APT di Pippo nel sistema server, nel modo seguente.
$ ssh pippo@www.esempio.com $ gpg --gen-key ... $ gpg -K ... sec 1024D/3A3CB5A6 2008-08-14 uid Pippo (ARCHIVE KEY) <pippo@www.esempio.com> ssb 2048g/6856F4A7 2008-08-14 $ gpg --export -a 3A3CB5A6 >pippo.public.key
Pubblicare il file della chiave dell'archivio per Pippo,
"pippo.public.key
", con l'ID di chiave
"3A3CB5A6
"
Creare un albero di archivio chiamato "Origin: Pippo", nel modo seguente.
$ umask 022 $ mkdir -p ~/public_html/debian/pool/main $ mkdir -p ~/public_html/debian/dists/unstable/main/binary-amd64 $ mkdir -p ~/public_html/debian/dists/unstable/main/source $ cd ~/public_html/debian $ cat > dists/unstable/main/binary-amd64/Release << EOF Archive: unstable Version: 4.0 Component: main Origin: Pippo Label: Pippo Architecture: amd64 EOF $ cat > dists/unstable/main/source/Release << EOF Archive: unstable Version: 4.0 Component: main Origin: Pippo Label: Pippo Architecture: source EOF $ cat >aptftp.conf <<EOF APT::FTPArchive::Release { Origin "Pippo"; Label "Pippo"; Suite "unstable"; Codename "sid"; Architectures "amd64"; Components "main"; Description "Archivio pubblico di Pippo"; }; EOF $ cat >aptgenerate.conf <<EOF Dir::ArchiveDir "."; Dir::CacheDir "."; TreeDefault::Directory "pool/"; TreeDefault::SrcDirectory "pool/"; Default::Packages::Extensions ".deb"; Default::Packages::Compress ". gzip bzip2"; Default::Sources::Compress "gzip bzip2"; Default::Contents::Compress "gzip bzip2"; BinDirectory "dists/unstable/main/binary-amd64" { Packages "dists/unstable/main/binary-amd64/Packages"; Contents "dists/unstable/Contents-amd64"; SrcPackages "dists/unstable/main/source/Sources"; }; Tree "dists/unstable" { Sections "main"; Architectures "amd64 source"; }; EOF
Si possono automatizzare aggiornamenti regolari del contenuto dell'archivio
APT nel proprio sistema server configurando dupload
.
Mettere tutti i file pacchetto in
"~pippo/public_html/debian/pool/main/
" eseguendo
"dupload -t pippo changes_file
" nel client ed avendo il
file "~/.dupload.conf
" che contiene quanto segue.
$cfg{'pippo'} = { fqdn => "www.esempio.com", method => "scpb", incoming => "/home/pippo/public_html/debian/pool/main", # dinstall su ftp-master invia esso stesso email dinstall_runs => 1, }; $cfg{'pippo'}{postupload}{'changes'} = " echo 'cd public_html/debian ; apt-ftparchive generate -c=aptftp.conf aptgenerate.conf; apt-ftparchive release -c=aptftp.conf dists/unstable >dists/unstable/Release ; rm -f dists/unstable/Release.gpg ; gpg -u 3A3CB5A6 -bao dists/unstable/Release.gpg dists/unstable/Release'| ssh pippo@www.esempio.com 2>/dev/null ; echo 'Archivio dei pacchetti creato!'";
Lo script automatico postupload avviato da dupload(1) crea file di archivio aggiornati per ciascun caricamento.
Si può aggiungere questo piccolo archivio pubblico nelle righe di apt del proprio sistema client con i comandi seguenti.
$ sudo bash # echo "deb http://www.esempio.com/~pippo/debian/ unstable main" \ >> /etc/apt/sources.list # apt-key add pippo.public.key
Suggerimento | |
---|---|
Se l'archivio si trova sul file system locale, si può usare invece
" |
Si può creare una copia locale dello stato delle selezioni dei pacchetti e di debconf nel modo seguente
# dpkg --get-selections '*' > selection.dpkg # debconf-get-selections > selection.debconf
In questo esempio "*
" fa sì che
"selection.dpkg
" includa anche le voci dei pacchetti
"eliminati".
Questi 2 file possono essere trasferiti su un altro computer ed i pacchetti installati lì con i comandi seguenti.
# dselect update # debconf-set-selections < miaselezione.debconf # dpkg --set-selections < miaselezione.dpkg # apt-get -u dselect-upgrade # o dselect install
Se si ha in progetto di gestire molti server in un cluster con praticamente
la stessa configurazione, si dovrebbe considerare l'uso di pacchetti
specifici come fai
per gestire l'intero sistema.
alien(1)
permette la conversione di pacchetti binari forniti in file in formato Red
Hat rpm
, Stampede slp
, Slackware
tgz
e Solaris pkg
in pacchetti Debian
deb
. Se si vuole usare un pacchetto da una distribuzione
Linux diversa da quella installata sul proprio sistema, si può usare
alien
per convertire il formato di pacchetto ed
installarlo. alien
supporta anche pacchetti LSB.
Avvertimento | |
---|---|
alien(1)
non dovrebbe essere usato per rimpiazzare pacchetti di sistema essenziali,
come |
In qualsiasi ambiente *nix i contenuti di un
pacchetto "dpkg*.deb
" possono essere estratti senza usare
dpkg(1)
utilizzando le utilità standard
ar(1)
e
tar(1).
# ar x /percorso/di/dpkg_<versione>_<arch>.deb # ls total 24 -rw-r--r-- 1 bozo bozo 1320 2007-05-07 00:11 control.tar.gz -rw-r--r-- 1 bozo bozo 12837 2007-05-07 00:11 data.tar.gz -rw-r--r-- 1 bozo bozo 4 2007-05-07 00:11 debian-binary # mkdir control # mkdir data # tar xvzf control.tar.gz -C control # tar xvzf data.tar.gz -C data
I contenuti degli altri pacchetti «*.deb
»possono essere
estratti come descritto sopra dal comando
dpkg-deb(1)
ottenuto dal pacchetto «dpkg*.deb
», oppure usando in modo
simile a prima lo standard
ar(1)
e il più nuovo GNU
tar(1)
con il supporto per la decompressione
xz(1).
Si può anche navigare il contenuto del pacchetto usando il comando
mc
.
Si possono ottenere molte altre informazioni sulla gestione dei pacchetti dalla documentazione seguente.
Documentazione principale sulla gestione dei pacchetti:
aptitude(8), dpkg(1), tasksel(8), apt-get(8), apt-config(8), apt-key(8), sources.list(5), apt.conf(5) e apt_preferences(5);
"/usr/share/doc/apt-doc/guide.html/index.html
" e
"/usr/share/doc/apt-doc/offline.html/index.html
" dal
pacchetto apt-doc
e
"/usr/share/doc/aptitude/html/en/index.html
" dal
pacchetto aptitude-doc-en
.
Documentazione ufficiale dettagliata sull'archivio Debian:
Tutorial per gli utenti Debian sulla creazione di un pacchetto Debian: