← Tutti gli articoliGuide

Risolvere gli errori nell'elaborazione del terminale di Linux Ubuntu

Logo di Ubuntu su sfondo azzurro

In seguito all’uscita e quindi all’aggiornamento dei nostri sistemi a Ubuntu 16.04, è possibile che si riscontrino alcuni errori quando si cerca di installare pacchetti dal terminale usando il comando da bash:

sudo apt-get install nome_pacchetto

Il messaggio d’errore

In particolare, nel mio caso stavo cercando di installare git ed ho ottenuto questo messaggio di errore:

Terminale Ubuntu con gli errori di dpkg nell’elaborazione dei pacchetti runit e git-daemon-run

Un altro errore comune, molto simile, è il seguente:

Lettura elenco dei pacchetti... Fatto Generazione albero delle dipendenze        Lettura informazioni sullo stato... Fatto build-essential is already the newest version (12.1ubuntu2). 0 aggiornati, 0 installati, 0 da rimuovere e 55 non aggiornati. 2 non completamente installati o rimossi. Dopo quest'operazione, verranno occupati 0 B di spazio su disco. Continuare? [S/n] S Configurazione di runit (2.1.2-3ubuntu1)... start: Impossibile connettersi a Upstart: Failed to connect to socket /com/ubuntu/upstart: Connessione rifiutata dpkg: errore nell'elaborare il pacchetto runit (--configure):  il sottoprocesso installato script di post-installation ha restituito lo stato di errore 1 dpkg: problemi con le dipendenze impediscono la configurazione di git-daemon-run:  git-daemon-run dipende da runit; comunque:   Il pacchetto runit non è ancora configurato. dpkg: errore nell'elaborare il pacchetto git-daemon-run (--configure):  problemi con le dipendenze - lasciato non configurato Segnalazione apport non scritta poiché il messaggio di errore indica la presenza di un fallimento precedente.                                       Si sono verificati degli errori nell'elaborazione:  runit  git-daemon-run E: Sub-process /usr/bin/dpkg returned an error code (1)

Come risolverlo

Fortunatamente, la risoluzione del problema è facile e veloce. Basta eseguire, in ordine, le seguenti istruzioni ricordandoci di sostituire git con il nome del package con cui stiamo riscontrando l’errore.

sudo apt-get purge runit
sudo apt-get purge git-all
sudo apt-get purge git
sudo apt-get autoremove
sudo apt update
sudo apt install git

Perché funziona

In questo modo avremo sbloccato il terminale e saremo in grado di terminare correttamente la procedura di installazione. Ripetiamo quindi il comando install che inizialmente restituiva l’errore. ????

Domande frequenti

Cosa significa «Sub-process /usr/bin/dpkg returned an error code (1)»?

Che dpkg non è riuscito a completare la configurazione di un pacchetto e lo ha lasciato a metà. Finché quel pacchetto resta in quello stato, apt si rifiuta di installare qualsiasi altra cosa: è il motivo per cui l'errore sembra riguardare il programma che stavi installando, mentre la causa è un altro pacchetto rimasto appeso.

La procedura vale anche su versioni più recenti di Ubuntu o su Debian?

Il meccanismo sì: si individua il pacchetto rimasto a metà, lo si rimuove con purge, si ripulisce con autoremove e si reinstalla. Cambia il nome del pacchetto colpevole, che nel mio caso era runit. Il caso specifico legato a Upstart è raro sulle versioni moderne, che usano systemd.

Con purge rischio di perdere dei dati?

purge rimuove il pacchetto e i suoi file di configurazione di sistema, non i tuoi documenti. L'attenzione va posta sui pacchetti che custodiscono configurazioni che ti servono — un database, un server web — perché lì la configurazione è lavoro tuo. Per un pacchetto come git non c'è niente da perdere.