web-dev-qa-db-ja.com

複数のカーネルパッケージの削除には非常に長い時間がかかります

私はUbuntu 14.04を使用していますが、削除したい古いカーネルがたくさんあります。

この質問 はそれらを見つけて削除するのに役立ちますが、問題があります:

dpkgは、単一のカーネルを削除するたびに、/etc/kernel/postinst.d/zz-update-grubおよびupdate-initramfsを実行します現在残っているすべてのカーネル

その結果、アンインストールには永遠に時間がかかります!

すべてのパッケージを一度に削除し、最後にupdate-grubを1回実行したい。不要な手順を無効にするにはどうすればよいですか?

unattended-upgradesを使用します。おそらく、それがこの状況に陥った理由です。)

2
joeytwiddle

ここに私がやったことがあります:

  1. ファイル/usr/sbin/grub-mkconfigを(ルートとして)編集し、次の行を上部に追加します:(*)

    exit 0
    
  2. 次に、リンクされた質問で提案されているように、apt-get purgeまたはdpkg -Pを実行して、不要なパッケージを削除します。たとえば、私は走った:

    Sudo apt-get purge $(dpkg --list | grep -E 'linux-(image|signed-image|headers)' | awk '{ print $2 }' | sort -V | grep -vF "$(uname -r | grep -o '[0-9.-]*' | sed 's/-$//')")
    

    (緊張を感じますか?echoを先頭に置いて、実際に実行する前に、パージする内容を確認します。)

  3. その後、忘れないでくださいgrub-mkconfigを再度編集して行を削除します:

    exit 0
    
  4. そして最後に実行します:

    Sudo update-grub
    

    ブートローダーを最新の状態にします。

このプロセスは、30分以内に11GBのスペースを回復しました。

また、今後--unattended-upgradesがカーネルパッケージを再構築するのを防ぐために この優れた提案 に従いました。

(*)/usr/sbin/dkms/usr/sbin/extlinux-update/usr/sbin/update-initramfsexit 0トリックを使用して無効化することも検討しましたが、これらはそれほど時間を節約できず、/lib/modules/[kernel_version]//boot/initrd.img-[kernel_version]にファイルが残っていたので、本当に良いオプションではありませんでした。

4
joeytwiddle