升级转移的软件包,dpkg 错误

升级转移的软件包,dpkg 错误

我已经安装确认(grep 的替代品)。在基于 debian 的系统中,由于软件包名称 ack 已经存在(完全不同),因此该软件包被称为“ack-grep”。

安装说明提到一种让用户使用该命令的方法ack,就好像它是ack-grep

在 Debian 衍生发行版中,ack 被打包为“ack-grep”,因为“ack”已经存在。如果您只是通过以下方式安装:

$ sudo apt-get install ack-grep 

您的 ack 将被称为“ack-grep”,每次调用需要输入的字符数将增加 167%。这对您可怜的手指来说真是太糟糕了。

要创建本地转移,将 ack-grep 重命名为 ack,首先安装 ack-grep 包,如上所示。然后运行:

$ sudo dpkg-divert --local --divert /usr/bin/ack --rename --add /usr/bin/ack-grep

到目前为止一切顺利。现在,当我尝试升级系统时,apt-get upgrade由于转移而出现投诉:

Unpacking ack-grep (2.12-2) over (2.12-1) ...
dpkg: error processing archive /var/cache/apt/archives/ack-grep_2.12-2_all.deb (--unpack):
 trying to overwrite `/usr/bin/ack', which is the diverted version of `/usr/bin/ack-grep'

dpkg 发现了转移,并试图覆盖,这很好/usr/bin/ack,但为什么没有成功?

我尝试按照说明重新进行转换:

$ sudo dpkg-divert --local --divert /usr/bin/ack --rename --add /usr/bin/ack-grep 
Leaving 'local diversion of /usr/bin/ack-grep to /usr/bin/ack'

,但仍在抱怨apt-get upgradedpkg

这是正常的吗?我应该怎么做才能更新转移?有没有办法让它自动化,或者让它在下次我更新时正常工作apt-get upgrade

答案1

我找到了一种修复此问题的方法,首先消除转移:

dpkg-divert --package ack-grep --local --remove --rename --divert /usr/bin/ack /usr/bin/ack-grep

此后 apt-get upgrade 工作正常。

相关内容