web-dev-qa-db-ja.com

Ubuntu / DebianでMoreutilsと並行してGNU Parallelをインストールする方法を教えてください。

パッケージマネージャーに競合を解決させることはできますか?バイナリの名前を変更する(例:parallel→gparallel)か、別の場所にインストールする(例:/ usr /→/ usr/local /)?

22
PSkocik

Ubuntu v17.04( "Zesty Zapus")およびDebian v9( "Stretch")の場合、(2017以降)、またはそれらのバージョンに基づくディストリビューションについては、 Bryan Larsenの回答firstをお読みください。 、これで十分です。

以前のバージョン2017については、以下をお読みください...


dpkgを使用してforceインストールします。 parallelmoreutilsとうまく調和します-名前を変更しますmoreutils 'parallel util to parallel.moreutils。インストールが完了すると、両方のプログラム([〜#〜] gnu [〜#〜]moreutils)が使用可能になります。

注意:userスクリプトが古いmoreutilsparallelを呼び出す場合、それらのスクリプトを変更します長い名前を使用します。

詳細:parallelパッケージをフェッチします(何もインストールまたは削除せずに)。次に、compgen、(bash内部コマンド)を使用して、アーカイブ内のparallelパッケージを見つけます。複数ある場合は、最新のものを使用してください。競合があるにもかかわらず、そのパッケージを強制的にインストールします。

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
19
agc

この競合はbuntu 17.04およびDebian Stretchで解決されています。

parallelmoreutilsをインストールすると、[〜#〜] gnu [〜#〜]parallel as /usr/bin/parallelおよびmoreutilparallel as /usr/bin/parallel.moreutilsmoreutilsのみをインストールすると、/usr/bin/parallelが提供されます。

古いバージョンのbuntまたはDebianを使用している場合は、新しいバージョンから.debをダウンロードしてインストールできます。インストールと動作は問題ありません。

7
Bryan Larsen

私の推測では、最も簡単な方法は、通常のパッケージの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
barti_ddu

GNU parallelsは単なるPerlスクリプトなので、どこか便利な場所(/ usr/local/bin/gnu-parallelなど)にコピーすることができます。

(Perlの依存関係を確認するだけです)。

1
David Goodwin