我已经安装确认(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 upgrade
。dpkg
这是正常的吗?我应该怎么做才能更新转移?有没有办法让它自动化,或者让它在下次我更新时正常工作apt-get upgrade
?
答案1
我找到了一种修复此问题的方法,首先消除转移:
dpkg-divert --package ack-grep --local --remove --rename --divert /usr/bin/ack /usr/bin/ack-grep
此后 apt-get upgrade 工作正常。