Jak mogę zainstalować GNU Parallel wraz z Moreutils na Ubuntu / Debian?

22

Czy mogę zmusić menedżera pakietów do rozwiązania konfliktu, np. Przez zmianę nazwy pliku binarnego ( np. Równoległy → równoległy ) lub zainstalowanie w innym miejscu ( np. / Usr / → / usr / local / )?

PSkocik
źródło

Odpowiedzi:

19

W przypadku Ubuntu v17.04 („Zesty Zapus”) i Debian v9 („Stretch”) , ( 2017 lub nowszy) lub dystrybucji opartych na tych wersjach, najpierw przeczytaj odpowiedź Bryana Larsena , która powinna wystarczyć.

W przypadku wersji sprzed 2017 r. Czytaj dalej ...


Użyj, dpkgaby wymusić instalację; równolegle dogaduje się dobrze z moreutils - to zmienia nazwę moreutils " parallelutil do parallel.moreutils. Po zakończeniu instalacji dostępne są oba programy ( GNU i moreutils ).

Uwaga: jeśli skrypty użytkownika wywołują stare moreutils parallel , zmień je, aby używały dłuższej nazwy.

Szczegóły: Pobierz pakiet równoległy (bez instalowania lub usuwania czegokolwiek). Następnie za pomocą compgen( bashpolecenie wewnętrzne) znajdź pakiet równoległy w archiwum. Jeśli jest więcej niż jeden, użyj najnowszego. Wymuś zainstalowanie tego pakietu, pomimo konfliktów.

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

Jak wyświetlić wynikowe zmiany:

dpkg-divert --list 'par*'

Wydajność:

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

Zobacz, jak dostępne są oba binarne pliki wykonywalne:

compgen -c parallel | xargs which | xargs ls -l

Wydajność:

-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
agc
źródło
1
Może nie! Ta używana do pracy ok, ale na polu LUBUNTU, wszystko instaluje ale apt-get ciągle chcąc pozbyć się jednego analogie ... prawdopodobnie potrzebuje innej nadpisanie. Więcej później ...
agc
... z wyjątkiem tego, że apt-get installwciąż narzeka na konflikt, jak pisałeś wcześniej.
krlmlr
1
Zredagowałem, /var/lib/dpkg/statusaby usunąć konflikt. Szukano „Conflicts: moreutils”, usunąłem ten wiersz. Źródło: superuser.com/a/815371/99136 . Wygląda na to, że teraz działa, ale obawiam się, że aktualizacja pakietu „równoległego” znowu wszystko zepsuje.
krlmlr
1
Nie: apt-get installostrzega, że parallelpakiet nie zostanie zaktualizowany, ale apt-cache policynie pokazuje różnych wersji, a nawet apt-get dist-upgradenie dotknie parallelpakietu. Tak więc aktualizacja parallelwydaje się być procesem, który musi być inicjowany świadomie. Nie mam nic przeciwko.
krlmlr
@krlmlr, to dla mnie nowy ... BTW, jeśli byłbyś tak uprzejmy, aby opublikować powyższą sztuczkę tutaj Ustaw opcje apt-get, aby tolerować nieszkodliwe 'klkgge' dpkg --force-conflicts '? , Głosowałbym za tym.
agc
7

Ten konflikt został rozwiązany w Ubuntu 17.04 i Debian Stretch .

W przypadku zainstalowania równolegle & moreutils masz GNU parallel jak /usr/bin/paralleli moreutil „s paralleljako /usr/bin/parallel.moreutils. Jeśli zainstalujesz tylko moreutils , zapewni to /usr/bin/parallel.

Jeśli używasz starszej wersji Ubuntu lub Debian , możesz pobrać i zainstalować .deb z nowszej wersji: instalują się i działają dobrze.

Bryan Larsen
źródło
1

Sądzę, że najłatwiejszym sposobem byłoby zainstalowanie jednego z pakietów normalnie (np. parallel) I po prostu wyodrębnienie innego do niestandardowej ścieżki:

$ 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
źródło
1

Paralele GNU to po prostu skrypt perla, więc możesz po prostu skopiować go w jakiś użyteczny sposób (np. / Usr / local / bin / gnu -allel).

(Po prostu sprawdź zależności Perla).

David Goodwin
źródło