
私は 1 年以上 Debian Wheezy を実行してきましたが、1 週間前までは問題はありませんでした。しかし、明らかな理由もなく、突然、システムは Linux カーネルが半分しか構成されていないと判断し、オンラインで見つけた修正方法はどれも機能しませんでした。その結果、apt
更新を実行するたびに修正を試みますが、失敗します。
詳細
症状
更新が実行されるたびに、apt
ある時点でカーネルの修正が試行され、失敗し、更新プロセスはエラー アドバイスとともに終了し、その後、システムが最新であることを示すメッセージが表示されます。
による更新アクティビティは、apt
次の内容で終了します。
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/dkms 3.2.0-4-amd64 /boot/vmlinuz-3.2.0-4-amd64
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.2.0-4-amd64 /boot/vmlinuz-3.2.0-4-amd64
E: /usr/sbin/update-initramfs.orig.initramfs-tools - command not found
E: On Debian based systems, update-initramfs from initramfs-tools
E: can be installed with:
E: apt-get install initramfs-tools
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
Failed to process /etc/kernel/postinst.d at /var/lib/dpkg/info/linux-image-3.2.0-4-amd64.postinst line 696.
dpkg: error processing linux-image-3.2.0-4-amd64 (--configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
linux-image-3.2.0-4-amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)
カーネル
実質的に同じ問題が、Ask Ubuntu の質問受け入れられた回答は、dpkg
ステータスファイルに問題があることを指摘しました。linux-image-3.2.0-4-amd64
半分構成されていると言いました。
最初のステップとして、私はこれを試しました:
administrator@Kwheezy:~$ sudo dpkg-reconfigure linux-image-3.2.0-4-amd64
/usr/sbin/dpkg-reconfigure: linux-image-3.2.0-4-amd64 is broken or not fully installed
再インストールしても効果がなかったので、壊れていると考えられます。
Ask Ubuntu の解決策は、dpkg
ステータス ファイルからエントリを削除して再インストールすることでした。私の場合、これもうまくいきませんでした。プロセスが完了すると、dpkg
ステータス ファイルはエントリを、まだ半分構成されていることを示す別のエントリに置き換えており、システムの動作は同じでした。
適切な出力
出力内のエラー メッセージに注目しますapt
。エラーは常に次のコードで始まります。
/usr/sbin/update-initramfs.orig.initramfs-tools - command not found
案の定、そのファイルは存在しません。インストールすることでインストールできるという親切なメッセージが表示されています。initramfs-tools
apt
すでにインストールされていたのですが、再インストールしました。すでにそれが自動的に行われていたことが判明しました。インストールのガイダンスに従って表示されるすべてのエラーメッセージinitramfs-tools
インストールの試みによって生成され、決して/usr/sbin/update-initramfs.orig.initramfs-tools
インストール中です。
まとめ
- 私は Wheezy リポジトリから入手可能な最新の Linux カーネルを持っています。これは良好なコピーであり、すべての依存関係が満たされており、他のユーザーから問題が発生したという報告はありません。
- システムは、完全に構成されていないと報告します。構成を完了する方法や、システムが構成されていないと認識しないようにする方法は見つかりませんでした。
答え1
解決
sudo apt-get remove live-tools
sudo apt-get install --reinstall initramfs-tools
sudo apt-get install -f
説明
fixer1234のシステムをよりよく理解した後チャットで、インストールされたパッケージがlive-tools
と競合していることが判明しましたinitramfs-tools
。
がインストールされている場合はlive-tools
、独自のスクリプトで上書きし/usr/sbin/update-initramfs
、オリジナルを に配置します/usr/sbin/update-initramfs.orig.initramfs-tools
。
live-tools
には、ライブ システム上にあるかどうかを検出する健全性チェックがいくつかあります。ライブ システム上になく、インストール済みシステム上にある場合は、/usr/sbin/update-initramfs.orig.initramfs-tools
initramfs を更新するための正しいスクリプトである を実行しようとします。
fixer1234 のシステムでは/usr/sbin/update-initramfs.orig.initramfs-tools
削除されていました。
このシステムはインストール型システムなので、live-tools
おそらく不要であり、削除することをお勧めします。
上記の「解決策」セクションで提案されている各手順は、次のように機能します。
sudo apt-get remove live-tools
を削除するとへのlive-tools
復元が試行されますが、が存在しないため、エラーが発生します。/usr/sbin/update-initramfs.orig.initramfs-tools
/usr/sbin/update-initramfs
/usr/sbin/update-initramfs.orig.initramfs-tools
live-tools
それでも削除され、これが重要なのです。
まだ行方不明です/usr/sbin/update-initramfs
。
sudo apt-get install --reinstall initramfs-tools
を復元するには/usr/sbin/update-initramfs
、そのファイルを提供するパッケージを再インストールします。つまり、 ですinitramfs-tools
。
sudo apt-get install -f
および の不具合によりカーネルのインストールが不完全でしたlive-tools
。initramfs-tools
インストールを完了し、すべてのパッケージの問題を解決するには、この最後の手順が必要です。
これで、完全に機能する Debian システムが完成しました。
(ちなみに、これらの手順は理論的には Debian 8、Ubuntu 12.04、Ubuntu 14.04、Ubuntu 15.10、Ubuntu 16.04、Ubuntu 16.10 で機能します。)