Per ridurre il carico sui repositori Debian, abbiate l'accortezza di
organizzare un proxy http locale utilizzando squid
, per i
pacchetti scaricati da APT e, se necessario, impostate la variabile d'ambiente
http_proxy od il valore http in
/etc/apt/apt.conf
. Ciò migliora enormemente la performance degli
upgrades via rete, in particolar modo con più macchine Debian su una LAN.
Sebbene l'opzione di pinning descritta in apt_preferences(5)
sia
potente, non risolve tutti i problemi di dipendenze, poichè le necessità di
soddisfare le dipendenze fanno si che si tendano a scaricare le versioni più
recenti di pacchetti fondamentali
L'uso del metodo descritto in chroot
, Sezione 8.6.33 è
preferibile per assicurare al contempo stabilità del sistema ed accesso alle
versioni più recenti del software.
Questo capitolo fa riferimento ad un sistema basato su Woody, ma gran parte
delle informazioni sono applicabili anche a Potato system (tranne che per
apt_preferences(5)
ed argomenti correlati a
/etc/apt/preferences
).
Se la lettura di tutta la documentazione per gli sviluppatori è troppo per voi, leggete questo capitolo per primo ed iniziate a gustare in pieno il potere della Debian con le distribuzioni testing/unstable :-)
dselect – strumento di gestione dei pacchetti basato su menu (livello superiore) dpkg – installa i pacchetti (centrato sui file dei pacchetti) apt-get – installa i pacchetti (centrato sull'archivio pacchetti, CLI APT) tasksel – installa i task (un gruppo di pacchetti) aptitude – installa i pacchetti (paccchetti & task, ncurses APT) deity – alternativa ad APT basata su ncurses synaptic, gsynaptic – interfacce alternative di APT
Questi strumenti non agiscono allo stesso livello. dselect
gira
al di sopra di APT (il comando da terminale è apt-get
) e di
dpkg
.
APT usa /var/lib/apt/lists/*
per tenere traccia dei pacchetti
disponibili, mentre dpkg
usa /var/lib/dpkg/available
.
Se avete installato dei pacchetti usando direttamente apt-get
o
simili, tipo aptitude
, assicuratevi di aggiornare il file
/var/lib/dpkg/available
tramite la voce [U]pdate del
menu di dselect
([A]ggiorna per la versione italiana) o tramite la
shell con il comando "dselect update" prima di eseguire
dselect select, tasksel o dpkg -l.
Per quanto riguarda le dipendenze, apt-get
sceglie automaticamente
i pacchetti sotto dipende ma lascia quelli sotto
raccomanda e suggerisce, mentre
dselect
offre un controllo più fine sulla scelta dei pacchetti
scegliendo già in partenza quelli sotto dipende e
raccomanda. aptitude
offre l'opzione di
scegliere automaticamente tutti i pacchetti basandosi su
dipende, raccomanda, e
suggerisce. Vedere Dipendenze, Sezione 2.2.8.
apt-cache - controlla l'archivio dei pacchetti nella cache locale dpkg-reconfigure - riconfigura un pacchetto già installato (se utilizza debconf) dpkg-source - gestisce il pacchetto con il file sorgente dpkg-buildpackage - automatizza la creazione di un pacchetto ...
E' possibile installare un gruppo di pacchetti, definito task, od un solo pacchetto, oppure aggiornare il sistema usando gli strumenti di gestione dei pacchetti descritti più avanti. Fate riferimento anche a Suggerimenti per l'installazione di un sistema Debian, Capitolo 3, Aggiornare una distribuzione, Capitolo 5 e Editor di salvataggio, Sezione 11.2.
tasksel
o con aptitude
tasksel
è definito come l'Installatore Debian per i
Task che vengono presentati come una "semplice"
opzione durante l'installazione del sistema.
Quando si ha la necessità di installare delle funzionalità comuni che richiedono più pacchetti, questo è il modo migliore. Lanciatelo come segue:
# dselect update # tasksel
Anche aptitude
offre l'accesso ai task. Esso non solo
permette di scegliere i task ma anche di deselezionare i pacchetti di
un task in maniera selettiva, mediante un menu.
Se si tenta di tracciare distribuzioni diverse, è facile incappare in qualche conflitto di dipendenza dei pacchetti. E' buona norma non mischiare le versioni. Quanto segue è per coloro che hanno voglia di sperimentare, essendo a conoscenza dei rischi.
Per un aggiornamento selettivo mentre si traccia le distribuzione
testing, APT (>Woody) deve essere impostato come in Transition of APT to the Woody
version, Sezione 5.2 per utilizzare le funzionalità di
apt_preferences(5)
.
Per prima cosa, aggiungete i riferimenti per stable,
testing ed unstable al vostro
/etc/apt/sources.list
. Poi, modificate
/etc/apt/preferences
per impostare la corretta Pin-Priority. [1]
Package: * Pin: release a=stable Pin-Priority: 500 Package: * Pin: release a=testing Pin-Priority: 600 Package: * Pin: release a=unstable Pin-Priority: 50
dselect
Una volta lanciato, dselect
seleziona automaticamente tutti i
pacchetti "Essenziali", "Importanti", e
"Standard". In Potato, alcuni grossi programmi come teTEX ed Emacs,
erano proprio contenuti in queste sezioni, ed era meglio deselezionarli a mano
(digitando '_') alla prima installazione. In Woody sono stati spostati nella
categoria "Opzionali"..
dselect
presenta un'interfaccia utente un pò strana. Quattro sono
i comandi ambigui (Maiuscolo significa MAIUSCOLO!):
Tasto Azione Q Esci. Conferma la selezione corrente ed esce comunque (prevale sulle dipendenze) R Torna indietro. Non intendevo farlo. D Dannazione! Non mi interessa cosa ne pensa dselect. Fallo e basta! U Riporta tutto allo stato sUggerito
Usando D e Q, potete scegliere delle selezioni che
presentano conflitti di dipendenze a vostro rischio e pericolo. Usate questi
comandi con cura. Al momento dselect
rappresenta uno strumento
maturo, basato su menu in grado di offrire un controllo fine sulle scelte
riferire a suggerisce e a raccomanda.
Aggiungete una linea con l'opzione "expert" in
/etc/dpkg/dselect.cfg
per ridurne il "rumore".Per
macchine lente, lanciate dselect
su un'altra macchina più veloce
per trovare i pacchetti che vi servono ed usate apt-get install
per installarli.
dselect
non fornisce accesso a pacchetti che non siano stati
definiti dalla the Pin-Priority.
aptitude
aptitude
è un nuovo installatore di pacchetti basato su menu,
simile a dselect
. Può essere utilizzato anche da linea di comando
in alternativa ad apt-get
. Vedere aptitude(1)
.
aptitude
accetta comandi sotto forma singole lettere, di norma in
minuscolo.
Tasto Azione F10 Menu ? Aiuto per i comandi u Aggiorna le informazioni relative all'archivio dei pacchetti g Scarica ed installa i pacchetti selezionati q Esce dalla schermata corrente e salva le modifiche x Esce dalla schermata corrente e non salva le modifiche Enter Mostra le informazioni su un pacchetto
aptitude
offre l'opzione di prendere tutti i pacchetti basandosi
automaticamente su dipende, raccomanda, e
suggerisce. Potete modificare questo comportamento tramite
F10 -> Options -> Dependency handling nel suo menu.
aptitude
offre l'accesso a tutte le versioni di un pacchetto.
apt-cache
e apt-get
Durante il tracciamento di testing, come descritto nell'esempio sopra, è possibile gestire il sistema attraverso i seguenti comandi:
traccia solo la distribuzione testing ed aggiorna tutti i pacchetti del sistema installando le dipendenze da <testing.
Traccia la distribuzione testing ed aggiorna tutti i pacchetti nel sistema, installando e risolvendo le dipendenze da testing.
Traccia la distribuzione testing ed aggiorna tutti i pacchetti nel
sistema sula base delle selezioni di dselect
.
Installa il package e le sue dipendenze dalla distribuzione testing.
Installa il pacchetto dalla distribuzione unstable mentre installa le sue dipendenze da testing.
Installa il pacchetto da unstable e ne installa le dipendenze sempre da unstable impostando la Pin-Priority di unstable a 990.
Controlla lo stato dei pacchetti foo bar ....
Controlla le informazioni dei pacchetti foo bar ....
Installa la particolare versione 2.2.4-1 del pacchetto foo.
Installa il pacchetto foo e rimuove il pacchetto bar package
Rimuove il pacchetto bar ma mantiene i file di configurazione personalizzati intatti.
Rimuove il pacchetto bar insieme a tutti i file di configurazione personalizzati.
Nei precedenti esempi, l'uso dell'opzione -u assicura che
apt-get
mostri una lista di tutti i pacchetti da aggiornare e che
attenda un comando dell'utente per agire. Quanto segue imposta l'opzione
-u come azione predefinita:
$ cat >> /etc/apt/apt.conf << . // Mostra sempre i pacchetti da aggiornare (-u) APT::Get::Show-Upgraded "true"; .
Usate l'opzione -s per simulare l'aggiornamento senza eseguirlo realmente.
A seconda delle vostre preferenze in fatto di distribuzioni Debian da
tracciare, potete modificare il file di esempio
/etc/apt/preferences
in Impostazione del
sistema APT, Sezione 6.2.2 in modo da soddisfare le vostre esifenze:
tracciare stable: modificare la Pin-Priority di testing a 50 tracciare testing: mantenere le impostazioni come mostrato sopra tracciare testing(unstable): modificare la Pin-Priority di unstable a 500 tracciare unstable(testing): modificare la Pin-Priority di unstable a 800
Una linea guida per la scelta della Pin-Priority è di muoversi nella tabella precedente dall'alto verso il basso man mano che il tempo passa, dal momento immediatamente susseguente al rilascio di una distribuzione fino a quello del freeze per la nuova.
Attenzione: il tracciamento della distribuzione testing di Debian ha come effetto collaterale di avere aggiornamenti per la sicurezza estremamente lenti.
Se si mescolano le distribuzioni di Debian, testing con stable oppure unstable con stable, si rischia con molta probabilità di prendere pacchetti chiave da testing o da unstable che possono essere bacati. Quindi, attenzione.
Esempi di /etc/apt/preferences
che bloccano alcuni pacchetti
chiave a versioni più mature, mentre si tracciano versioni meno mature per
pacchetti non così essenziali, sono disponibili nella sottodirectory degli esempi
come
preferences.testing
e preferences.unstable
.
Dall'altra parte, preferences.stable
forza tutti i pacchetti ad
essere degradati a stable.
Per riportare tutti i pacchetti ad un livello inferiore (stable), è necessario modificare /etc/apt/preferences come segue:
Package: * Pin: release a=stable Pin-Priority: 1001
ed eseguire "apt-get upgrade", che forzerà i pacchetti al livello inferiore, in virtù di Pin-priority > 1000. Attenzione, ci potranno essere alcune imperfezioni nelle dipendenze.
/etc/apt/preferences
Nel file di esempio /etc/apt/preferences
mostrato in Impostazione del sistema APT, Sezione 6.2.2,
"Package: *" alla prima riga significa che la sezione si applica a
tutti i pacchetti. Potete usare il nome di un pacchetto al posto di
"*" per specificare la Pin-Priority per quello specifico pacchetto.
Alla seconda riga, "Pin: release a=stable" significa che
apt-get
prende il file Packages.gz
dall'archivio
contenente un file Release
con la riga "Archive:
stable".
All'ultima riga, "Pin-Priority: 500" specifica che la Pin-Priority deve essere 500.
Se esistono più pacchetti con lo stesso nome, di norma verrà installato quello con la Pin-Priority più alta.
Qui, i significati della Pin-Priority sono:
L'abbassamento di livello del pacchetto è ammesso per questo intervallo di Pin-Priority.
L'abbassamento di livello del pacchetto non è ammesso. Alcune altre Pin-Priority chiave:
apt-get(8)
.
Gli stessi effetti di --target-release possono essere ottenuti
impostando /etc/apt/apt.conf
come segue:
# echo 'APT::Default-Release "testing";' >> /etc/apt/apt.conf
L'opzione da riga di comando --target-release e l'impostazione in
/etc/apt/apt.conf
sopravanzano le impostazioni in
/etc/apt/preferences
. State attenti a queste interferenze quando
giocate con /etc/apt/preferences
.
Conoscendoli, potrete vivere una vita di eterni "upgrade" :-) Lo stesso risultato si ottiene con
# echo 'APT::Default-Release "testing";' >> /etc/apt/apt.conf
Viene così strutturato il tracciamento di testing:
installa pachetto e le sue dipendenze dalla distribuzione testing.
installa pacchetto dalla distibuzione unstable mentre installa le sue dipendenze dalla testing.
installa pacchetto da unstable insieme alle sue dipendenze.
Se tracciate stable, calate la Pin-Priority di
testing a 60 in /etc/apt/preferences
dell'esempio
precedente, oppure:
# echo 'APT::Default-Release "stable";' >> /etc/apt/apt.conf
Altri comandi da usare sono:
# apt-cache policy libc6 libc6-dev locales # controlla lo stato dei pacchetti # apt-get install libc6=2.2.4-1 libc6-dev=2.2.4-1 locales=2.2.4-1 # apt-get -u install nuovo-pacchetto-interessante remove-package- # apt-get remove vecchio-pacchetto-inutile # apt-get remove --purge vecchio-pacchetto-veramente-inutile
Aggiornamento del sistema con APT:
# apt-get update ... poi eseguite uno dei seguenti comandi: # apt-get -u upgrade # scarica tutti pacchetti sotto "dipende" # apt-get -u dist-upgrade # scarica tutti i pacchetti sotto "dipende" e risolve le dipendenze # apt-get -u dselect-upgrade # segue la selezione fatta con dselect
Il seguente comando imposta l'opzione -u come azione di default:
$ cat >> /etc/apt/apt.conf << . // Mostra sempre i pacchetti che devono essere aggiornati (-u) APT::Get::Show-Upgraded "true"; .
Utilizzare l'opzione -s per simulare l'aggiornamento senza realmente effettuarlo.
dselect
offre un'interfaccia basata su menù per il controllo di
APT. deity
ed aptitude
offriranno delle alternative
a dselect
.
Se avete dei problemi con un pacchetto in particolare, controllate prima questi
siti e poi, eventualmente, cercate aiuto o segnalate un baco.
(lynx
, links
e w3m
funzionano tutti
bene):
$ lynx http://bugs.debian.org/ $ lynx http://bugs.debian.org/nome-pacchetto # se conoscete il nome del pacchetto $ lynx http://bugs.debian.org/numerobaco # se conoscete il numero del baco segnalato
Cercate su Google (www.google.com, oppure www.google.it) includendo nelle frasi da ricercare "site:debian.org".
Se avete ancora dubbi, leggete i manuali (RTFM). Impostate CDPATH come segue:
export CDPATH=.:/usr/local:/usr/share/doc
e digitate
$ cd nomepachetto $ mc
Maggiori fonti di supporto sono descritte in Supporto per Debian, Capitolo 15.
Problemi di dipendenze possono accadere quando si esegue l'aggiornamento in unstable/testing. Molte volte ciò accade poichè un pacchetto da aggiornare presenta delle nuove dipendenze che non vengono soddisfatte. Problemi del genere vengono risolti usando
# apt-get dist-upgrade
Se questo non funziona, allora ripetete uno dei seguenti comandi finchè il problema non si risolve da sè:
# apt-get upgrade -f # continua l'aggiornamento nonostante l'errore ... oppure # apt-get dist-upgrade -f # continua il dist-upgrade nonostante l'errore
Alcuni script di aggiornamento realmente difettosi possono causare problemi
ricorrenti. Per risolvere tali situazioni è in genere buona cosa ispezionare
gli script
/var/lib/dpkg/info/packagename.{post-,pre-}{install,removal}
del pacchetto responsabile e poi eseguire:
# dpkg --configure -a # configura tutti i pacchetti installati parzialmente
Se uno script lamenta la mancanza di un file di configurazione, date
un'occhiata in /etc
per il file di configurazione corrispondente.
Se ne esiste uno con l'estensione .new (o qualcosa di simile),
cambiatelo (mv
) per rimuovere il suffisso.
Problemi di dipendenze possono accadere installando i pacchetti in unstable/testing. Esistono dei metodi per aggirare le dipendenze.
# apt-get install -f pacchetto # ignora le dipendenze difettose
Un metodo alternativo consiste nell'utilizzare il pacchetto
equivs
. Vedere /usr/share/doc/equivs/README.Debian
e
Il pacchetto equivs
, Sezione 6.5.2.
Un recupero ad hoc di un dselect
(APT) che non funziona più può
essere effettuato su un sistema pesantemente malfunzionante, semplicemente
usando dpkg
senza APT:
# cd /var/cache/apt/archives # dpkg -i libc6* libdb2* perl* # dpkg -i apt* dpkg* debconf* # dpkg -i * # finchè non compaiono più errori
Se manca un pacchetto, recuperatelo da mirror sites
con:
# mc # usate "FTP link" all'indirizzo di un server Debian FTP
Fino a questo momento, i pacchetti sul server HTTP/FTP potrebbero non essere
contenuti nella directory classica /dist
, ma sotto la nuova
directory /pool
. (Vedere La
directory pool, Sezione 2.1.10.)
Poi installatelo con:
# dpkg -i /var/cache/apt/archives/packagefile.deb
Se vi sono dipendenze non risolte, risolvetele oppure usate:
# dpkg --ignore-depends=paccchetto1,... -i filepacchetto.deb # dpkg --force-depends -i filepacchetto.deb # dpkg --force-depends --purge pacchetto # dpkg --force-confmiss -i filepacchetto.deb # Installa il file di configurazione mancante
Se /var/lib/dpkg/status
diventa illeggibile per una qualsivoglia
ragione, il sistema Debian perde i dati sulla selezione dei pacchetti,
soffrendone in maniera severa. cercate il vecchio file
/var/lib/dpkg/status
in /var/lib/dpkg/status-old
,
oppure /var/backups/dpkg.status.*
.
Tenere /var/backups/
in una partizione separata può essere una
buona idea, dato che questa directory contiene molti dei dati fondamentali del
sistema.
Se il vecchio file /var/lib/dpkg/status
non è disponibile, potete
ancora recuperare le informazioni dalle directory in
/usr/share/doc/
.
# ls /usr/share/doc | \ grep -v [A-Z] | \ grep -v '^texmf$' | \ grep -v '^debian$' | \ awk '{print $1 " install"}' | \ dpkg --set-selections # dselect --expert # reinstalla il sistema, deseleziona se necessario
/var
Dato che la directory /var
contiene dati che vengono regolarmente
aggiornati, tipo la posta, può tendere ad essere corrotta. Metterla in una
partizione separata limita i rischi. Se accade l'irreparabile, bisogna
ricostruirla per salvare il sistema Debian.
Procuratevi una directory /var
con il contenuto ridotto all'osso,
da un sistema Debian minimale e funzionante, basato su una versione uguale o
più vecchia, per esempio var.tar.gz
e piazzatela
nella root directory del sistema danneggiato. Poi,
# cd / # mv var var-old # se vi è rimasto qualcosa di utile # tar xvzf var.tar.gz # usate il file preso da Woody # aptitude # o dselect
Ciò dovrebbe restituirvi un sistema funzionante. Potete velocizzare la procedura di recupero delle selezioni dei pacchetti usando la tecnica descritta in Recuperare i dati sulla selezione dei pacchetti, Sezione 6.3.5. ([FIXME]: This procedure needs more experiments to verify.)
Fate il boot in Linux mediante un floppy o CD di salvataggio Debian, o tramite
una partizione alternativa se avete un sistema con più boot in Linux. Vedere
Fare il boot del sistema, Sezione 8.1.
Montate il sistema non bootabile su /target
ed usate il modo
chroot di installazione di dpkg
.
# dpkg --root /target -i packagefile.deb
Poi configurate il tutto e risolvete i problemi.
A proposito, se tutto quello che impedisce il boot è un lilo
malfunzionante, potete fare il boot con un disco di salvataggio Debian
standard. Al prompt del boot, ammettendo che la partizione root della vostra
installazione è su /dev/hda12
e volete un runlevel 3, digitate:
boot: rescue root=/dev/hda12 3
A questo punto avrete accesso ad un sistema pressochè perfettamente funzionante con il kernel su dischetto. (Potranno esserci inconvenienti minori dovuti alla mancanza di moduli o di funzioni particolari del kernel.)
dpkg
non funziona
Un dpkg
malfunzionante può rendere impossibile l'installazione di
qualsiasi file .deb. Una procedura come la seguente vi aiuterà ad
uscire da questa situazione. (Nella prima riga, potete sostituire
"links" con il vostro browser da terminale preferito.)
$ links http://http.us.debian.org/debian/pool/main/d/dpkg/ ... scarica un valido dpkg_version_arch.deb $ su password: ***** $ ar x dpkg_version_arch.deb # mv data.tar.gz /data.tar.gz # cd / # tar xzfv data.tar.gz
Per i386, http://packages.debian.org/dpkg può anche essere utilizzata come URL.
L'Illuminazione ottenuta con questi comandi salverà una persona dall'eterno ciclo del karma dell'inferno degli aggiornamenti, permettendogli di raggiungere il paradiso Debian. :-)
Per scoprire a quale pacchetto un file appartiene:
$ dpkg {-S|--search} modello # trova i modelli nei pacchetti installati $ zgrep -e modello /local/copy/of/debian/woody/Contents-i386.gz # trova l'elenco dei file con la stessa radice (o il file) nell'archivio Debian
Potete utilizzare anche dei comandi specifici per i pacchetti:
# apt-get install dlocate # è in conflitto con slocate (la versione sicura di locate) $ dlocate filename # alternativa rapida a dpkg -L e dpkg -S ... # apt-get install auto-apt # strumento per l'installazione a richiesta dei pacchetti # auto-apt update # crea un database per auto-apt $ auto-apt search modello # effettua una ricerca completa nell'archivio pacchetti
Cerca le informazioni negli archivi dei pacchetti e le visualizza. Accertatevi che apt sia indirizzato verso l'archivio(i) appropriato(i) modificando /etc/apt/sources.list. Se volete vedere come si comportano i pacchetti in testing/unstable rispetto a quelli correntemente installati utilizzate apt-cache policy— un comando molto utile.
# apt-get check # aggiorna la cache e controlla le dipendenze $ apt-cache search testo # cerca un pacchetto a partire dalla descrizione $ apt-cache policy pacchetto # informazioni su priorità e distribuzione di un pacchetto $ apt-cache show -a pacchetto # mostra la descrizione di un pacchetto per ogni distribuzione $ apt-cache showsrc pacchetto # mostra la descrizione del pacchetto sorgente corrispondente $ apt-cache showpkg pacchetto # Informazioni per il debug # dpkg --audit|-C # cerca i pacchetti parzialmente installati $ dpkg {-s|--status} pacchetto... # descrizione del pacchetto installato $ dpkg -l pacchetto ... # stato del pacchetto installato (1 linea) $ dpkg -L pacchetto ... # elenca i file installati per un dato pacchetto
apt-cache showsrc non è documentato al momento del rilascio di Woody, ma funziona :)
E' sempre possibile trovare informazioni su pacchetti in (Io uso mc):
/var/lib/apt/lists/* /var/lib/dpkg/available
Il confronto dei file seguenti fornisce informazioni su cosa è realmente accaduto nelle ultime sessioni di installazione.
/var/lib/dpkg/status /var/backups/dpkg.status*
Per una installazione automatica, senza controllo alcuno, aggiungete la
seguente riga a /etc/apt/apt.conf
:
Dpkg::Options {"--force-confold";}
Questo è l'equivalente di apt-get -q -y nomepacchetto.
Siccome in questo modo si risponde "si" a tutte le domande, usate
questo trucco con accortezza. Vedere apt.conf(5)
e
dpkg(1)
.
Si può configurare qualsiasi pacchetto in un secondo momento seguendo Riconfigurare i pacchetti già installati, Sezione 6.4.4.
Usate i seguenti comandi per riconfigurare un pacchetto già installato.
# dpkg-reconfigure --priority=medium pacchetto [...] # dpkg-reconfigure --all # riconfigura tutti i pacchetti # dpkg-reconfigure locales # genera qualsiasi locale extra # dpkg-reconfigure --p=low xserver-xfree86 # riconfigura il server X
Eseguite questo tramite debconf
se avete la necessità di cambiarne
la configurazione dei messaggi in modo permanente.
Alcuni programmi hanno degli script speciali di configurazione.
apt-setup - crea /etc/sources.list install-mbr - installa un manager di Master Boot Record tzconfig - imposta il fuso orario locale gpmconfig - imposta il demone per mouse gpm sambaconfig - configura Samba (Woody usa debconf) eximconfig - configura Exim (MTA) texconfig - configura teTeX apacheconfig - configura Apache (httpd) cvsconfig - configura CVS sndconfig - configura il sistema audio ... update-alternatives - imposta i comandi predefiniti, p.e. vim per vi update-rc.d - Gstione degli script di inzializzazione del System-V update-menus - Il sistema dei menu Debian ...
Rimuove un pacchetto mantenendone la configurazione:
# apt-get remove pacchetto ... # dpkg --remove pacchetto ...
Rimuove un pacchetto e la sua configurazione:
# apt-get remove --purge pacchetto ... # dpkg --purge pacchetto ...
Per esempio, per mantenere libc6
e libc6-dev
con
dselect
e apt-get -u upgrade pacchetto si
può procedere come segue:
# echo -e "libc6 hold\nlibc6-dev hold" | dpkg --set-selections
apt-get -u install pacchetto non verrà impedito da quell'"hold". Per mantenere un pacchetto forzandone un declassamento automatico con apt-get -u upgrade pacchetto oppure apt-get -u dist-upgrade, aggiungete le seguenti linee ad /etc/apt/preferences:
Package: libc6 Pin: release a=stable Pin-Priority: 2000
Qui la voce "Package:" non può usare termini tipo
"libc6*". Se dovete mantenere tutti i pacchetti binari
correlati al pacchetto sorgente glibc
in una versione
sincronizzata, dovete elencarli esplicitamente.
Il comando seguente mostra i pacchetti tenuti in sospeso (non aggiornati):
dpkg --get-selections "*"|grep -e "hold$"
apt-show-versions
può elencare le versioni dei pacchetti
disponibili per ciascuna distribuzione.
$ apt-show-versions | fgrep /testing | wc ... quanti pacchetti avete da testing $ apt-show-versions -u ... elenco di pacchetti aggiornabili $ apt-get install `apt-show-versions -u -b | fgrep /unstable` ... aggiorna tutti i pacchetti da unstable alle loro versioni più recenti
L'installazione dei pacchetti tramite apt lascia i loro files archiviati in /var/cache/apt/archives e questi vanno rimossi.
# apt-get autoclean # rimuove solo pacchetti inutili # apt-get clean # rimuove tutti i pacchetti nella cache
Per fare una copia locale dello stato della selezione dei pacchetti:
$ dpkg --get-selections "*" >lemieselezioni # oppure usare \*
* fa includere anche i nomi dei pacchetti marcati con "purge".
Potete poi trasferire questo file su un altro computer ed installarlo con:
# dselect update # dpkg --set-selections <lemieselezioni # apt-get -u dselect-upgrade # o dselect install
Se si eseguono degli aggiornamenti parziali di un sistema stable,
può essere buona cosa ricreare un pacchetto all'interno del proprio ambiente a
partire dai sorgenti. In tal modo si eviteranno dei massicci aggiornamenti di
pacchetti, dovuti alle loro dipendenze. Per prima cosa, aggiungete le linee
seguenti a /etc/apt/sources.list
:
deb-src http://http.us.debian.org/debian testing \ main contrib non-free deb-src http://non-us.debian.org/debian-non-US testing/non-US \ main contrib non-free deb-src http://http.us.debian.org/debian unstable \ main contrib non-free deb-src http://non-us.debian.org/debian-non-US unstable/non-US \ main contrib non-free
Ogni linea che inizia con deb-src qui è divisa in due parti per
ragioni di stampabilità, ma in sources.list
dovranno essere
ciascuna su un'unica riga.
Poi recuperate i sorgenti e costruite un pacchetto locale:
$ apt-get update # aggiorna la lista dei pacchetti sorgente $ apt-get source pacchetto $ dpkg-source -x pacchetto.dsc $ cd versione-pacchetto ... controlla i pacchetti necessari (Build-depends nel file .dsc) e li installa. Avete bisogno anche del pacchetto "fakeroot". $ dpkg-buildpackage -rfakeroot ...oppure (senza "signature") $ dpkg-buildpackage -rfakeroot -us -uc utilizzate "debsign" in seguito, se necessario ...poi per installare il pacchetto $ su -c "dpkg -i pacchetto.deb"
Normalmente, per soddisfare le dipendenze si ha la necessità di installare
alcuni pacchetti con il suffisso "-dev". debsign
è
contenuto nel pacchetto devscripts
. auto-apt
può
aiutare nel soddisfare queste dipendenze. fakeroot
evita l'uso
non necessario del root account.
In woody, questi problemi di dipendenze possono essere semplificati. Per
esempio per compilare solo il sorgente del pacchetto pine
:
# apt-get build-dep pine # apt-get source -b pine
Per creare un archivio locale dei pacchetti che sia compatibile con APT e
dselect
, bisogna creare Packages
ed i file dei
pacchetti devono essere organizzati in un particolare albero directory.
Si possono creare sia un archivio ufficiale debian, che un repositorio locale, in questo modo.
# apt-get install dpkg-dev # cd /usr/local # install -d pool # i pacchetti sono fisicamente localizzati qui # install -d dists/unstable/main/binary-i386 # ls -1 pool | sed 's/_.*$/ priority section/' | uniq > override # editor override # adjust priority e section # dpkg-scanpackages pool override /usr/local/ \ > dists/unstable/main/binary-i386/Packages # cat > dists/unstable/main/Release << EOF Archive: unstable Version: 3.0 Component: main Origin: Local Label: Local Architecture: i386 EOF # echo "deb file:/usr/local unstable main" \ >> /etc/apt/sources.list
In alternativa, un altro metodo per creare un archivio locale deb, molto alla bruta:
# apt-get install dpkg-dev # mkdir /usr/local/debian # mv /dove/è/pacchetto.deb /usr/local/debian # dpkg-scanpackages /usr/local/debian /dev/null | \ gzip - > /usr/local/debian/Packages.gz # echo "deb file:/usr/local/debian ./" >> /etc/apt/sources.list
Questi archivi possono essere raggiunti da remoto tramite HTTP od FTP,
modificando le voci in /etc/apt/sources.list
di conseguenza.
alien
permette la conversione dei pacchetti binari nei formati
Redhat rpm, Stampede slp, Slackware tgz,
e Solaris pkg, in pacchetti Debian deb. Se volete
usare un pacchetto proveniente da un'altra distribuzione di Linux al posto di
quello installato sul vostro sistema, potete utilizzare alien
per
convertirlo nel formato che più preferire. alien
supporta anche
pacchetti LSB.
debsums
permette la verifica dei file dei pacchetti installati
contro gli MD5 checksums. Alcuni pacchetti non hanno MD5 checksums. Una
soluzione temporanea per gli amministratori di sistema:
# cat >>/etc/apt/apt.conf.d/90debsums DPkg::Post-Install-Pkgs {"xargs /usr/bin/debsums -sg";}; ^D
da Joerg Wendland <joergland@debian.org> (non testata).
sources.list
In breve, sforzi sovrumani per creare un sources.list
ottimizzato,
non hanno prodotto per me miglioramenti, da una località negli . Ho scelto
manualmente un sito vicino usando apt-setup
.
apt-spy
crea automaticamente sources.list
, basandosi
su latenza e larghezza di banda. netselect-apt
crea un
sources.list
ancora più completo, ma usa un metodo meno efficace
per la scelta del mirror migliore (comparazione dei tempi di ping).
# apt-get install apt-spy # cd /etc/apt ; mv sources.list sources.list.org # apt-spy -d testing -l sources.apt
dpkg-divert
Le deviazioni dei files rappresentano un modo di forzare
dpkg
a non installare un file nella sua posizione di default, ma
in una posizione deviata. Le deviazioni
possono essere utilizzate tramite gli script dei pacchetti Debian per muovere
un file quando causa un conflitto. Gli amministratori di sistema possono usare
una deviazione anche per scavalcare un file di configurazione di un pacchetto,
oppure quando alcuni files (non marcati come conffiles) devono
essere salvaguardati da dpkg
, durante l'installazione di una nuova
versione di un dato file (vedere Mantenimento della configurazione locale,
Sezione 2.2.4).
# dpkg-divert [--add] filename # aggiunge la "deviazione" # dpkg-divert --remove filename # rimuove la "deviazione"
Di solito è una buona idea non usare dpkg-divert
a meno che non
sia strettamente necessario.
equivs
Se compilate un programma dai sorgenti, è meglio debianizzarlo in un pacchetto (*.deb). Usate equivs solo come ultima risorsa.
Package: equivs Priority: extra Section: admin Description: Aggira le dipendenze dei pacchetti Debian. E' un pacchetto vuoto che può essere usato per creare dei pacchetti Debian contenenti solo le informazioni sulle dipendenze.
Per lanciare vim
con il comando vi
, usate
update-alternatives
:
# update-alternatives --display vi ... # update-alternatives --config vi Selection Command ----------------------------------------------- 1 /usr/bin/elvis-tiny 2 /usr/bin/vim *+ 3 /usr/bin/nvi Enter to keep the default[*], or type selection number: 2
Le alternative del sistema in Debian sono contenute in
/etc/alternatives
come link simbolici.
Per impostare il vostro window manager preferito, usate invece
update-alternatives
su /usr/bin/x-session-manager
e
/usr/bin/x-window-manager
. Per i dettagli, vedere Personalizzare X session, Sezione
9.4.5.1.
/bin/sh
è un link simbolico a /bin/bash
o
/bin/dash
. E' più sicuro usare /bin/bash
per
mantenere la compatibilità con vecchi script in bash, ma più corretto
utilizzare /bin/dash
per rinforzare la compatibilità POSIX.
L'aggiornamento al kernel 2.4 tende ad impostare il link su
/bin/dash
Il runlevel predefinito in cui il sistema esegue il boot può essere impostato
in /etc/inittab
.
Diversamente da altre distribuzioni, Debian pone la gestione dei livelli
completamente nelle mani dell'amministratore di sistema. La gestione
dell'inizializzazione del System-V in Debian viene eseguita tramite gli scripts
update-rc.d
.
Lanciare /etc/init.d/nomescript
nel runlevel 1,2 o 3 e
terminarlo nel 4 o 5 con una priorità di sequenza 20 (normale) può essere fatto
mediante:
# update-rc.d nomescript start 20 1 2 3 . stop 20 4 5 .
I link simbolici possono essere rimossi mentre lo script è ancora presente in
init.d
tramite:
# update-rc.d -f nomescript remove
Per modificare i runlevels, io baro. Ne cambio le voci manualmente usando il
comando mv
allo shell prompt di mc
, copiandone i link
con Alt-Enter. Per esempio:
# mv S99xdm K99xdm # disabilita xdm (X display manager)
Sono giunto persino a disabilitare un demone inserendo exit 0
all'inizio di uno script init.d
. Dopo tutto, questi sono dei
semplici conffiles.
La distribuzione Debian ha molto a cuore la sicurezza del sistema e si aspetta che l'amministratore sia uno realmente competente al riguardo. Per questo motivo, talvolta la facilità d'uso diventa un problema secondario rispetto alla sicurezza e molti demoni di servizio sono impostati al massimo della sicurezza - con il minimo, o nessun servizio disponibile di default.
Se avete dei dubbi (Exim, DHCP, ...) controllate ps aux oppure il
contenuto di /etc/init.d/*
e di /etc/inetd.conf
.
Controllate anche /etc/hosts.deny
in Controllo tramite PAM e login, Sezione
9.2.1. Anche il comando pidof
è utile (vedere
pidof(8)
).
X11 non permette connessioni TCP/IP (remote) di default nelle versioni più
recenti di Debian. Vedere Connessione TCP/IP
ad X, Sezione 9.4.6. Anche l'X forwarding in SSH è disabilitato. Vedere
Connessioni X da remoto: ssh
,
Sezione 9.4.8.
La guida Debian
1.07-6, mer giu 23 21:21:03 UTC 2004osamu@debian.org
dsewell@virginia.edu
mc0315@mclink.it