"E: Підпроцес / usr / bin / dpkg повернув код помилки (1)" Що це означає?


31

Я бачив це повідомлення кілька разів, коли у когось виникає проблема з встановленням, оновленням або видаленням якогось програмного забезпечення, але мені цікаво, що це означає , і що ще важливіше, чи можна його вирішити?

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

(вищезгадане - лише приклад, а не моя реальна проблема)


2
Якщо ви спробували, apt-get install (something)і ви отримали це повідомлення про помилку, як я, рішення для мене було apt-get upgrade (something).
PJ Brunet

Відповіді:


30

Це повідомлення є загальним. Це просто означає, що dpkgекземпляр, викликаний apt/ apt-getпошкоджений з якоїсь причини. Це не пояснює, чому, як, чи дає підказки, як це вирішити. Як діагностичне повідомлення, це не корисно.

Вам потрібно прочитати рядки перед повідомленням (іноді їх досить багато), щоб знайти справжню помилку, яка заважає завершити інсталяцію.

Так, але як це вирішити?

Єдиного способу вирішити це не існує. Є так багато причин, чому це може статися, що марно намагатись перелічити їх усіх в одному дописі. Кожна обставина майже унікальна для цього пакету / середовища.

Але, є викуп. Той факт, що ви бачите це повідомлення, означає, що, ймовірно, в рядках перед повідомленням є більш відповідна інформація. Для наочності я використаю приклад:

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

Тепер, щоб знайти проблему, вам потрібно прочитати назад:

  • E: Sub-process /usr/bin/dpkg returned an error code (1)не каже мені нічого корисного. Тож рухаємось далі.
  • Errors were encountered while processing: mongodb-10genпросто каже мені, з яким пакетом є проблеми. Корисно, але недостатньо.
  • subprocess installed post-installation script returned error exit status 100: це говорить мені, що не вдалося виконати сценарій, той postinst, що виконується після встановлення. Це стане в нагоді в деяких ситуаціях, але не в цій.
  • dpkg: error while cleaning up: тут нічого корисного.
  • invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.БІНГО! Це говорить нам про те invoke-rc.d, що бінарний файл, який керує скриптом init у більшості Debian-подібної системи, не вдався. Не вдалося, оскільки не вдалося знайти /etc/init.d/mongodbсценарій. Це погано. Нам потрібно створити його або скопіювати з іншого місця, щоб він знову почав працювати. Перевстановлення пакету також зазвичай є file not foundпомилкою.

    У цьому випадку повідомляти про помилку не потрібно, тому що ймовірно, що ми видалили сценарій, але якщо ви повністю впевнені, що ви не торкнулися файлу ( debsums -slaслід підтвердити це), тоді повідомте про помилку.

Отже, що саме вам потрібно для отримання допомоги? В ідеалі повний висновок проблеми. Також корисно включити вихід sudo dpkg -Cі sudo apt-get check, а вихід, apt-cache policy package1 package2...де "package1 package2 ..." включає всі пакети з проблемами.


як діагностичне повідомлення корисно, якщо ви читаєте всю помилку (помилки виникали під час обробки: mongodb-10gen), тому вона
зазначається

1
@mchid, але що спричинило помилку? Це не дає тобі прицільної підказки.
Брайам

@mchid так, як я можу зрозуміти, що щойно читаю Errors were encountered while processing: mongodb-10gen? Як і зараз, для вирішення проблеми ця лінія марна .
Брайам

Дуже погано, я думав, що ти просто шукаєш, як виправити проблему ("чи можна її вирішити"). Я думаю, я вивів це з контексту.
мчід

BTW, запустіть sudo touch /etc/init.d/mongodbта запустіть, sudo apt-get purge mongodb-10genщоб вирішити проблему. Я перевірив це, і поки файл існує (/etc/init.d/mongodb), dpkg триватиме, навіть якщо файл порожній, що стосується дотику (створює порожній файл).
мчід
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.