Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati


Guida verificata con Ubuntu: 20.04 22.04 24.04

Problemi in questa pagina? Segnalali in questa discussione

Introduzione

In questa guida viene schematicamente presentato DPKG (Debian PacKaGe), il sistema di gestione dei pacchetti di livello più basso predefinito in Ubuntu.

Verranno descritti i comandi contenuti nei pacchetti dpkg e dpkg-repack.

Cenni storici

Ai primordi della distribuzione Debian, i programmi venivano distribuiti tramite semplici file archivio .tar.gz. Al pari di altre GNU/Linux dell'epoca, gli utenti dovevano compilare manualmente ogni software che desideravano installare sui propri sistemi. Si rese necessario, quindi, implementare un metodo per gestire efficacemente i pacchetti installati sul sistema.

DPKG ha rappresentato il primo passo fondamentale per gestire i pacchetti in Debian. Creato da Ian Murdock nel gennaio 1994 come semplice script per la shell, è stato successivamente traslato interamente in linguaggio Perl da Iarl Streeter, Matt Welsh e lo stesso Ian Murdock. Nello stesso anno, Ian Jackson ha poi curato la riscrittura in linguaggio C della parte principale del codice, conferendo a DPKG la sua forma attuale.

Sebbene oggi DPKG sia considerato uno strumento di basso livello, soppiantato nell'uso quotidiano da tool più evoluti come APT, rimane uno strumento prezioso per la risoluzione di problematiche complesse del sistema dei pacchetti.

Installazione

Il pacchetto dpkg è preinstallato nel sistema.
Per implementare il suo funzionamento installare il pacchetto dpkg-dev.

Comandi

Tutti i comandi di dpkg e quelli correlati che prevedono modifiche al sistema (installazione, rimozione, riparazione di pacchetti, ecc.) necessitano dei privilegi di amministrazione. Per l'installazione è pure richiesto lo scaricamento preventivo nella propria Home del pacchetto, o dei pacchetti, che si desidera installare.

Installazione e rimozione pacchetti

Di seguito vengono elencati i comandi più comuni per l'installazione e la rimozione dei pacchetti dal sistema:

Comandi

dpkg -i nome_pacchetto

Installa un nuovo pacchetto.

dpkg --configure nome_pacchetto

Prova a riconfigurare un pacchetto installato con errori.

dpkg --configure -a

Prova a riconfigurare l'insieme dei pacchetti installati con errori.

dpkg -r nome_pacchetto

Rimuove un pacchetto senza rimuovere i relativi file di configurazione.

dpkg -P nome_pacchetto

Rimuove un pacchetto, compresi tutti i file di configurazione.

Per un elenco completo dei comandi e delle opzioni disponibili per dpkg, digitare nel terminale:

man dpkg

Ricerca pacchetti o file

In questa sezione vengono elencati alcuni comandi utili alla ricerca dei pacchetti all'interno del database e delle informazioni riguardanti il contenuto di essi.

Comandi

dpkg -l nome_pacchetto_nel_pattern

Lista dei pacchetti individuati dalla stringa di ricerca.

dpkg -S nome_file

Dato un file, mostra il pacchetto che ha provveduto alla sua installazione nel sistema.

dpkg -L nome_pacchetto

Lista dei file presenti nel pacchetto.

dpkg-query --showformat='${binary:Package}\n' --show

Lista dei pacchetti che compongono il sistema.

Forzature per sbloccare aggiornamenti

Questi comandi servono per forzare la rimozione o la reinstallazione dei pacchetti in caso di blocco dell'aggiornamento del sistema. Si raccomanda di usarli solo in caso di effettiva necessità.

Comandi

dpkg --force-remove-reinstreq -i nome_pacchetto da reinstallare

Forza la rimozione uno o più pacchetti installati preimpostando la reinstallazione. Per il corretto uso leggere questa sezione.

dpkg --force-downgrade nome pacchetto

Sostituisce un pacchetto con una versione precedente.

dpkg --force-configure-any nome pacchetto

Configura qualsiasi pacchetto che potrebbe essere di aiuto a installare il pacchetto.

Rimpacchettare i pacchetti installati

Questa procedura può rivelarsi utile per copiare da un sistema ad un altro dei pacchetti non più disponibili da fonti terze, oppure per convertirli in un'architettura differente ove possibile.

  1. Installare il pacchetto dpkg-repack.

  2. A seconda dei casi:
    • Per creare il pacchetto digitare nel terminale il seguente comando:

      dpkg-repack <nome pacchetto>
    • Per creare un pacchetto e convertirlo nell'architettura desiderata, digitare nel terminale il seguente comando:

      dpkg-repack --arch=<arch> <nome pacchetto>

      sostituendo «nome pacchetto» con il nome del pacchetto da rimpacchettare e «arch» con «i386» per convertire a 32 bit oppure con «amd64» per convertire a 64 bit. È inoltre possibile listare i nomi di più pacchetti separati da uno spazio.

Installazione pacchetti

