[ precedente ] [ Contenuti ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ successivo ]

La guida Debian
Capitolo 6 - Gestione dei pacchetti in Debian


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).


6.1 Introduzione

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 :-)


6.1.1 Strumenti fondamentali

     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.


6.1.2 Strumenti utili

     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
     ...

6.2 Le basi della gestione dei pacchetti Debian

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.


6.2.1 Installare i task con 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.


6.2.2 Impostazione del sistema APT

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

6.2.3 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.


6.2.4 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.


6.2.5 I comandi apt-cache e apt-get

Durante il tracciamento di testing, come descritto nell'esempio sopra, è possibile gestire il sistema attraverso i seguenti comandi:

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.


6.2.6 Tracciare una distribuzione Debian specifica

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.


6.2.7 Downgrading all packages to 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.


6.2.8 Panoramica di /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:

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.


6.3 Comandi di sopravvivenza Debian

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:

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

6.3.1 Aggiornare il sistema con APT

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.


6.3.2 Controllo dei bachi in Debian

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.


6.3.3 Aggiornamento con APT: risoluzione dei problemi

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.


6.3.4 Salvataggio mediante dpkg

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

6.3.5 Recuperare i dati sulla selezione dei pacchetti

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

6.3.6 Recupero del sistema dopo danneggiamento di /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.)


6.3.7 Installare un pacchetto su un sistema non bootabile

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.)


6.3.8 Cosa fare se 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.


6.4 Comandi del "paradiso" Debian

L'Illuminazione ottenuta con questi comandi salverà una persona dall'eterno ciclo del karma dell'inferno degli aggiornamenti, permettendogli di raggiungere il paradiso Debian. :-)


6.4.1 Informazioni su di un file

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

6.4.2 Informazioni su di un pacchetto

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*

6.4.3 Installazione automatica con APT

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.


6.4.4 Riconfigurare i pacchetti già installati

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 
     ...

6.4.5 Rimozione e purga dei pacchetti

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 ...

6.4.6 Mantenere vecchi pacchetti

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$"

6.4.7 Sistema misto stable/testing/unstable

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

6.4.8 "Potare" i files della cache

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

6.4.9 Salvare/copiare la configurazione del sistema

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

6.4.10 Portare un pacchetto nel sistema stable

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

6.4.11 Archivio locale dei pacchetti

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.


6.4.12 Convertire od installare un pacchetto binario di altra distribuzione

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.


6.4.13 Verificare i file dei pacchetti installati

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).


6.4.14 Ottimizzare 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

6.5 Altre particolarità di Debian


6.5.1 Il comando 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.


6.5.2 Il pacchetto 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.

6.5.3 Comandi alternativi

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


6.5.4 Inizializzazione e livelli (runlevels) del System-V

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.


6.5.5 Demoni di servizio disabilitati

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.


[ precedente ] [ Contenuti ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ successivo ]

La guida Debian

1.06-17, sab gen 31 07:56:05 UTC 2004

Osamu Aoki osamu@debian.org
Editor: David Sewell dsewell@virginia.edu
Traduzione italiana: Davide Di Lazzaro mc0315@mclink.it
Autori, Sezione A.1