Comando dpkg: controllare e installare pacchetti DEB su Debian e Ubuntu
dpkg gestisce i pacchetti locali .deb e il database dei pacchetti nei sistemi Debian e Ubuntu. Permette di leggere lo stato di un pacchetto con -s e i file registrati con -L, ma non scarica automaticamente le dipendenze dai repository: per questo si usa normalmente APT e il comando apt.
Per installare un DEB locale con le dipendenze disponibili nei repository configurati, valuta sudo apt install ./file.deb: lo spazio dopo install e il percorso iniziale ./ sono importanti. Il file deve comunque essere affidabile e compatibile con la distribuzione. Un nome di pacchetto come bash indica una voce del database; un percorso come ./example.deb indica invece un archivio sul disco.
Sintassi e preparazione
dpkg [options] action [package or file]
Questa riga descrive la sintassi: options, action e package or file sono segnaposto, non argomenti da copiare letteralmente. L'azione stabilisce se interrogare il database, installare o rimuovere. Consulta dpkg --version e man dpkg sul sistema interessato: i dettagli possono cambiare fra versioni.
Le normali interrogazioni non richiedono sudo; le modifiche ai pacchetti di sistema richiedono privilegi amministrativi. Prima di un'installazione conserva i dati e le configurazioni importanti e verifica distribuzione, versione e architettura del sistema, confrontandole con quelle supportate dal pacchetto. Non applicare questi comandi a distribuzioni che usano un altro gestore.
Esempi: stato, file e installazione locale
Leggere lo stato di bash
Interroga la voce bash nel database locale, senza contattare un repository e senza installare nulla.
dpkg -s bash
Leggi soprattutto Status e Version, oltre alla descrizione. Se il nome non è noto al database, il comando può segnalare che il pacchetto non è installato o che non sono disponibili informazioni. Non dedurre l'installazione dalla sola presenza di un nome nell'output.
Elencare i file registrati
dpkg -L bash
Il risultato è un elenco di percorsi appartenenti al pacchetto. Non è un inventario completo dei file creati durante l'uso: i file aggiunti dagli script di manutenzione e le alternative non sono inclusi. L'elenco, da solo, non prova che tutti i file esistano ancora o siano integri. Per cercare il pacchetto proprietario di un percorso registrato usa l'azione dpkg -S indicata nella tabella.
Installare un archivio locale
Scarica il file dalla fonte ufficiale del produttore o della distribuzione e verifica le istruzioni di autenticazione fornite da quella fonte. Puoi leggere i metadati senza installarlo con dpkg-deb -I ./example.deb: controlla Package, Version, Architecture e Depends. Questi campi descrivono il contenuto, ma non attestano da soli l'affidabilità del file.
sudo dpkg -i ./example.deb
example.deb è un nome dimostrativo: sostituiscilo con il file effettivamente verificato, nella directory corrente. L'installazione può scompattare file, eseguire script di manutenzione e configurare il pacchetto. Non eseguirla soltanto per vedere cosa contiene l'archivio. Leggi l'esito prima di procedere e interroga poi il nome Package con -s; il nome del file DEB e quello del pacchetto possono essere diversi.
Se manca una dipendenza, il comando può lasciare il pacchetto scompattato ma non configurato. Non presumere che un errore abbia annullato ogni modifica: conserva il messaggio completo e valuta la procedura di risoluzione con APT prima di ripetere l'operazione.
Interpretare lo stato senza confonderlo con i repository
Questo esempio riguarda un sistema Debian o Ubuntu nel quale bash è presente nel database locale:
dpkg -s bash
Una parte del formato di risposta può essere:
Package: bash
Status: install ok installed
Version: ...
I puntini sostituiscono una versione variabile: non sono un numero reale. In Status, install esprime la selezione richiesta, ok il flag di errore e installed lo stato del pacchetto, correttamente scompattato e configurato. Questo non garantisce che il programma funzioni in ogni situazione né verifica la sicurezza dei suoi file.
Stati come unpacked o half-configured richiedono un esame diverso: il pacchetto non ha concluso la configurazione. Non cambiare manualmente le voci del database per far apparire installed. Le informazioni di dpkg riguardano lo stato locale; per versioni candidate e disponibilità nei repository consulta APT.
Azioni principali e relativi limiti
| Azione | Funzione |
|---|---|
-i file.deb |
Installa un archivio locale; non scarica le dipendenze dai repository. |
-s pacchetto |
Mostra la voce e lo stato nel database locale. |
-L pacchetto |
Elenca i file registrati per il pacchetto. |
-S percorso |
Cerca i pacchetti proprietari di un percorso registrato. |
-r / -P pacchetto |
Rimuove il pacchetto; con -P elimina anche i file di configurazione gestiti dalla procedura di purge. |
-r lascia normalmente i file di configurazione del pacchetto; -P, cioè purge, elimina anche quei residui secondo la gestione del pacchetto. Non interpretare purge come cancellazione universale di ogni dato: le configurazioni nelle directory personali degli utenti non vengono eliminate automaticamente da dpkg. Salva ciò che serve prima di rimuovere e valuta le dipendenze degli altri pacchetti.
Dipendenze, sicurezza e recupero dagli errori
Un DEB non affidabile può eseguire script con privilegi amministrativi. Non usare opzioni di forzatura per ignorare alla cieca dipendenze, conflitti o incompatibilità. Controlla prima la fonte, la versione, l'architettura e il testo dell'errore. Un pacchetto destinato a un'altra versione della distribuzione non diventa compatibile solo perché si riesce a forzarne l'installazione.
Se il database è rimasto in uno stato parziale, dpkg --audit aiuta a individuare problemi di coerenza; non è una certificazione di sicurezza. Quando l'errore indica una configurazione interrotta, sudo dpkg --configure -a tenta di configurare tutti i pacchetti in attesa e può eseguire i relativi script: usalo dopo aver compreso la causa, non come semplice interrogazione.
Per una risoluzione con APT, esamina prima il piano con apt-get -s --fix-broken install, soprattutto eventuali rimozioni; la simulazione non blocca lo stato del sistema e non garantisce lo stesso piano successivamente. Esegui una correzione effettiva soltanto dopo aver verificato che sia adatta al sistema. Se mancano repository o versioni compatibili, la dipendenza può restare irrisolvibile.
Se un altro gestore sta lavorando, attendi che termini invece di cancellare i file di blocco. Una reinstallazione o la rimozione del pacchetto non ripristina necessariamente dati e configurazioni precedenti: per tornare a una situazione nota servono backup o snapshot appropriati.
Domande frequenti
Qual è la differenza tra dpkg -i e apt install ./file.deb?
dpkg installa direttamente il file locale e non scarica le dipendenze dai repository. APT può cercare e installare le dipendenze disponibili nei repository configurati. Entrambi richiedono un file affidabile e compatibile; la risoluzione non è sempre possibile.
L'elenco ottenuto con -L dimostra che i file sono tutti presenti?
No. Mostra i percorsi registrati nel database, non una verifica corrente della loro esistenza o integrità, e non include ogni file creato dagli script o dall'applicazione.
Documentazione ufficiale
Il manuale Debian di dpkg descrive azioni, stati e rimozione. Per i limiti delle interrogazioni consulta dpkg-query; per leggere un DEB prima di installarlo consulta dpkg-deb. Il manuale di apt-get spiega simulazione e correzione delle dipendenze. Verifica anche i manuali della versione installata.




