"E: Il processo secondario / usr / bin / dpkg ha restituito un codice di errore (1)" Cosa significa?


31

Ho visto questo messaggio più 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)

(quanto sopra è solo un esempio, non il mio vero problema)


2
Se hai provato apt-get install (something)e hai ricevuto questo messaggio di errore come ho fatto io, la soluzione per me era apt-get upgrade (something).
PJ Brunet,

Risposte:


30

Quel messaggio è generico. Significa solo che l' dpkgistanza chiamata da apt/ apt-getfallita per qualche motivo. Non spiega perché, come o dare suggerimenti su come risolverlo. Come messaggio diagnostico, non è utile.

Devi leggere le righe prima del messaggio (a volte un bel po 'di esse) per trovare il vero errore che ti impedisce di completare l'installazione.

Sì, ma come posso risolverlo?

Non esiste un solo modo per risolverlo. Ci sono così tanti motivi per cui questo può accadere che è inutile tentare di elencarli tutti in un singolo post. Ogni circostanza è quasi unica per quel pacchetto / ambiente.

Ma c'è redenzione. Il fatto che visualizzi questo messaggio significa che probabilmente ci sono informazioni più pertinenti 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 andiamo avanti.
  • Errors were encountered while processing: mongodb-10genmi dice solo quale pacchetto ha problemi. È utile ma non abbastanza.
  • subprocess installed post-installation script returned error exit status 100: questo mi dice che lo script che ha fallito era il postinst, quello eseguito in post-installazione. Ciò sarà utile in alcune situazioni, ma non in questo.
  • dpkg: error while cleaning up: niente di utile qui.
  • invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.BINGO! Questo ci dice che invoke-rc.d, un binario che controlla lo script init nella maggior parte dei sistemi simili a Debian, non è riuscito. Non è riuscito perché non è stato possibile trovare la /etc/init.d/mongodbsceneggiatura. Questo non va bene. Dobbiamo crearlo o copiarlo da qualche altra parte in modo che ricomincia a funzionare. Anche la reinstallazione del pacchetto è normalmente un'opzione per gli file not founderrori.

    In questo caso, non è necessario segnalare un bug perché è probabile che siamo stati noi a rimuovere lo script, ma se si è completamente sicuri di non aver toccato il file (è debsums -slanecessario confermarlo), quindi segnalare un bug.

Quindi, di cosa hai bisogno esattamente per ottenere aiuto? Idealmente, l'output completo del problema. E 'anche utile per includere l'output di sudo dpkg -Ce sudo apt-get check, e l'uscita di apt-cache policy package1 package2...dove "pacchetto1 pacchetto2 ..." include tutti i pacchetti con problemi.


come messaggio diagnostico È utile se leggi l'intero errore (si sono verificati errori durante l'elaborazione: mongodb-10gen) ecco perché è elencato come E e non errore
mchid

1
@mchid ma cosa ha causato l'errore? Non ti dà la chiave della vista.
Braiam,

@mchid sì, come posso capire che se ho appena letto Errors were encountered while processing: mongodb-10gen? Così com'è, per risolvere il problema, quella linea è inutile .
Braiam,

Mio male, pensavo fossi solo alla ricerca di come risolvere il problema ("è possibile risolverlo") Immagino di averlo rimosso dal contesto.
mchid

A proposito, esegui sudo touch /etc/init.d/mongodbe quindi esegui sudo apt-get purge mongodb-10genper risolvere il problema. Ho provato questo e finché esiste il file (/etc/init.d/mongodb) dpkg procederà anche se il file è vuoto, che è ciò che tocca (crea un file vuoto).
mchid
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.