Questa unità è l’eccezione dichiarata alla regola distribution-neutral dell’esame: qui si parla solo del mondo Debian — Debian, Ubuntu, Linux Mint e derivate. Il mondo RPM ha un obiettivo tutto suo, e LPI li tiene separati apposta. Tienili separati anche tu mentre studi: scambiare apt-get con yum in una risposta da digitare non ha appello.
Il formato è il file .deb: binari già compilati, metadati e script di configurazione in un unico archivio. Sopra ci lavorano due livelli. dpkg agisce su un file alla volta, in locale, e non va in rete. APT agisce sui repository, scarica e risolve le dipendenze. Non sono alternativi: APT chiama dpkg sotto.
dpkg: un pacchetto alla volta, dipendenze a carico tuo
Per installare passi il file:
# dpkg -i openshot-qt_2.4.3+dfsg1-1_all.deb
Non esiste un comando separato per aggiornare: dpkg controlla se una versione precedente è presente e in quel caso la sostituisce, altrimenti installa da zero.
Rimuovere invece vuole il nome del pacchetto, non il nome del file. È la prima cosa da fissare a memoria:
# dpkg -r unrar
# dpkg -P unrar
-r (remove) lascia sul sistema i file di configurazione; -P (purge) toglie anche quelli. Puoi elencare più nomi di seguito.
In entrambe le direzioni dpkg verifica le dipendenze, ma sa solo dirti che manca qualcosa: se al pacchetto servono librerie che non hai, stampa l’elenco e si ferma lasciando il pacchetto non configurato; se qualcosa dipende dal pacchetto che stai togliendo, rifiuta la rimozione. Trovare e installare i .deb mancanti tocca a te, ed è esattamente il vuoto che APT riempie. Esiste --force per proseguire lo stesso, e la risposta giusta all’esame come sul lavoro è la stessa: non usarlo se non sai cosa stai rompendo.
Interrogare dpkg: attenzione alle maiuscole
Qui l’esame gioca sulla differenza fra maiuscola e minuscola, e in una domanda a completamento non hai le opzioni da confrontare.
# dpkg -I google-chrome-stable_current_amd64.deb
# dpkg -l
# dpkg -L unrar
# dpkg -s unrar
# dpkg --get-selections
# dpkg-query -S /usr/bin/unrar-nonfree
-I maiuscola legge i metadati di un file .deb non ancora installato: versione, architettura, manutentore, campo Depends, descrizione. -l minuscola elenca i pacchetti installati e accetta un pattern. -L maiuscola elenca i file che un pacchetto installato ha messo sul disco. -s mostra stato e metadati di un pacchetto installato, --get-selections produce l’elenco completo delle selezioni.
Per la domanda inversa, «da quale pacchetto viene questo file?», si usa dpkg-query -S seguito dal percorso completo. Attenzione al limite: cerca solo fra i pacchetti già installati.
C’è poi un’utility a parte, dpkg-reconfigure nomepacchetto, che rilancia lo script di post-installazione e ripone le domande di configurazione. È la via per rimettere a posto una configurazione corrotta o per cambiare le risposte date la prima volta, come in dpkg-reconfigure tzdata.
apt-get e apt-cache: dipendenze e repository
APT non sostituisce dpkg, gli sta davanti. Studia apt-get e apt-cache, che sono le due utility citate dall’obiettivo: di apt serve sapere che esiste e che accorpa i comandi più usati dei due, ma può non essere installato, quindi le forme da ricordare sono quelle lunghe.
# apt-get update
# apt-get install xournal
# apt-get remove xournal
# apt-get purge xournal
# apt-get install -f
# apt-get upgrade
# apt-get dist-upgrade
# apt-get clean
update non aggiorna nulla: rilegge gli indici dei repository. È il passo che viene prima di ogni installazione o aggiornamento, ed è chiesto spesso proprio come sequenza. install e remove risolvono le dipendenze in automatico nelle due direzioni: installando tirano dentro ciò che serve, rimuovendo tirano via ciò che dipendeva dal pacchetto. APT mostra sempre la lista prima di chiedere conferma, e quella lista va letta. purge, o remove --purge, elimina anche le configurazioni.
install -f rimette in sesto le dipendenze rotte, tipicamente dopo un dpkg -i finito male. upgrade aggiorna quello che può senza mai rimuovere pacchetti e lascia indietro il resto segnalandolo come «kept back»; dist-upgrade accetta anche rimozioni e nuove installazioni pur di completare l’aggiornamento. Per cercare, apt-cache search pattern guarda in nome e descrizione, apt-cache show nomepacchetto mostra la scheda completa.
Sorgenti, cache e file non installati
L’elenco delle sorgenti sta in /etc/apt/sources.list. Una riga tipica:
deb http://us.archive.ubuntu.com/ubuntu/ disco main restricted universe multiverse
si legge come tipo di archivio, URL, distribuzione, componenti. Il tipo è deb per i pacchetti binari e deb-src per i sorgenti: distinguerli è una domanda ricorrente. I componenti cambiano famiglia — su Ubuntu sono main, restricted, universe e multiverse; su Debian sono main, contrib e non-free, più security e backports. Le righe che iniziano con # sono commenti. I repository aggiuntivi conviene aggiungerli come file con estensione .list dentro /etc/apt/sources.list.d/, senza toccare il file principale. Dopo ogni modifica serve apt-get update.
I .deb scaricati restano in /var/cache/apt/archives, i parziali nella sottodirectory partial; apt-get clean svuota entrambe quando lo spazio serve.
Resta il caso «quale pacchetto contiene questo file, anche se non l’ho installato»: dpkg-query non può rispondere, apt-file search nomefile sì. Va installato a parte e la prima volta va lanciato apt-file update.