删除旧内核包时出错

删除旧内核包时出错

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

相关内容