如何在 Ubuntu/Debian 上安装 GNU Parallel 和 Moreutils?

PSk*_*cik 22 debian package-management ubuntu

我可以让包管理器解决冲突,例如通过重命名二进制文件(例如 parallel → gparallel)或安装到不同的地方(例如 /usr/ → /usr/local/)吗?

agc*_*agc 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
Run Code Online (Sandbox Code Playgroud)

如何查看由此产生的改道:

dpkg-divert --list 'par*'
Run Code Online (Sandbox Code Playgroud)

输出:

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
Run Code Online (Sandbox Code Playgroud)

查看两个二进制可执行文件如何可用:

compgen -c parallel | xargs which | xargs ls -l
Run Code Online (Sandbox Code Playgroud)

输出:

-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
Run Code Online (Sandbox Code Playgroud)


小智 8

这个冲突在Ubuntu 17.04Debian Stretch 中得到解决。

如果您安装parallel & moreutils,您将获得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/
Run Code Online (Sandbox Code Playgroud)