誰かがいくつかのソフトウェアをインストール、アップグレード、または削除するのに問題があるたびに、このメッセージは何度も表示されますが、知りたいのですが。どういう意味ですか、そしてもっと重要なことはそれを解決することができますか?
(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)
(上記は一例であり、実際の質問ではありません)
答え1
メッセージは普遍的です。これは、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
)、バグを報告してください。
それでは、助けを得るために正確に何が必要ですか?理想的には問題の完全な出力です。 "package1 package2 ..."sudo dpkg -C
の出力に問題のすべてのパッケージが含まれている場合にも役立ちます。sudo apt-get check
apt-cache policy package1 package2...