如何在Ubuntu / Debian上与Moreutils一起安装GNU Parallel?


22

是否可以使软件包管理器解决冲突,例如通过重命名二进制文件(例如,parallel→gparallel)或安装到其他位置(例如,/ usr /→/ usr / local /)?

Answers:


19

对于Ubuntu的v17.04(“灿烂美洲林跳鼠属”)Debian的V9(“拉伸”) ,(2017年或更新版本),或基于这些版本的发行版,请阅读布赖恩·拉森的答案 首先,这应该是足够了。

对于2017年之前的版本,请继续阅读...


使用dpkg强制安装; parallelmoreutils相处融洽 -将moreutilsparallelutil 重命名为parallel.moreutils。安装完成后,两个程序(GNUmoreutils)都可用。

注意:如果有任何用户脚本调用旧的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

1
也许不吧!这用来工作正常,但在一个Lubuntu盒,安装一切,但apt-get的不断想摆脱一个相似之处的......或许需要另一个覆盖。更多稍后……
AGC

... apt-get install如您先前所写,除了不断抱怨冲突。
krlmlr

1
/var/lib/dpkg/status进行了删除,以消除冲突。搜索“冲突:moreutils”,删除此行。资料来源:superuser.com/a/815371/99136。似乎现在可以工作,但是我担心对“ parallel”软件包的更新会再次破坏事情。
krlmlr

1
否:apt-get install警告该parallel软件包不会升级,但apt-cache policy不会显示不同的版本,甚至apt-get dist-upgrade不会接触该parallel软件包。因此,升级parallel似乎是一个必须自觉启动的过程。我都可以。
krlmlr

@krlmlr,这对我来说是个新问题……顺便说一句,如果您愿意在此处发布上述技巧,请设置apt-get选项以容忍无害的'dpkg --force-conflicts'冲突吗?,我会投票赞成。
gc

7

此冲突已在Ubuntu 17.04Debian Stretch中解决。

如果安装parallelmoreutils,则会得到GNU parallel as /usr/bin/parallelmoreutilparallelas /usr/bin/parallel.moreutils。如果仅安装moreutils,它将提供/usr/bin/parallel

如果您使用的是UbuntuDebian的旧版本,则可以从较新的版本下载并安装.deb:它们可以正常安装和运行。


1

我想,最简单的方法是正常安装其中一个软件包(例如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/

1

GNU并行只是一个perl脚本,因此您可以将其复制到有用的地方(例如/ usr / local / bin / gnu-parallel)。

(只需检查perl依赖项)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.