Dpkg が何らかのアクションでハングする

Dpkg が何らかのアクションでハングする

選択したアクションに関係なく、dpkgRaspberry Pi 2 でハングします。マシン全体がフリーズしますが、たとえば、htop別のウィンドウで既に開かれている場合は、動作し続けます。

のようなコマンドをほとんど試しましたdpkg --configure -aが、システム全体をリセットするのは避けたいです。straceログは pastebin には長すぎますが、2 行で数千回終了します。

pselect6(16, [0 13 15], NULL, NULL, {tv_sec=0, tv_nsec=50000000}, {[], 8}) = 0 (Timeout)
wait4(3278, 0x7ea6c884, WNOHANG, NULL)  = 0

誰か助けてくれませんか?

答え1

dpkg は子プロセスを待機しています。wait4() システムコールにあることからそれがわかります。ハングしているのは彼ではなく、子プロセス、おそらく構成スクリプトです。

何が起こっているか確認する

pstree -pa

これを strace します。優れた Linux ユーザーであれば、lsof コマンドも賢く使用できると思います。strace には -f フラグもあり、これを使用すると子プロセスもトレースできます。

不良パッケージの削除を可能にするために、構成スクリプトを手動で修正することも役立ちます。

使用しようとするほとんどの dpkg/apt コマンドは、おそらくシステム上で現在構成されていないパッケージを構成しようとしているため、常にこの不良またはバグのある構成スクリプトに遭遇することになります。

syslogd は実行されていますか? 構成スクリプトによって呼び出されるツールが、syslogd が利用できないことを受け入れられない場合があります。

設定スクリプトは /var/lib/dpkg/info にあります。私はただ黙っているだけです。特にひどいものを見つけた場合は、修正プログラムとして削除する方が簡単ですが、私は本当に黙っています。

関連情報