删除平均值时出现问题

删除平均值时出现问题

我试图删除 avg2013,然而当我尝试时收到一条奇怪的错误消息。

我正在运行的命令:

sudo apt-get remove --purge avg2013flx

我收到的错误:

Removing avg2013flx (2013.3118) ...
Failed to stop avgd.service: Unit avgd.service not loaded.
invoke-rc.d: initscript avgd, action "stop" failed.
dpkg: error processing package avg2013flx (--purge):
 subprocess installed pre-removal script returned error exit status 5
Errors were encountered while processing:
 avg2013flx
E: Sub-process /usr/bin/dpkg returned an error code (1)

我查看过,该服务没有运行,但确实存在。

答案1

同样的问题在这里,我有一个解决方案:

打开终端并打开文件avg2013flx.prerm

sudo nano /var/lib/dpkg/info/avg2013flx.prerm

搜索以下行

if which invoke-rc.d >/dev/null 2>&1; then
    invoke-rc.d avgd stop
else
    /etc/init.d/avgd stop
fi

并替换全部发生

#       if which invoke-rc.d >/dev/null 2>&1; then
#           invoke-rc.d avgd stop
#       else
#           /etc/init.d/avgd stop
#       fi

然后再次运行

sudo apt-get remove --purge avg2013flx

解释:

注释掉这些行会阻止进程尝试停止服务。而且服务本来就没在运行,所以它能够删除该包。

答案2

据我所知,使用较新版本的 Ubuntu(14.10、15.04)的用户会遇到此问题。这可能是由于 Ubuntu 转向 systemd init 引擎(启动和停止系统服务)造成的。

您看到的错误是软件包的预删除脚本尝试与 init 系统交互但失败了。

我们可以假设这就是脚本要做的全部工作。您可以忽略它的失败,并使用该dpkg --force-all标志继续执行。

sudo dpkg -P --force-all avg2013flx

如果脚本执行的操作不止这些,那就有点冒险了。我们可以查看一下,然后编辑(甚至修复)删除前的脚本:

sudoedit /var/lib/dpkg/info/avg2013flx.prerm

... 但您需要了解问题所在才能修复它。毫无疑问,它类似于这样的行service stop avg。我没有安装它(或者只想为此安装它),所以您必须四处寻找(或编辑您的问题以包含它,我会看看)。


这个问题之前在 Ubuntu 论坛上出现过修复一下:

sudo ln -s /bin/true /etc/init.d/avgd
sudo apt-get remove --purge avg2013flx

这只是确保删除脚本存在一个虚假的 init 脚本副本,从而允许其完成。鉴于其他答案建议直接删除脚本,我最初的--force-all建议应该同样安全。

相关内容