Dpkg: differenze tra le versioni

m
aggiunti elenchi, e altre modifiche minori, ultima verifica e rimosso stub
m (aggiunti elenchi, e altre modifiche minori, ultima verifica e rimosso stub)
Riga 1: Riga 1:
{{Stub}}{{Versioni_compatibili}}
{{Versioni_compatibili}}


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


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


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


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


=== Ricerche ===
=== 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 esempio 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 18: Riga 20:
<pre>$ dpkg -S /percorso/file</pre>
<pre>$ dpkg -S /percorso/file</pre>


Restituisce la lista dei file installati nel sistema da un dato pacchetto:
* Restituisce la lista dei file installati nel sistema da un dato pacchetto:
<pre>$ dpkg --listfiles nomepacchetto</pre>
<pre>$ dpkg --listfiles nomepacchetto</pre>
(forma abbreviata: <code>-L</code>)
(forma abbreviata: <code>-L</code>)


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:
* 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:
<pre>$ dpkg --list "pattern"</pre>
<pre>$ dpkg --list "pattern"</pre>
(forma abbreviata: <code>-l</code>)
(forma abbreviata: <code>-l</code>)
Riga 32: Riga 34:


=== Verifiche ===
=== 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:
* 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>
<pre>$ dpkg --audit</pre>
(forma abbreviata: <code>-C</code>)
(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):
* 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>
<pre>$ dpkg --verify nomepacchetto</pre>
(forma abbreviata: <code>-V</code>)
(forma abbreviata: <code>-V</code>)
Riga 49: Riga 51:
{{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.}}
{{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:
* Rimuove un pacchetto, se non esistono altri pacchetti installati che dipendono da esso, ma senza rimuovere le sue dipendenze:
<pre># dpkg --remove nomepacchetto</pre>
<pre># dpkg --remove nomepacchetto</pre>
(forma abbreviata: <code>-r</code>)
(forma abbreviata: <code>-r</code>)
Riga 56: Riga 58:
<pre># apt-get autoremove</pre>
<pre># apt-get autoremove</pre>


Rimuove il pacchetto e anche i relativi file di configurazione del sistema:
* Rimuove il pacchetto e anche i relativi file di configurazione del sistema:
<pre># dpkg --purge nomepacchetto</pre>
<pre># dpkg --purge nomepacchetto</pre>
(forma abbreviata: <code>-P</code>)
(forma abbreviata: <code>-P</code>)
Riga 85: Riga 87:
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.
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 ===
=== Lista dei pacchetti del sistema ===
Restituisce la lista tutti i pacchetti precedentementi installati, accompagnati dal loro stato:
Restituisce la lista tutti i pacchetti precedentementi installati, accompagnati dal loro stato:
<pre>$ dpkg --get-selections</pre>
<pre>$ dpkg --get-selections</pre>
Riga 116: Riga 118:
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 ===
=== Cambia 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.
È 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.


Riga 124: Riga 126:
<pre># apt-mark hold nomepacchetto1 ...</pre>}}
<pre># apt-mark hold nomepacchetto1 ...</pre>}}


Blocca il futuro aggiornamento di un pacchetto:
* Blocca il futuro aggiornamento di un pacchetto:
<pre># echo nomepacchetto hold | dpkg --set-selections</pre>
<pre># echo nomepacchetto hold | dpkg --set-selections</pre>


Rimuove il blocco del pacchetto:
* Rimuove il blocco del pacchetto:
<pre># echo nomepacchetto install | dpkg --set-selections</pre>
<pre># echo nomepacchetto install | dpkg --set-selections</pre>


Blocca il futuro aggiornamento di più pacchetti:
* Blocca il futuro aggiornamento di più pacchetti:
<pre># printf "%s hold\n" nomepacchetto1 ... nomepacchettoN | dpkg --set-selections</pre>
<pre># printf "%s hold\n" nomepacchetto1 ... nomepacchettoN | dpkg --set-selections</pre>


Rimuove il blocco di più pacchetti:
* Rimuove il blocco di più pacchetti:
<pre># printf "%s install\n" nomepacchetto1 ... nomepacchettoN | dpkg --set-selections</pre>
<pre># printf "%s install\n" nomepacchetto1 ... nomepacchettoN | dpkg --set-selections</pre>


Riga 144: Riga 146:
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:
* Visualizza informazioni sul pacchetto deb:
<pre>$ dpkg --info pacchetto.deb</pre>
<pre>$ dpkg --info pacchetto.deb</pre>
(forma abbreviata: <code>-I</code>)
(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>)


Estrae il contenuto del pacchetto deb nella cartella scelta:
* Estrae il contenuto del pacchetto deb nella cartella scelta:
<pre>$ dpkg --vextract pacchetto.deb directory</pre>
<pre>$ dpkg --vextract pacchetto.deb directory</pre>
(forma abbreviata: <code>-X</code>)
(forma abbreviata: <code>-X</code>)
Riga 175: Riga 177:
{{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.}}
{{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 a <code>dpkg</code>, specificando le opzioni <code>--force-*</code> relative, che si possono leggere sul manuale di <code>dpkg</code>.
Se si vuole forzare una versione di un pacchetto che comporta il [[downgrade]], oppure ignorare delle dipendenze, è necessario ricorrere a <code>dpkg</code>, specificando le opzioni <code>--force-*</code> relative, che si possono leggere sul manuale di <code>dpkg</code>. Si consideri che gli altri casi di conflitti, rispetto a quelli trattati in seguito, sono ancora più pericolosi da forzare, ed è probabile che portino alla sovrascrittura di file gestiti da altri pacchetti, potenzialmente compromettendo l'integrità del sistema.


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):
* Per esempio per forzare il [[downgrade]] di un pacchetto, dopo aver recuperato una versione precedente:
<pre># dpkg --install --force-downgrade pacchetto.deb</pre>
<pre># dpkg --install --force-downgrade pacchetto.deb</pre>
Ma si consiglia di ricorrere al [[pinning]], e quindi ad [[APT]], se è possibile.
Può succedere anche che l'installazione di un pacchetto sia impedita, perché un altro sarebbe reso non funzionante da esso. In tal caso si può forzarne l'installazione con:
<pre># dpkg --install --force-breaks pacchetto.deb</pre>
Si noti che è molto pericoloso, se mette fuori uso un pacchetti essenziali, ed è sempre raccomandabile effettuare invece una scelta tra i pacchetti con [[APT]].
E al solito in seguito all'installazione con <code>dpkg</code> è necessario avvalersi di [[APT]] per sistemare le dipendenze:
E al solito in seguito all'installazione con <code>dpkg</code> è necessario avvalersi di [[APT]] per sistemare le dipendenze:
<pre># apt-get --fix-broken install</pre>
<pre># apt-get --fix-broken install</pre>
Si consiglia però di tentare prima il [[downgrade]] con [[APT]] attraverso il [[pinning]], in quanto con <code>dpkg --force-downgrade</code> non avviene nessun controllo di sicurezza sulle dipendenze e il sistema potrebbe risultare inusabile, a seconda dell'importanza del pacchetto.


Altri casi di conflitti sono ancora più pericolosi da forzare, e possono portare alla sovrascrittura di file gestiti da altri pacchetti, compromettendo l'integrità del sistema. Per maggiori informazioni si rimanda al manuale.
* Può succedere anche che l'installazione di un pacchetto sia impedita, perché un altro sarebbe reso non funzionante da esso. In tal caso si può forzarne l'installazione con:
<pre># dpkg --install --force-breaks pacchetto.deb
# apt-get --fix-broken install</pre>
Si noti che è molto pericoloso, se mette fuori uso un pacchetti essenziali, ed è sempre raccomandabile effettuare invece una scelta tra i pacchetti con [[APT]].


== Architetture ==
== Architetture ==
Riga 194: Riga 194:


=== Visualizza informazioni ===
=== Visualizza informazioni ===
Visualizza l'architettura di default dei pacchetti Debian che saranno installati, in base all'immagine scelta in fase di installazione:
* Visualizza l'architettura di default dei pacchetti Debian che saranno installati, in base all'immagine scelta in fase di installazione:
<pre>$ dpkg --print-architecture</pre>
<pre>$ dpkg --print-architecture</pre>


Visualizza tutte le altre architetture che possono essere selezionate per l'installazione, ossia tutte quelle aggiunte in seguito manualmente:
* Visualizza tutte le altre architetture che possono essere selezionate per l'installazione, ossia tutte quelle aggiunte in seguito manualmente:
<pre>$ dpkg --print-foreign-architectures</pre>
<pre>$ dpkg --print-foreign-architectures</pre>


3 581

contributi