Ubuntu / DebianでMoreutilsと一緒にGNU Parallelをインストールするにはどうすればよいですか?


22

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

回答:


19

以下のためのUbuntu v17.04(「ピリッZapus」)DebianのV9(「ストレッチ」) 、(2017年以降)、またはそれらのバージョンに基づくディストリビューション、読んでくださいブライアン・ラーセンの答えを 最初に十分であるべきです。

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


強制的にインストールするために使用dpkgします。parallelmoreutilsとうまく調和します。moreutilsのutilをutilに変更します。インストールが完了すると、両方のプログラム(GNUおよびmoreutils)が利用可能になります。parallelparallel.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

1
そうでないかもしれない!これは以前は正常に機能していましたが、Lubuntuボックスではすべてがインストールされますが、apt-getは類似物の1つを削除しようとし続けます...おそらく別のオーバーライドが必要です。さらに後で
...-agc

...ただし、apt-get install以前に書いたように、競合について不平を言うことはありません。
-krlmlr

1
/var/lib/dpkg/status競合を削除するために編集しました。「Conflicts:moreutils」を検索し、この行を削除しました。出典:superuser.com/a/815371/99136。現在は動作しているように見えますが、「パラレル」パッケージの更新が再び問題を引き起こすことを恐れています。
krlmlr

1
いいえ:パッケージはアップグレードされませんが、異なるバージョンは表示されず、パッケージに触れないことをapt-get install警告します。したがって、アップグレードは意識的に開始する必要があるプロセスのようです。元気です。parallelapt-cache policyapt-get dist-upgradeparallelparallel
krlmlr

@krlmlr、それは私にとって新しいものです...ところで、あなたがここに上記のトリックを投稿するほど親切なら、無害な 'dpkg --force-conflicts'クラッジを許容するためにapt-getオプションを設定しますか?、賛成します。
agc

7

この競合はUbuntu 17.04Debian Stretchで解決されています。

並列moreutilsをインストールするGNU parallel as /usr/bin/parallelおよびmoreutilasが取得さparallel/usr/bin/parallel.moreutilsます。moreutilsのみをインストールする場合、提供されます/usr/bin/parallel

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


1

一番簡単な方法は、パッケージの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 parallelsは単なるperlスクリプトなので、どこか便利な場所にコピーするだけです(例/ usr / local / bin / gnu-parallel)。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.