问题描述
我可以让套件管理员解决冲突吗?通过重命名二进制文件(例如parallel→gparallel)还是安装到其他位置(例如/usr /→/usr /local /)?
最佳方案
对于Ubuntu v17.04(“Zesty Zapus”)和Debian v9(“Stretch”)(2017或更高版本)或基于这些版本的发行版,请首先阅读Bryan Larsen’s answer,这足够了。
对于2017年之前的版本,请继续阅读…
使用dpkg
强制安装; parallel与moreutils相处融洽-将moreutils的parallel
util重命名为parallel.moreutils
。安装完成后,两个程序(GNU和moreutils)都可用。
注意:如果有任何用户脚本调用旧的moreutils parallel
,请将这些脚本更改为使用更长的名称。
详细信息:获取并行程序包(不安装或删除任何东西)。然后,使用compgen
(bash
内部命令),在存档中找到并行包。如果有多个,请使用最新的。尽管有冲突,仍要强制安装该软件包。
apt-get --assume-yes --download-only install parallel &&
ls --sort=version $(compgen -f /var/cache/apt/archives/parallel) |
tail -n 1 | xargs dpkg --force-conflicts -i
如何查看产生的转移:
dpkg-divert --list 'par*'
输出:
diversion of /usr/share/man/man1/parallel.1.gz to /usr/share/man/man1/parallel.moreutils.1.gz by parallel
diversion of /usr/bin/parallel to /usr/bin/parallel.moreutils by parallel
查看两个二进制可执行文件如何可用:
compgen -c parallel | xargs which | xargs ls -l
输出:
-rwxr-xr-x 1 root root 240814 Oct 31 2014 /usr/bin/parallel
-rwxr-xr-x 1 root root 10592 Jul 21 2015 /usr/bin/parallel.moreutils
次佳方案
此冲突已在Ubuntu 17.04和Debian Stretch中解决。
如果您安装并行&在moreutils中,您可以将GNU parallel
作为/usr/bin/parallel
以及moreutil的parallel
作为/usr/bin/parallel.moreutils
。如果仅安装moreutils,它将提供/usr/bin/parallel
。
如果您使用的是Ubuntu或Debian的旧版本,则可以从较新的版本下载并安装.deb:它们会安装&工作很好。