長い話 を短くするために、私が取り除こうとしている少数の望ましくない、半分設定された画像パッケージに固執しています:
$ dpkg -l |grep linux-im
iF linux-image-3.13.0-100-generic 3.13.0-100.147 i386 Linux kernel image for version 3.13.0 on 32 bit x86 SMP
iF linux-image-3.13.0-101-generic 3.13.0-101.148 i386 Linux kernel image for version 3.13.0 on 32 bit x86 SMP
iF linux-image-3.13.0-92-generic 3.13.0-92.139 i386 Linux kernel image for version 3.13.0 on 32 bit x86 SMP
iF linux-image-3.13.0-93-generic 3.13.0-93.140 i386 Linux kernel image for version 3.13.0 on 32 bit x86 SMP
iF linux-image-3.13.0-96-generic 3.13.0-96.143 i386 Linux kernel image for version 3.13.0 on 32 bit x86 SMP
iH linux-image-extra-3.13.0-100-generic 3.13.0-100.147 i386 Linux kernel extra modules for version 3.13.0 on 32 bit x86 SMP
iH linux-image-extra-3.13.0-101-generic 3.13.0-101.148 i386 Linux kernel extra modules for version 3.13.0 on 32 bit x86 SMP
iH linux-image-extra-3.13.0-92-generic 3.13.0-92.139 i386 Linux kernel extra modules for version 3.13.0 on 32 bit x86 SMP
iH linux-image-extra-3.13.0-93-generic 3.13.0-93.140 i386 Linux kernel extra modules for version 3.13.0 on 32 bit x86 SMP
iH linux-image-extra-3.13.0-96-generic 3.13.0-96.143 i386 Linux kernel extra modules for version 3.13.0 on 32 bit x86 SMP
私の32ビット14.04システムはカーネルのみを担当するOpenVZコンテナーに存在するため、これらのイメージは実際には役に立ちません。あなたが見ることができるように、はるかに古いもの:
$ uname -r
2.6.32-042stab116.2
したがって、定期的なアップグレード後にoldカーネルイメージを削除する方法に焦点を当てた同様の質問とは異なり、ここでやろうとしているのはCOMPLETELY PURGEこれらすべての3.13パッケージ。そもそも存在しないはずです。
これまでの私の試みの要約です。
パッケージを通常の方法(apt-get
、apt
、aptitude
、重要ではない)で削除/パージしようとしても、明らかに悪循環のため、動作しないようです。
Sudo apt-get purge linux-image-3.13.0-100-generic linux-image-3.13.0-101-generic linux-image-3.13.0-92-generic linux-image-3.13.0-93-generic linux-image-3.13.0-96-generic linux-image-extra-3.13.0-100-generic linux-image-extra-3.13.0-101-generic linux-image-extra-3.13.0-92-generic linux-image-extra-3.13.0-93-generic linux-image-extra-3.13.0-96-generic
output からわかるように、実際には何も削除されません。一方、aptitude
は、もう少し先に進んでいます。
Sudo aptitude purge linux-image-3.13.0-100-generic linux-image-3.13.0-101-generic linux-image-3.13.0-92-generic linux-image-3.13.0-93-generic linux-image-3.13.0-96-generic linux-image-extra-3.13.0-100-generic linux-image-extra-3.13.0-101-generic linux-image-extra-3.13.0-92-generic linux-image-extra-3.13.0-93-generic linux-image-extra-3.13.0-96-generic
このプロセス の終わりに、*image-3.13*
と/boot
に通常見られる一致するファイルとフォルダーとともに/lib/modules
がなくなりますが、image-extra
sは、まだインストールされていないとして報告されます(dpkg -L
...によって検証されるように、ファイルが含まれていないように見えても)
さらに、この段階でパージを繰り返すと、aptが/boot
および/lib/modules
のファイル/フォルダーの欠落について不平を言うため、依存関係が壊れています。 ここで推奨 のように、ダミーファイルを予想される場所に配置しようとしましたが、最終的には元のエラーに遭遇しました。以下が重要な抜粋だと思います:
[...]
Removing linux-image-extra-3.13.0-101-generic (3.13.0-101.148) ...
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 3.13.0-101-generic /boot/vmlinuz-3.13.0-101-generic
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.13.0-101-generic /boot/vmlinuz-3.13.0-101-generic
update-initramfs: Generating /boot/initrd.img-3.13.0-101-generic
E: /usr/share/initramfs-tools/hooks/fixrtc failed with return 1.
update-initramfs: failed for /boot/initrd.img-3.13.0-101-generic with 1.
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
dpkg: error processing package linux-image-extra-3.13.0-101-generic (--purge):
subprocess installed post-removal script returned error exit status 1
[...]
試みた後、失敗しました おそらく核オプション :
Sudo dpkg --remove --force-remove-reinstreq package_name
アイデアが尽きました。
とすれば:
linux-image-3.13.0-XXX-generic
は正常に削除されましたlinux-image-extra-3.13.0-XXX-generic
はまだ半分インストールされていると報告されますimage-extra
sに依存しません次に、可能性のあるアプローチは、 ここで推奨 のように、dpkg
データベースからそれらのダングリングエントリを強制的にパージすることです。
注意:これは、ハッキングされた低レベルの潜在的に危険な操作です。
$ dpkg -L linux-image-extra-3.13.0-XXX-generic
を試してください)、削除します/var/lib/dpkg/status
を開き、dpkgに忘れさせたいパッケージを説明するテキストブロックを見つけて削除します。dpkg
およびすべてのapt
関連のプログラムが通常に戻ります。ls /boot
を実行すると、いくつかのvmlinuz-X.XX.XX
ファイルが表示されるはずです。それぞれapt-get purge linux-image-X.XX.XX-generic
を実行しますが、削除しないでください実行中のカーネル。 uname -r
でどれを確認できます。
Bashスクリプトで次を使用して、アクティブカーネル以外のすべてを破棄します。
dpkg -l linux-* | awk '/^ii/{ print $2}' | grep -v -e "$(uname -r | cut -f1,2 -d"-")" | grep -e "[0-9]" | grep -E "(image|headers)" | xargs Sudo apt-get -y purge
呼び出した内容に非常に近いですが、おそらくdpkg
が必要な違いです。
興味があればスクリプトの完全なセットはここにあります:
https://github.com/mtompkins/linux-kernel-utilities