今日、私はDebian Stretchから古いカーネルを削除しようとしました。
sudo aptitude purge linux-image-4.9.0-3-amd64
このプロセスはほとんどのサーバーでスムーズに動作し、長年にわたって進行してきましたが、今回は2つのサーバーで次のエラーが発生しました。
Failed to substitute package name in title: 10 at /usr/bin/linux-check-removal line 102, < STDIN> line 1.
dpkg: error processing package linux-image-4.9.0-3-amd64 (--remove):
subprocess installed pre-removal script returned error exit status 255
Errors were encountered while processing:
linux-image-4.9.0-3-amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)
使用
sudo dpkg --purge linux-image-4.9.0-3-amd64
同様のメッセージも返されます。
このパッケージに対して削除/クリーンアップコマンドを繰り返しようとすると、常にこのエラーが発生します。
どうすれば削除できますか?
答え1
/usr/bin/linux-check-removal
回避策の調査中にこれがPerlスクリプトであることがわかりましたman
。
linux-check-removal - カーネルを削除しても安全であることを確認します。
要約。
Linuxの削除されたバージョンを確認する説明する。
linux-check-removalは、Linuxカーネルパッケージのprermメンテナンススクリプトから呼び出されるように設計されています。
最終的に0(成功)を返すようにスクリプトを変更し、パッケージを削除してから
sudo aptitude purge linux-image-4.9.0-3-amd64
作業が終わったら、スクリプトを復元します。
スクリプトの最後に適用した一時修正は次のとおりです。
# replace check() call with exit with success code
# check(@ARGV);
exit 0;