我可以让包管理器解决冲突吗,例如通过重命名二进制文件(例如 parallel → gparallel)或安装到其他位置(例如 /usr/ → /usr/local/)?
答案1
为了Ubuntu v17.04(“Zesty Zapus”)和Debian v9(“Stretch”),(2017或更新版本),或基于这些版本的发行版,请阅读Bryan Larsen 的回答 第一的,这应该足够了。
对于之前的版本2017,继续阅读...
使用dpkg
力量安装;平行线相处融洽更多工具-- 它重命名更多工具' parallel
util parallel.moreutils
。安装完成后,两个程序(GNU和更多工具) 均可用。
注意:如果有用户脚本调用旧的更多工具 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
答案2
此冲突的解决方式为Ubuntu 17.04和Debian Stretch。
如果您安装平行线&更多工具你得到了GNU parallel
作为/usr/bin/parallel
和更多实用工具就像。parallel
如果/usr/bin/parallel.moreutils
你只安装更多工具, 它提供/usr/bin/parallel
。
如果你使用的是旧版本的Ubuntu或者Debian,您可以下载并安装较新版本的 .deb:它们可以正常安装和运行。
答案3
我想,最简单的方法是正常安装其中一个包(例如parallel
),然后将另一个包提取到自定义路径:
$ sudo apt-get install libio-pty-perl libipc-run-perl
$ sudo apt-get download moreutils
$ dpkg -x moreutils_0.54-1_amd64.deb /tmp/moreutils
$ cd /tmp/moreutils/usr/bin/
答案4
GNU parallels 只是一个 perl 脚本,因此您可以将其复制到有用的地方(例如 /usr/local/bin/gnu-parallel)。
(只需检查 perl 依赖项)。