Risolvere gli errori nell'elaborazione del terminale di Linux Ubuntu

In questa pagina
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:

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.

