Как я могу установить GNU Parallel вместе с Moreutils в Ubuntu / Debian?

22

Могу ли я заставить менеджер пакетов разрешить конфликт, например, переименовав двоичный файл ( например, параллельный → gparallel ) или установив в другое место ( например, / usr / → / usr / local / )?

PSkocik
источник

Ответы:

19

Для Ubuntu v17.04 («Zesty Zapus») и Debian v9 («Stretch») , ( 2017 или новее) или дистрибутивов, основанных на этих версиях, сначала прочтите ответ Брайана Ларсена , чего должно быть достаточно.

Для версий до 2017 года читайте дальше ...


Используйте dpkgдля принудительной установки; параллельно ладит хорошо с moreutils - переименовывает moreutils ' parallelUtil к parallel.moreutils. Когда установка завершена , доступны обе программы ( GNU и moreutils ).

NB: если какие-либо пользовательские сценарии вызывают старые 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 installпродолжает жаловаться на конфликт, как вы писали ранее.
krlmlr
1
Я редактировал, /var/lib/dpkg/statusчтобы удалить конфликт. Искал "Conflicts: moreutils", удалил эту строку. Источник: superuser.com/a/815371/99136 . Кажется, сейчас работает, но я боюсь, что обновление «параллельного» пакета снова сломает вещи.
krlmlr
1
Нет: apt-get installпредупреждает, что parallelпакет не будет обновлен, но apt-cache policyне показывает разные версии и даже apt-get dist-upgradeне будет касаться parallelпакета. Таким образом, модернизация parallelпредставляется процессом, который должен начинаться сознательно. Я согласен.
krlmlr
@krlmlr, это новинка для меня ... Кстати, если вы будете так любезны, опубликуйте здесь вышеприведенный трюк. Задайте параметры apt-get, чтобы терпеть безвредный клдж dpkg --force-конфликтов? Я бы проголосовал за это.
АРУ
7

Этот конфликт разрешен в Ubuntu 17.04 и Debian Stretch .

Если вы устанавливаете параллельный & moreutils, вы получаете GNU parallel as /usr/bin/parallelи moreutil 's parallelas /usr/bin/parallel.moreutils. Если вы только устанавливаете moreutils , он предоставляет /usr/bin/parallel.

Если вы используете более старую версию Ubuntu или Debian , вы можете загрузить и установить .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/
barti_ddu
источник
1

GNU Parallels - это всего лишь Perl-скрипт, поэтому вы можете просто скопировать его куда-нибудь полезное (например, / usr / local / bin / gnu -rallel).

(Просто проверьте зависимости perl).

Дэвид Гудвин
источник