web-dev-qa-db-ja.com

「E:サブプロセス/ usr / bin / dpkgがエラーコード(1)を返しました」「これはどういう意味ですか?

ソフトウェアのインストール、アップグレード、または削除で問題が発生するたびにこのメッセージが何度か表示されましたが、それはどういう意味ですかであり、さらに重要なことに、それを解決することはできますか?

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

(上記は単なる例であり、実際の問題ではありません)

31
Braiam

そのメッセージは一般的なものです。これは、dpkg/_apt-get_によって呼び出されたaptインスタンスが何らかの理由で失敗したことを意味します。理由、方法、解決方法のヒントについては説明されていません。診断メッセージとしては役に立ちません。

インストールの完了を妨げる実際のエラーを見つけるために、メッセージの前の行(場合によってはかなりの数の行)を読む必要があります。

うん、でもどうやってそれを解決するの?

それを解決する単一の方法はありません。これが発生する理由はたくさんあるので、それらすべてを1つの投稿にリストするのは無意味です。それぞれの状況は、そのパッケージ/環境に固有のものです。

しかし、償還があります。このメッセージが表示されるという事実は、おそらくメッセージの前の行に、より関連性の高い情報があることを意味します。説明のために、例を使用します。

_(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._ビンゴ!これは、ほとんどのDebianのようなシステムでinitスクリプトを制御するバイナリである_invoke-rc.d_が失敗したことを示しています。 _/etc/init.d/mongodb_スクリプトが見つからなかったため、失敗しました。これは悪いです。それを作成するか、別の場所からコピーして、再び機能するようにする必要があります。通常、パッケージの再インストールも_file not found_エラーのオプションです。

    この場合、スクリプトを削除したのは私たちである可能性が高いため、バグを報告する必要はありませんが、ファイルに触れなかったことが完全に確かである場合(debsums -sla_で確認する必要があります)、バグ。

では、具体的にどのような支援が必要ですか?理想的には、問題の完全な出力。 _Sudo dpkg -C_および_Sudo apt-get check_の出力、および_apt-cache policy package1 package2..._の出力を含めると便利です。ここで、「package1 package2 ...」には問題のあるすべてのパッケージが含まれています。

30
Braiam