Dpkg: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
(dpkg-deb, dpkg-query, architetture, importa ed esporta lista pacchetti (con stato))
(introduzione, riorganizzazione, estensione voci, aggiunti warnings)
Riga 1: Riga 1:
{{Stub}}{{Versioni_compatibili}}
{{Stub}}{{Versioni_compatibili}}
{{Box| Scrittura della pagina in corso... |}}


== Introduzione ==
== Introduzione ==
Dpkg è il package manager di Debian, che si occupa dell'installazione, della configurazione e della rimozione di tutto il software disponibile nella forma di [[pacchetto|pacchetti deb]]. Ogni pacchetto ha delle dipendenze, in forma di altri pacchetti che devono essere presenti nel sistema, che sono controllati e installati automaticamente da [[APT]], una suite di programmi che si avvale di <code>dpkg</code> come package manager e aggiunge funzionalità per rendere trasparente la gestione delle dipendenze e lo scaricamento dei pacchetti dai [[repository]].


== Pacchetti installati ==
Normalmente infatti l'utente utilizza soltanto uno dei tanti programmi che fanno parte di APT, come per esempio [[apt-get]], senza ricorrere direttamente a <code>dpkg</code>, riservato agli utenti più esperti e per esigenze specifiche. Questa guida vuole offire soltanto una panoramica generale agli usi più comuni di questo potente strumento, ma non ha alcuna pretesa di esaustività e si rimanda alle pagine di manuale per tutti gli altri dettagli.


