我已经安装了ack(替代 grep)。在基于 debian 的系统中,由于包名 ack 已经存在(完全不同的东西),所以该包被称为“ack-grep”。
该安装说明提到的方式,让用户使用命令ack
,如果它是ack-grep
:
在 Debian 衍生的发行版上,ack 被打包为“ack-grep”,因为“ack”已经存在。如果您只是通过以下方式安装:
Run Code Online (Sandbox Code Playgroud)$ sudo apt-get install ack-grep
您的 ack 将被称为“ack-grep”,每次调用要输入的字符多 167%。这对你可怜的手指来说是可悲的。
要创建本地分流,将 ack-grep 重命名为 ack,首先安装 ack-grep 包,如上图所示。然后,运行:
Run Code Online (Sandbox Code Playgroud)$ 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'
Run Code Online (Sandbox Code Playgroud)
很好,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'
Run Code Online (Sandbox Code Playgroud)
,但仍然在apt-get upgrade
,dpkg
抱怨。
这是正常的吗?我应该怎么做才能更新改道?有没有办法让它自动化,或者让它在我下次工作时正常工作apt-get upgrade
?
小智 8
我找到了一个方法来修复它,首先删除转移:
dpkg-divert --package ack-grep --local --remove --rename --divert /usr/bin/ack /usr/bin/ack-grep
apt-get upgrade 在那之后工作正常。
归档时间: |
|
查看次数: |
2535 次 |
最近记录: |