今天我尝试删除 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;