„E: Podproces / usr / bin / dpkg zwrócił kod błędu (1)” Co to znaczy?


31

Widziałem tę wiadomość kilka razy, gdy ktoś ma problem z instalacją, aktualizacją lub usunięciem jakiegoś oprogramowania, ale zastanawiam się, co to znaczy i, co ważniejsze, jest możliwe do rozwiązania?

(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)

(powyższe to tylko przykład, a nie mój rzeczywisty problem)


2
Jeśli spróbowałeś apt-get install (something)i dostałeś ten komunikat o błędzie tak jak ja, rozwiązaniem było dla mnie apt-get upgrade (something).
PJ Brunet,

Odpowiedzi:


30

Ta wiadomość jest ogólna. Oznacza to po prostu, że dpkginstancja wywołana przez apt/ apt-getnie powiodła się z jakiegoś powodu. Nie wyjaśnia, dlaczego, jak, ani nie daje wskazówek, jak go rozwiązać. Jako komunikat diagnostyczny nie jest użyteczny.

Musisz przeczytać wiersze przed komunikatem (czasami całkiem sporo), aby znaleźć prawdziwy błąd, który uniemożliwia ukończenie instalacji.

Tak, ale jak to rozwiązać?

Nie ma jednego sposobu na jego rozwiązanie. Jest tak wiele powodów, dla których może się tak zdarzyć, że bezcelowe jest umieszczenie ich wszystkich w jednym poście. Każda okoliczność jest prawie unikalna dla tego pakietu / środowiska.

Ale jest odkupienie. Fakt, że widzisz ten komunikat oznacza, że ​​prawdopodobnie w wierszach przed wiadomością znajdują się bardziej odpowiednie informacje. Dla celów ilustracyjnych wykorzystam przykład:

(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)

Teraz, aby znaleźć problem, musisz przeczytać wstecz:

  • E: Sub-process /usr/bin/dpkg returned an error code (1)nic mi nie mówi. Więc ruszam dalej.
  • Errors were encountered while processing: mongodb-10genpo prostu mówi mi, który pakiet ma problemy. Jest użyteczne, ale niewystarczające.
  • subprocess installed post-installation script returned error exit status 100: mówi mi to, że skrypt, który się nie powiódł, był tym postinst, który został wykonany po instalacji. Przyda się to w niektórych sytuacjach, ale nie w tej.
  • dpkg: error while cleaning up: nic przydatnego tutaj.
  • invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.BINGO! To mówi nam, że invoke-rc.dplik binarny kontrolujący skrypt init w większości systemów podobnych do Debiana, zawiódł. Nie udało się, ponieważ nie można znaleźć /etc/init.d/mongodbskryptu. To jest złe. Musimy go utworzyć lub skopiować z innego miejsca, aby znów zaczął działać. Ponowna instalacja pakietu jest również zwykle opcją dla file not foundbłędów.

    W takim przypadku zgłoszenie błędu nie jest konieczne, ponieważ jest prawdopodobne, że to my usunęliśmy skrypt, ale jeśli jesteś całkowicie pewien, że nie dotknąłeś pliku ( debsums -slapowinien to potwierdzić), zgłoś błąd.

Więc czego dokładnie potrzebujesz, aby uzyskać pomoc? Idealnie, pełny wynik problemu. Pomocne jest również dołączenie danych wyjściowych sudo dpkg -Ci sudo apt-get checkoraz danych wyjściowych, w apt-cache policy package1 package2...których „pakiet1 pakiet2 ...” obejmuje wszystkie pakiety z problemami.


jako komunikat diagnostyczny jest pomocny, jeśli przeczytasz cały błąd (Napotkano błędy podczas przetwarzania: mongodb-10gen), dlatego jest wymieniony jako E, a nie Błąd
mchid

1
@mchid, ale co spowodowało błąd? Nie daje ci niewidzących wskazówek.
Braiam

@mchid tak, jak mogę dowiedzieć się, że po prostu czytam Errors were encountered while processing: mongodb-10gen? W tej chwili, aby rozwiązać problem, ta linia jest bezwartościowa .
Braiam

Mój zły, myślałem, że po prostu szukasz sposobu na rozwiązanie problemu („czy można to rozwiązać”) Chyba wyjąłem to z kontekstu.
mchid

BTW, uruchom, sudo touch /etc/init.d/mongodba następnie uruchom, sudo apt-get purge mongodb-10genaby rozwiązać problem. Testowałem to i tak długo, jak plik istnieje (/etc/init.d/mongodb) dpkg będzie kontynuował, nawet jeśli plik jest pusty, co robi dotyk (tworzy pusty plik).
mchid
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.