Questa procedura di installazione è utile per installare uno o più pacchetti salvati nel sistema in formato di file .deb (ad esempio dopo averli scaricati da Internet da fonti terze oppure salvati da un precedente backup). Non gestendo le eventuali dipendenze richieste, può talvolta richiedere un comando integrativo con apt.

  1. Per installare il pacchetto .deb digitare nel terminale il seguente comando:

    sudo dpkg -i /percorso/pacchetto.deb

    sostituendo /percorso/pacchetto.deb con il nome del file .deb completo di percorso.

    Qualora il terminale sia aperto nella stessa cartella dove è stato salvato il file, è possibile omettere il percorso completo, anteponendo ./ al nome del file.

    Qualora invece si abbia necessità di installare più file .deb presenti in una determinata cartella, per installarli tutti insieme sarà sufficiente:

    sudo dpkg -i *.deb

    Il comando precedente installa tutti i pacchetti presenti nella directory. Quindi occorre essere sicuri che siano presenti soltanto il/i pacchetto/i che si vuole effettivamente installare. Se necessario è possibile creare una cartella apposita contenente i pacchetti desiderati, quindi spostarsi all'interno di essa.

  2. Se l'installazione termina indicando problemi di dipendenze, digitare inoltre il comando:

    sudo apt install -f

Per ulteriori metodi di installazione di singoli file .deb consultare questo paragrafo.

Esempi di sblocco pacchetti

Quelli che seguono sono alcuni esempi di comandi utili per sbloccare un sistema con uno o più pacchetti bloccati, a causa di installazioni e/o aggiornamenti non andati a buon fine o bloccati.

Le seguenti procedure possono richiedere di usare congiuntamente comandi di dpkg, di apt e di rm.

Sostituire nei comandi seguenti «<nomepacchetto>» con il nome del pacchetto di proprio interesse.

L'uso di queste procedure è sconsigliato nella gestione corrente del sistema. Un uso scorretto potrebbe causare dei danni irrimediabili al sistema.

Durante l'esecuzione delle procedure seguenti, alcuni comandi potrebbero mostrare degli avvisi relativi a rischi di danni al sistema. Trascurare tali avvisi e non eseguire comandi diversi da quelli indicati.

Ripulire configurazioni residue

Consultare questo paragrafo.

Sblocco pacchetto bloccato tramite rimozione

Questa procedura serve a sbloccare i pacchetti tramite rimozione forzata.

  1. Ripulire la lista dei sorgenti del pacchetto:

    sudo rm -r /var/lib/apt/lists/*
  2. Ripulire la lista file dei metadati del pacchetto:

    sudo rm -r /var/lib/app-info/yaml/*
  3. Rimuovere le informazioni del pacchetto:

    sudo rm /var/lib/dpkg/info/<nomepacchetto>*
  4. Riconfigurare il sistema pacchetti:

    sudo dpkg --configure -a
  5. Aggiornare il database dei pacchetti:

    sudo apt update
  6. Aggiornare il sistema:

    sudo apt full-upgrade

Sblocco pacchetto danneggiato con reinstallazione

Questa procedura serve per sbloccare i pacchetti tramite reinstallazione forzata.

  • Per i pacchetti disponibili nei repository ufficiali o di terze parti:

    1. Rimuovere le informazioni del pacchetto:

      sudo rm /var/lib/dpkg/info/<nomepacchetto>*
    2. Forzare rimozione a scopo reinstallazione:

      sudo dpkg --remove --force-remove-reinstreq <nomepacchetto>
    3. Aggiornare il database dei pacchetti:

      sudo apt update
    4. Reinstallare il pacchetto rimosso:

      sudo apt install --reinstall <nomepacchetto>
  • Per i pacchetti scaricati manualmente, è sufficiente copiare il pacchetto .deb interessato nella directory /var/cache/apt/archives (sede della cache di apt) e reinstallarlo.

Forzare la corretta installazione

Questa procedura serve a reinstallare i pacchetti male installati.

  1. Rimuovere la cache delle password:

    sudo rm /var/cache/debconf/passwords.dat
  2. Rimuovere la cache dei templates:

    sudo rm /var/cache/debconf/templates.dat
  3. Forzare la sovrascrittura dei contenuti del pacchetto:

    sudo dpkg -i --force-overwrite /var/cache/apt/archives/<nome-pacchetto-versione_architettura.deb>

    sostituendo <nome-pacchetto-versione_architettura.deb> con l'intera dicitura identificativa del pacchetto.

  4. Correggere eventuali problemi nel sistema pacchetti:

    sudo apt install -f

Pacchetti aggiuntivi

Pacchetti come deborphan, debfoster e kleansweep, con le loro relative funzioni, possono risultare utili alla scopo di mantenere il sistema pulito e a rimuovere i pacchetti orfani (cioè non più utili a soddisfare dipendenze di altri pacchetti). Per maggiori informazione consultare i manuali dei relativi programmi.

L'uso di queste applicazioni è sconsigliato agli utenti meno esperti. Un uso non corretto potrebbe causare dei danni irrimediabili al sistema.

Digitazione rapida dei comandi comuni

La riga di comando è uno strumento molto potente. Tuttavia per alcuni utenti potrebbe risultare scomodo digitare comandi anche lunghi oppure memorizzarli. Di seguito sono quindi descritti alcune semplici e utili funzioni di Bash, shell predefinita nella linea di comando di Ubuntu.

  • Cronologia: digitando i tasti direzionali superiore e inferiore sarà possibile accedere ai comandi digitati di recente. Questa funzionalità risulterà pertanto utile, ad esempio, se si esegue di frequente l'aggiornamento del sistema da terminale.

  • Comandi rapidi: è possibile rinominare i comandi più lunghi con altri più corti scelti dall'utente (ad esempio: dki invece di sudo dpkg --install). A tale fine modificare con un editor di testo il file ~/.bashrc, inserendo alla fine del testo delle righe come nel seguente esempio:

    alias dkp='dpkg-repack'
    alias dki='sudo dpkg --install'
    alias dkr='sudo dpkg --purge'
    alias dkp='sudo dpkg --remove'.

Ulteriori risorse


CategoryAmministrazione