Ho visto questo messaggio diverse volte ogni volta che qualcuno ha un problema con l'installazione, l'aggiornamento o la rimozione di un software, ma mi chiedo, cosa significa e, soprattutto, è possibile risolverlo?
(Reading database ... 81657 files and directories currently installed.)
Removing mongodb-10gen ...
arg: remove
invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
dpkg: error processing mongodb-10gen (--remove):
subprocess installed pre-removal script returned error exit status 100
invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
dpkg: error while cleaning up:
subprocess installed post-installation script returned error exit status 100
Errors were encountered while processing:
mongodb-10gen
E: Sub-process /usr/bin/dpkg returned an error code (1)
(quello sopra è solo un esempio, non il mio vero problema)
Risposta accettata:
Quel messaggio è generico. Significa solo che il dpkg
istanza chiamata da apt
/apt-get
fallito per qualche motivo. Non spiega perché, come o fornisce suggerimenti su come risolverlo. Come messaggio diagnostico, non è utile.
È necessario leggere le righe prima del messaggio (a volte parecchie) per trovare il vero errore che impedisce di completare l'installazione.
Sì, ma come risolvo?
Non esiste un unico modo per risolverlo. Ci sono così tante ragioni per cui ciò può accadere che è inutile tentare di elencarle tutte in un unico post. Ogni singola circostanza è quasi unica per quel pacchetto/ambiente.
Ma c'è la redenzione. Il fatto che visualizzi questo messaggio significa che probabilmente ci sono informazioni più rilevanti nelle righe prima del messaggio. A scopo illustrativo userò un esempio:
(Reading database ... 81657 files and directories currently installed.)
Removing mongodb-10gen ...
arg: remove
invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
dpkg: error processing mongodb-10gen (--remove):
subprocess installed pre-removal script returned error exit status 100
invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
dpkg: error while cleaning up:
subprocess installed post-installation script returned error exit status 100
Errors were encountered while processing:
mongodb-10gen
E: Sub-process /usr/bin/dpkg returned an error code (1)
Ora, per trovare il problema, devi leggere al contrario:
-
E: Sub-process /usr/bin/dpkg returned an error code (1)
non mi dice niente di utile Quindi avanti. -
Errors were encountered while processing: mongodb-10gen
mi dice solo quale pacchetto ha problemi. È utile ma non sufficiente. -
subprocess installed post-installation script returned error exit status 100
:questo mi dice che lo script che ha fallito era ilpostinst
, quello eseguito in post-installazione. Questo sarà utile in alcune situazioni, ma non in questa. -
dpkg: error while cleaning up:
niente di utile qui. -
invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
BINGO! Questo ci dice cheinvoke-rc.d
, un binario che controlla lo script init nella maggior parte dei sistemi simili a Debian, ha fallito. Non è riuscito perché non è stato possibile trovare il/etc/init.d/mongodb
sceneggiatura. Questo non va bene. Dobbiamo crearlo o copiarlo da qualche altra parte in modo che ricominci a funzionare. Anche la reinstallazione del pacchetto è normalmente un'opzione perfile not found
errori.In questo caso non è necessario segnalare un bug perché è probabile che siamo stati noi a rimuovere lo script, ma se sei completamente sicuro di non aver toccato il file (a
debsums -sla
dovrebbe confermarlo) quindi segnalare un bug.
Quindi, di cosa hai bisogno esattamente per ottenere aiuto? Idealmente, l'output completo del problema. È anche utile includere l'output di sudo dpkg -C
e sudo apt-get check
e l'output di apt-cache policy package1 package2...
dove “pacchetto1 pacchetto2 …” include tutti i pacchetti con problemi.