=== Ricerca ===
Si sconsiglia caldamente l'uso di questo strumento per l'installazione e la rimozione di pacchetti, salvo sia impossibile effettuare la stessa operazione con [[APT]], in quanto non gestisce le dipendenze e ciò potrebbe compromettere il funzionamento del sistema. Invece può essere impiegato senza rischi per ricerche sul contenuto dei pacchetti installati o in generale per visualizzare informazioni a essi relative, in genere agendo come frontend per le opzioni più comuni di <code>dpkg-query</code> e <code>dpkg-deb</code>, anch'essi contenuti nel pacchetto '''dpkg''', essenziale per il funzionamento di Debian.


Per i comandi relativi a un pacchetto precedentemente installato, <code>dpkg</code> agisce come un frontend alle opzioni più comuni di <code>dpkg-query</code>.
== Pacchetti installati ==
In questa sezione sono raccolte tutte le azioni che possono essere svolte sui pacchetti precedentemente installati, in genere tramite [[APT]].


=== Ricerche ===
Cerca il pacchetto che ha installato il file, utile per risalire al pacchetto di un eseguibile di cui non si ricorda la provenienza:
Cerca il pacchetto che ha installato il file, utile per risalire al pacchetto di un eseguibile di cui non si ricorda la provenienza:
<pre>$ dpkg --search /percorso/file</pre>
<pre>$ dpkg --search /percorso/file</pre>
Riga 24: Riga 25:
<pre>$ dpkg --list "pattern"</pre>
<pre>$ dpkg --list "pattern"</pre>
(forma abbreviata: <code>-l</code>)
(forma abbreviata: <code>-l</code>)
Per esempio per cercare tutti i pacchetti precedentemente installati contenenti la stringa "apt":
<pre>$ dpkg -l "*apt*"</pre>


Per usi più avanzati si consulti il manuale di <code>dpkg-query</code>.
Per usi più avanzati si consulti il manuale di <code>dpkg-query</code>.
=== Verifiche ===
Restituisce la lista dei pacchetti installati solo parzialmente o presenti in uno stato inconsistente, suggerendo le azioni da compiere per la risoluzione del problema:
<pre>$ dpkg --audit</pre>
(forma abbreviata: <code>-C</code>)
Verifica l'integrità di ciò che è stato installato da uno o più pacchetti (dopo aver controllato la consistenza dei metadati con il comando precedente):
<pre>$ dpkg --verify nomepacchetto</pre>
(forma abbreviata: <code>-V</code>)


=== Riconfigurazione ===
=== Riconfigurazione ===
Se si vogliono cambiare le impostazioni di un pacchetto installato e già configurato in fase di installazione, o per cui è possibile cambiare il default tramite <code>dpkg</code>, si può utilizzare <code>dpkg-reconfigure</code>:
Se si vogliono cambiare le impostazioni di un pacchetto installato e già configurato in fase di installazione, o per cui è possibile cambiare il default tramite <code>dpkg</code>, si può utilizzare <code>dpkg-reconfigure</code>:
<pre># dpkg-reconfigure nomepacchetto</pre>
<pre># dpkg-reconfigure nomepacchetto</pre>
Riga 34: Riga 46:
Rispetto agli altri eseguibili, tutti contenuti nel pacchetto '''dpkg''', questo è contenuto in '''debconf''', ma è anch'esso richiesto per il corretto funzionamento di Debian.
Rispetto agli altri eseguibili, tutti contenuti nel pacchetto '''dpkg''', questo è contenuto in '''debconf''', ma è anch'esso richiesto per il corretto funzionamento di Debian.


=== Rimozione forzata ===
=== Rimozione ===
{{Warningbox | Per rimuovere software installato tramite [[APT]] o <code>dpkg</code> si consiglia di ricorrere sempre ad APT, per esempio tramite [[apt-get]], perché gestisce anche le dipendenze. Utilizzare direttamente <code>dpkg</code> può invece lasciare il sistema in uno stato incoerente, anche se in genere non è permessa la rimozione di pacchetti da cui altri ancora dipendono, senza forzarla esplicitamente con un'opzione.}}
 
Rimuove un pacchetto, se non esistono altri pacchetti installati che dipendono da esso, ma senza rimuovere le sue dipendenze:
<pre># dpkg --remove nomepacchetto</pre>
(forma abbreviata: <code>-r</code>)
 
Dopo il comando precedente, per rimuovere le dipendenze automatiche del pacchetto, se non più richieste da altri, è necessario ricorrere ad [[APT]]:
<pre># apt-get autoremove</pre>
 
Rimuove il pacchetto e anche i relativi file di configurazione del sistema:
<pre># dpkg --purge nomepacchetto</pre>
(forma abbreviata: <code>-P</code>)
 
E di nuovo, per rimuovere le dipendenze automatiche non più necessarie:
<pre># apt-get --purge autoremove</pre>
utilizzando <code>--purge</code> per eliminare anche i relativi file di configurazione del sistema.
 
==== Rimozione forzata ====
{{Warningbox | Questa operazione è ancora più rischiosa della precedente, in quanto disattiva i controlli di sicurezza pensati per proteggere il sistema da uno stato incoerente e potenzialmente inusabile, in base all'importanza dei pacchetti coinvolti nella rimozione. Va effettuata soltanto se è strettamente necessario, e prestando estrema attenzione.}}
 
Per forzare la rimozione, anche in presenza di dipendenze che impediscono l'eliminazione del pacchetto, è necessario specificare l'opzione <code>--force-depends</code>. L'uso è caldamente sconsigliato, salvo si sia certi di quello che si sta facendo, si sia utenti esperti dell'uso di [[APT]] e non si riesce a rimuovere il pacchetto in altri modi.
 
Per esempio per forzare la rimozione, ignorando tutte le dipendenze:
<pre># dpkg --remove --force-depends nomepacchetto</pre>
In alternativa esiste un'altra opzione che consente di ignorare solo la dipendenza da un pacchetto (''nomedipendenza''):
<pre># dpkg --remove --ignore-depends=nomedipendenza nomepacchetto</pre>
Oppure soltanto le dipendenze da una lista di pacchetti (''dipendenza1'', ''dipendenza2'', ...):
<pre># dpkg --remove --ignore-depends=dipendenza1,dipendenza2,... nomepacchetto</pre>
 
In luogo di <code>--remove</code> si può utilizzare <code>--purge</code> se si vogliono eliminare anche i relativi file di configurazione del sistema. E in entrambi i casi è necessario poi ricorrere ad [[APT]] per le dipendenze automatiche non più necessarie, come già visto per la rimozione normale.
 
Per altre opzioni si rimanda al manuale di <code>dpkg</code>.


== Stato dei pacchetti ==
== Stato dei pacchetti ==
Dpkg può essere utilizzato per controllare i pacchetti installati e il loro stato (''install'', ''deinstall'', ''hold'', ''purge''), e anche per cambiarlo.


Restituisce tutti i pacchetti precedentementi installati, accompagnati dal loro stato (''install'', ''deinstall'', ''hold'', ''purge''):
Si noti che lo stato ''auto'' o ''manual'' (se il pacchetto era installato automaticamente o manualmente) non è registrato, in quanto <code>dpkg</code> non si occupa delle dipendenze e non può conoscere se un pacchetto è stato installato solo per soddisfarle.
 
=== Lista i pacchetti del sistema ===
Restituisce la lista tutti i pacchetti precedentementi installati, accompagnati dal loro stato:
<pre>$ dpkg --get-selections</pre>
<pre>$ dpkg --get-selections</pre>


Lo stato ''auto'' o ''manual'' (se il pacchetto era installato automaticamente o manualmente) non è registrato, in quanto <code>dpkg</code> non gestisce le dipendenze e non può conoscere se un pacchetto è stato installato solo per soddisfarle.
=== Esporta e importa la lista dei pacchetti ===
 
=== Esportare e importare la lista dei pacchetti installati ===
 
{{Warningbox | Quest'operazione è pericolosa e in caso di errori può causare il blocco e il malfunzionamento del sistema, rendendo necessaria anche una nuova installazione da zero. Non va eseguita se non si è utenti abbastanza esperti, e si consiglia l'uso di un ambiente minimale come una console virtuale.}}
{{Warningbox | Quest'operazione è pericolosa e in caso di errori può causare il blocco e il malfunzionamento del sistema, rendendo necessaria anche una nuova installazione da zero. Non va eseguita se non si è utenti abbastanza esperti, e si consiglia l'uso di un ambiente minimale come una console virtuale.}}


Si noti che questo meccanismo non funziona tra diverse versioni di Debian e nemmeno tra diverse architetture, o in presenza di diversi driver. È da utilizzare soltanto per ripristinare una configurazione precedente sullo stesso PC o al limite tra due PC quasi identici. Ed è raccomandabile che si tratti di una Debian stable senza altri repository, per via dei cambiamenti che potrebbero avvenire ai pacchetti delle altre [[release]].
Si noti che questo meccanismo non funziona tra diverse versioni di Debian e nemmeno tra diverse architetture, o in presenza di diversi driver. È da utilizzare soltanto per ripristinare una configurazione precedente sullo stesso PC o al limite tra due PC quasi identici. Ed è raccomandabile che si tratti di una Debian stable senza altri repository, per via dei cambiamenti che potrebbero avvenire ai pacchetti delle altre [[release]].


==== Esportare ====
==== Esporta ====
 
Per esportare la lista dei pacchetti installati è sufficiente una redirezione su un file (in questo caso <code>lista_pacchetti.txt</code>):
Per esportare la lista dei pacchetti installati è sufficiente una redirezione su un file (in questo caso <code>lista_pacchetti.txt</code>):
<pre>$ dpkg --get-selections > lista_pacchetti.txt</pre>
<pre>$ dpkg --get-selections > lista_pacchetti.txt</pre>
Riga 58: Riga 102:
Si devono salvare i due file .txt e conservarli, per quando si intende importare.
Si devono salvare i due file .txt e conservarli, per quando si intende importare.


==== Importare ====
==== Importa ====
 
Se si vuole importare tale stato in seguito, per replicare la configurazione precedentemente esportata sono sufficienti due comandi, nella stessa cartella dove si sono salvati i due file .txt nella fase di esportazione:
Se si vuole importare tale stato in seguito, per replicare la configurazione precedentemente esportata sono sufficienti due comandi:
<pre># dpkg --clear-selections
<pre># dpkg --clear-selections
# dpkg --set-selections < lista_pacchetti.txt</pre>
# dpkg --set-selections < lista_pacchetti.txt</pre>
Dove il primo comando imposta lo stato ''deinstall'' a tutti i pacchetti non essenziali installati nel sistema, per far sì che i pacchetti installati ma non presenti nella lista vengano rimossi, e il secondo importa la lista dei pacchetti da installare.
Dove il primo comando imposta lo stato ''deinstall'' a tutti i pacchetti non essenziali installati nel sistema, per far sì che i pacchetti installati ma non presenti nella lista vengano rimossi, e il secondo importa la lista dei pacchetti da installare.


Per rendere effettive le modifiche è necessario ricorrere ad APT:
Per rendere effettive le modifiche, iniziando l'installazione e la rimozione dei pacchetti, è necessario ricorrere ad [[APT]]:
<pre># apt-get dselect-upgrade</pre>
<pre># apt-get dselect-upgrade</pre>


E infine per riassegnare gli stati ''auto'' ai pacchetti installati:
E infine per riassegnare gli stati ''auto'' ai pacchetti che erano stati installati in automatico:
<pre># apt-mark auto $(cat lista_auto.txt)</pre>
<pre># apt-mark auto $(cat lista_auto.txt)</pre>


A questo punto, se tutto è andato a buon fine, sul PC sono installati tutti e soli i pacchetti presenti al momento dell'esportazione, con gli stessi stati.
A questo punto, se tutto è andato a buon fine, sul PC sono installati tutti e soli i pacchetti presenti al momento dell'esportazione, con gli stessi stati.
=== Cambiare lo stato dei pacchetti ===
È sufficiente creare manualmente la lista dei pacchetti di cui modificare lo stato, con quello nuovo da assegnare, per esempio bloccando futuri aggiornamenti con ''hold'', e poi importarla.
{{Warningbox | Si consiglia di utilizzare [[apt-mark]] per svolgere quest'operazione, perché molto più pratico e affidabile, riducendo la possibilità di errori.
Per esempio:
<pre># apt-mark hold nomepacchetto1 ...</pre>}}
Blocca il futuro aggiornamento di un pacchetto:
<pre># echo nomepacchetto hold | dpkg --set-selections</pre>
Rimuove il blocco del pacchetto:
<pre># echo nomepacchetto install | dpkg --set-selections</pre>
Blocca il futuro aggiornamento di più pacchetti:
<pre># printf "%s hold\n" nomepacchetto1 ... nomepacchettoN | dpkg --set-selections</pre>
Rimuove il blocco di più pacchetti:
<pre># printf "%s install\n" nomepacchetto1 ... nomepacchettoN | dpkg --set-selections</pre>
È possibile anche utilizzare ''install'' per programmare l'installazione di pacchetti, oppure ''deinstall'' per programmarne la disinstallazione, ma in tal caso per rendere effettive le modifiche è necessario impartire <code>apt-get dselect-upgrade</code>.


== Pacchetto deb ==
== Pacchetto deb ==
In questa sezione sono raccolte le opzioni operanti su un [[pacchetto|pacchetto deb]], per esempio uno scaricato manualmente senza passare da APT oppure uno recuperato dalla cache dei pacchetti installati in precedenza.


=== Visualizza informazioni ===
=== Visualizza informazioni ===
Per i comandi relativi a un pacchetto deb <code>dpkg</code> agisce come un frontend alle opzioni più comuni di <code>dpkg-deb</code>.


Per i comandi relativi a un pacchetto deb <code>dpkg</code> agisce come un frontend alle opzioni più comuni di <code>dpkg-deb</code>.
Visualizza informazioni sul pacchetto deb:
<pre>$ dpkg --info pacchetto.deb</pre>
(forma abbreviata: <code>-I</code>)


Mostra il contenuto del pacchetto deb:
Mostra il contenuto del pacchetto deb:
<pre>$ dpkg --contents pacchetto.deb</pre>
<pre>$ dpkg --contents pacchetto.deb</pre>
(forma abbreviata: <code>-c</code>)
(forma abbreviata: <code>-c</code>)
Visualizza informazioni sul pacchetto deb:
<pre>$ dpkg --info pacchetto.deb</pre>
(forma abbreviata: <code>-I</code>)


Estrae il contenuto del pacchetto deb nella cartella scelta:
Estrae il contenuto del pacchetto deb nella cartella scelta:
Riga 94: Riga 159:


=== Installazione ===
=== Installazione ===
{{Warningbox | L'installazione di software esterno ad [[APT]] costituisce un potenziale rischio per la sicurezza e la stabilità del sistema. Inoltre <code>dpkg</code> non si occupa di soddisfare le dipendenze, rendendo necessario ricorrere ad APT.
Si consiglia l'uso di [[gdebi]] per l'installazione di pacchetti esterni, che si occupa di soddisfare le dipendenze del pacchetto prima dell'installazione, fermo restando che i rischi per la sicurezza rimangono invariati.}}
Installa un pacchetto deb, senza installarne le dipendenze:
<pre># dpkg --install pacchetto.deb</pre>
(forma abbreviata: <code>-i</code>)
Il sistema potrebbe trovarsi in uno stato incoerente, ed è necessario risolvere le dipendenze non soddisfatte con [[APT]], per esempio con [[apt-get]]:
<pre># apt-get --fix-broken install</pre>


=== Creazione ===
[[Gdebi]] effettua l'operazione contraria, installando prima in automatico le dipendenze del pacchetto tramite APT e soltanto in seguito, se l'operazione è stata conclusa con successo, proceedendo con quella del pacchetto deb, riducendo le possibilità che il sistema rimanga in uno stato incoerente anche in presenza di errori.
 
==== Installazione forzata ====
{{Warningbox | Le istruzioni presentate in questa sezione possono compromettere il funzionamento del sistema, e l'uso è sconsigliato, salvo si sia utenti esperti nell'uso di [[APT]], si presti molta attenzione a quello che si sta facendo, e non ci sia altro modo di risolvere il proprio problema.}}
 
Se si vuole forzare una versione di un pacchetto che comporta il [[downgrade]], oppure ignorare delle dipendenze, è necessario ricorrere <code>dpkg</code>, specificando le opzioni <code>--force-*</code> relative, che si possono leggere sul manuale di <code>dpkg</code>.
 
Per esempio per forzare il [[downgrade]] di un pacchetto, dopo aver recuperato una versione precedente (NOTA: nessun controllo sulle dipendenze, il sistema potrebbe risultare inusabile, a seconda dell'importanza del pacchetto):
<pre># dpkg --install --force-downgrade pacchetto.deb</pre>
Ma si consiglia di ricorrere al [[pinning]], e quindi ad [[APT]], se è possibile.
 
Installa un pacchetto, anche se può rendere non funzionante un altro pacchetto:
<pre># dpkg --install --force-breaks pacchetto.deb</pre>
Può essere molto pericoloso, se entra in conflitto con uno dei pacchetti essenziali al funzionamento del sistema.
 
Al solito è necessario avvalersi di [[APT]] per sistemare le dipendenze:
<pre># apt-get --fix-broken install</pre>


== Architetture ==
== Architetture ==
A partire da Debian [[Wheezy]] è stato aggiunto il supporto ad architetture multiple, e <code>dpkg</code> si occupa di gestire quali architetture possono essere scelte per i pacchetti installati con [[APT]], se compatibili con il proprio hardware.


=== Informazioni sulle architetture ===
=== Visualizza informazioni ===
 
Visualizza l'architettura di default dei pacchetti Debian che saranno installati:
Visualizza l'architettura di default dei pacchetti Debian che saranno installati:
<pre>$ dpkg --print-architecture</pre>
<pre>$ dpkg --print-architecture</pre>
Riga 107: Riga 198:
<pre>$ dpkg --print-foreign-architectures</pre>
<pre>$ dpkg --print-foreign-architectures</pre>


=== Aggiungi e rimuovi architetture ===
=== Aggiungi nuova architettura ===
 
Aggiunge una nuova architettura:
Aggiunge una nuova architettura:
<pre># dpkg --add-architecture architecture</pre>
<pre># dpkg --add-architecture architecture</pre>
Per rendere le modifiche effettive per APT è necessario rieffettuare l'aggiornamento della lista di pacchetti disponibili.   
Per rendere le modifiche effettive per APT è necessario rieffettuare l'aggiornamento della lista di pacchetti disponibili.   


Per esempio:
=== Rimuovi architettura ===
Un caso comune per esempio è quello di aggiungere il supporto per gli eseguibili a 32 bit (architettura: ''i386'') su PC a 64 bit (architettura: ''amd64''):
<pre># dpkg --add-architecture i386
<pre># dpkg --add-architecture i386
# apt-get update</pre>
# apt-get update</pre>
Riga 120: Riga 211:
<pre># dpkg --remove-architecture architecture</pre>
<pre># dpkg --remove-architecture architecture</pre>
seguito dall'aggiornamento della lista dei pacchetti, per rendere effettive le modifiche.
seguito dall'aggiornamento della lista dei pacchetti, per rendere effettive le modifiche.
== Manuale ==
<code>man dpkg</code><br/>
<code>man dpkg-query</code><br/>
<code>man dpkg-deb</code><br/>
<code>man dpkg-reconfigure</code><br/>


{{Autori
{{Autori

Versione delle 15:19, 31 mar 2015

Document-page-setup.png Attenzione: questo articolo è ancora incompleto e in fase di scrittura da parte del suo autore.

Sentitevi liberi di contribuire, proponendo modifiche alla guida tramite l'apposita pagina di discussione, in modo da non interferire con il lavoro portato avanti sulla voce. Per altre informazioni si rimanda al template.


Debian-swirl.png Versioni Compatibili

Tutte le versioni supportate di Debian

Introduzione

Dpkg è il package manager di Debian, che si occupa dell'installazione, della configurazione e della rimozione di tutto il software disponibile nella forma di pacchetti deb. Ogni pacchetto ha delle dipendenze, in forma di altri pacchetti che devono essere presenti nel sistema, che sono controllati e installati automaticamente da APT, una suite di programmi che si avvale di dpkg come package manager e aggiunge funzionalità per rendere trasparente la gestione delle dipendenze e lo scaricamento dei pacchetti dai repository.

Normalmente infatti l'utente utilizza soltanto uno dei tanti programmi che fanno parte di APT, come per esempio apt-get, senza ricorrere direttamente a dpkg, riservato agli utenti più esperti e per esigenze specifiche. Questa guida vuole offire soltanto una panoramica generale agli usi più comuni di questo potente strumento, ma non ha alcuna pretesa di esaustività e si rimanda alle pagine di manuale per tutti gli altri dettagli.

Si sconsiglia caldamente l'uso di questo strumento per l'installazione e la rimozione di pacchetti, salvo sia impossibile effettuare la stessa operazione con APT, in quanto non gestisce le dipendenze e ciò potrebbe compromettere il funzionamento del sistema. Invece può essere impiegato senza rischi per ricerche sul contenuto dei pacchetti installati o in generale per visualizzare informazioni a essi relative, in genere agendo come frontend per le opzioni più comuni di dpkg-query e dpkg-deb, anch'essi contenuti nel pacchetto dpkg, essenziale per il funzionamento di Debian.

Pacchetti installati

In questa sezione sono raccolte tutte le azioni che possono essere svolte sui pacchetti precedentemente installati, in genere tramite APT.

Ricerche

Cerca il pacchetto che ha installato il file, utile per risalire al pacchetto di un eseguibile di cui non si ricorda la provenienza:

$ dpkg --search /percorso/file

Stesso comando, in forma abbreviata:

$ dpkg -S /percorso/file

Restituisce la lista dei file installati nel sistema da un dato pacchetto:

$ dpkg --listfiles nomepacchetto

(forma abbreviata: -L)

Cerca tutti i nomi di pacchetti corrispondenti al pattern scelto (con caratteri jolli: *, ?, [...]) tra quelli precedentemente installati, mostrandone lo stato, la versione e l'architettura:

$ dpkg --list "pattern"

(forma abbreviata: -l)

Per esempio per cercare tutti i pacchetti precedentemente installati contenenti la stringa "apt":

$ dpkg -l "*apt*"

Per usi più avanzati si consulti il manuale di dpkg-query.

Verifiche

Restituisce la lista dei pacchetti installati solo parzialmente o presenti in uno stato inconsistente, suggerendo le azioni da compiere per la risoluzione del problema:

$ dpkg --audit

(forma abbreviata: -C)

Verifica l'integrità di ciò che è stato installato da uno o più pacchetti (dopo aver controllato la consistenza dei metadati con il comando precedente):

$ dpkg --verify nomepacchetto

(forma abbreviata: -V)

Riconfigurazione

Se si vogliono cambiare le impostazioni di un pacchetto installato e già configurato in fase di installazione, o per cui è possibile cambiare il default tramite dpkg, si può utilizzare dpkg-reconfigure:

# dpkg-reconfigure nomepacchetto

Rispetto agli altri eseguibili, tutti contenuti nel pacchetto dpkg, questo è contenuto in debconf, ma è anch'esso richiesto per il corretto funzionamento di Debian.

Rimozione

Warning.png ATTENZIONE
Per rimuovere software installato tramite APT o dpkg si consiglia di ricorrere sempre ad APT, per esempio tramite apt-get, perché gestisce anche le dipendenze. Utilizzare direttamente dpkg può invece lasciare il sistema in uno stato incoerente, anche se in genere non è permessa la rimozione di pacchetti da cui altri ancora dipendono, senza forzarla esplicitamente con un'opzione.


Rimuove un pacchetto, se non esistono altri pacchetti installati che dipendono da esso, ma senza rimuovere le sue dipendenze:

# dpkg --remove nomepacchetto

(forma abbreviata: -r)

Dopo il comando precedente, per rimuovere le dipendenze automatiche del pacchetto, se non più richieste da altri, è necessario ricorrere ad APT:

# apt-get autoremove

Rimuove il pacchetto e anche i relativi file di configurazione del sistema:

# dpkg --purge nomepacchetto

(forma abbreviata: -P)

E di nuovo, per rimuovere le dipendenze automatiche non più necessarie:

# apt-get --purge autoremove

utilizzando --purge per eliminare anche i relativi file di configurazione del sistema.

Rimozione forzata

Warning.png ATTENZIONE
Questa operazione è ancora più rischiosa della precedente, in quanto disattiva i controlli di sicurezza pensati per proteggere il sistema da uno stato incoerente e potenzialmente inusabile, in base all'importanza dei pacchetti coinvolti nella rimozione. Va effettuata soltanto se è strettamente necessario, e prestando estrema attenzione.


Per forzare la rimozione, anche in presenza di dipendenze che impediscono l'eliminazione del pacchetto, è necessario specificare l'opzione --force-depends. L'uso è caldamente sconsigliato, salvo si sia certi di quello che si sta facendo, si sia utenti esperti dell'uso di APT e non si riesce a rimuovere il pacchetto in altri modi.

Per esempio per forzare la rimozione, ignorando tutte le dipendenze:

# dpkg --remove --force-depends nomepacchetto

In alternativa esiste un'altra opzione che consente di ignorare solo la dipendenza da un pacchetto (nomedipendenza):

# dpkg --remove --ignore-depends=nomedipendenza nomepacchetto

Oppure soltanto le dipendenze da una lista di pacchetti (dipendenza1, dipendenza2, ...):

# dpkg --remove --ignore-depends=dipendenza1,dipendenza2,... nomepacchetto

In luogo di --remove si può utilizzare --purge se si vogliono eliminare anche i relativi file di configurazione del sistema. E in entrambi i casi è necessario poi ricorrere ad APT per le dipendenze automatiche non più necessarie, come già visto per la rimozione normale.

Per altre opzioni si rimanda al manuale di dpkg.

Stato dei pacchetti

Dpkg può essere utilizzato per controllare i pacchetti installati e il loro stato (install, deinstall, hold, purge), e anche per cambiarlo.

Si noti che lo stato auto o manual (se il pacchetto era installato automaticamente o manualmente) non è registrato, in quanto dpkg non si occupa delle dipendenze e non può conoscere se un pacchetto è stato installato solo per soddisfarle.

Lista i pacchetti del sistema

Restituisce la lista tutti i pacchetti precedentementi installati, accompagnati dal loro stato:

$ dpkg --get-selections

Esporta e importa la lista dei pacchetti

Warning.png ATTENZIONE
Quest'operazione è pericolosa e in caso di errori può causare il blocco e il malfunzionamento del sistema, rendendo necessaria anche una nuova installazione da zero. Non va eseguita se non si è utenti abbastanza esperti, e si consiglia l'uso di un ambiente minimale come una console virtuale.


Si noti che questo meccanismo non funziona tra diverse versioni di Debian e nemmeno tra diverse architetture, o in presenza di diversi driver. È da utilizzare soltanto per ripristinare una configurazione precedente sullo stesso PC o al limite tra due PC quasi identici. Ed è raccomandabile che si tratti di una Debian stable senza altri repository, per via dei cambiamenti che potrebbero avvenire ai pacchetti delle altre release.

Esporta

Per esportare la lista dei pacchetti installati è sufficiente una redirezione su un file (in questo caso lista_pacchetti.txt):

$ dpkg --get-selections > lista_pacchetti.txt

E per salvare anche lo stato è necessario ricorrere ad APT e creare un nuovo file con tale informazione, per esempio tramite apt-mark e una redirezione:

$ apt-mark showauto > lista_auto.txt

Si devono salvare i due file .txt e conservarli, per quando si intende importare.

Importa

Se si vuole importare tale stato in seguito, per replicare la configurazione precedentemente esportata sono sufficienti due comandi, nella stessa cartella dove si sono salvati i due file .txt nella fase di esportazione:

# dpkg --clear-selections
# dpkg --set-selections < lista_pacchetti.txt

Dove il primo comando imposta lo stato deinstall a tutti i pacchetti non essenziali installati nel sistema, per far sì che i pacchetti installati ma non presenti nella lista vengano rimossi, e il secondo importa la lista dei pacchetti da installare.

Per rendere effettive le modifiche, iniziando l'installazione e la rimozione dei pacchetti, è necessario ricorrere ad APT:

# apt-get dselect-upgrade

E infine per riassegnare gli stati auto ai pacchetti che erano stati installati in automatico:

# apt-mark auto $(cat lista_auto.txt)

A questo punto, se tutto è andato a buon fine, sul PC sono installati tutti e soli i pacchetti presenti al momento dell'esportazione, con gli stessi stati.

Cambiare lo stato dei pacchetti

È sufficiente creare manualmente la lista dei pacchetti di cui modificare lo stato, con quello nuovo da assegnare, per esempio bloccando futuri aggiornamenti con hold, e poi importarla.

Warning.png ATTENZIONE
Si consiglia di utilizzare apt-mark per svolgere quest'operazione, perché molto più pratico e affidabile, riducendo la possibilità di errori.

Per esempio:

# apt-mark hold nomepacchetto1 ...


Blocca il futuro aggiornamento di un pacchetto:

# echo nomepacchetto hold | dpkg --set-selections

Rimuove il blocco del pacchetto:

# echo nomepacchetto install | dpkg --set-selections

Blocca il futuro aggiornamento di più pacchetti:

# printf "%s hold\n" nomepacchetto1 ... nomepacchettoN | dpkg --set-selections

Rimuove il blocco di più pacchetti:

# printf "%s install\n" nomepacchetto1 ... nomepacchettoN | dpkg --set-selections

È possibile anche utilizzare install per programmare l'installazione di pacchetti, oppure deinstall per programmarne la disinstallazione, ma in tal caso per rendere effettive le modifiche è necessario impartire apt-get dselect-upgrade.

Pacchetto deb

In questa sezione sono raccolte le opzioni operanti su un pacchetto deb, per esempio uno scaricato manualmente senza passare da APT oppure uno recuperato dalla cache dei pacchetti installati in precedenza.

Visualizza informazioni

Per i comandi relativi a un pacchetto deb dpkg agisce come un frontend alle opzioni più comuni di dpkg-deb.

Visualizza informazioni sul pacchetto deb:

$ dpkg --info pacchetto.deb

(forma abbreviata: -I)

Mostra il contenuto del pacchetto deb:

$ dpkg --contents pacchetto.deb

(forma abbreviata: -c)

Estrae il contenuto del pacchetto deb nella cartella scelta:

$ dpkg --vextract pacchetto.deb directory

(forma abbreviata: -X)

Per usi più avanzati si consulti il manuale di dpkg-deb.

Installazione

Warning.png ATTENZIONE
L'installazione di software esterno ad APT costituisce un potenziale rischio per la sicurezza e la stabilità del sistema. Inoltre dpkg non si occupa di soddisfare le dipendenze, rendendo necessario ricorrere ad APT.

Si consiglia l'uso di gdebi per l'installazione di pacchetti esterni, che si occupa di soddisfare le dipendenze del pacchetto prima dell'installazione, fermo restando che i rischi per la sicurezza rimangono invariati.


Installa un pacchetto deb, senza installarne le dipendenze:

# dpkg --install pacchetto.deb

(forma abbreviata: -i)

Il sistema potrebbe trovarsi in uno stato incoerente, ed è necessario risolvere le dipendenze non soddisfatte con APT, per esempio con apt-get:

# apt-get --fix-broken install

Gdebi effettua l'operazione contraria, installando prima in automatico le dipendenze del pacchetto tramite APT e soltanto in seguito, se l'operazione è stata conclusa con successo, proceedendo con quella del pacchetto deb, riducendo le possibilità che il sistema rimanga in uno stato incoerente anche in presenza di errori.

Installazione forzata

Warning.png ATTENZIONE
Le istruzioni presentate in questa sezione possono compromettere il funzionamento del sistema, e l'uso è sconsigliato, salvo si sia utenti esperti nell'uso di APT, si presti molta attenzione a quello che si sta facendo, e non ci sia altro modo di risolvere il proprio problema.


Se si vuole forzare una versione di un pacchetto che comporta il downgrade, oppure ignorare delle dipendenze, è necessario ricorrere dpkg, specificando le opzioni --force-* relative, che si possono leggere sul manuale di dpkg.

Per esempio per forzare il downgrade di un pacchetto, dopo aver recuperato una versione precedente (NOTA: nessun controllo sulle dipendenze, il sistema potrebbe risultare inusabile, a seconda dell'importanza del pacchetto):

# dpkg --install --force-downgrade pacchetto.deb

Ma si consiglia di ricorrere al pinning, e quindi ad APT, se è possibile.

Installa un pacchetto, anche se può rendere non funzionante un altro pacchetto:

# dpkg --install --force-breaks pacchetto.deb

Può essere molto pericoloso, se entra in conflitto con uno dei pacchetti essenziali al funzionamento del sistema.

Al solito è necessario avvalersi di APT per sistemare le dipendenze:

# apt-get --fix-broken install

Architetture

A partire da Debian Wheezy è stato aggiunto il supporto ad architetture multiple, e dpkg si occupa di gestire quali architetture possono essere scelte per i pacchetti installati con APT, se compatibili con il proprio hardware.

Visualizza informazioni

Visualizza l'architettura di default dei pacchetti Debian che saranno installati:

$ dpkg --print-architecture

Visualizza tutte le altre architetture che possono essere selezionate per l'installazione, ossia tutte quelle aggiunte in seguito manualmente:

$ dpkg --print-foreign-architectures

Aggiungi nuova architettura

Aggiunge una nuova architettura:

# dpkg --add-architecture architecture

Per rendere le modifiche effettive per APT è necessario rieffettuare l'aggiornamento della lista di pacchetti disponibili.

Rimuovi architettura

Un caso comune per esempio è quello di aggiungere il supporto per gli eseguibili a 32 bit (architettura: i386) su PC a 64 bit (architettura: amd64):

# dpkg --add-architecture i386
# apt-get update

Rimuove un'architettura precedentemente aggiunta:

# dpkg --remove-architecture architecture

seguito dall'aggiornamento della lista dei pacchetti, per rendere effettive le modifiche.

Manuale

man dpkg
man dpkg-query
man dpkg-deb
man dpkg-reconfigure




Guida scritta da: HAL 9000 Swirl-auth20.png Debianized 20%
Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized