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 / )?
źródło
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 / )?
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, dpkg
aby wymusić instalację; równolegle dogaduje się dobrze z moreutils - to zmienia nazwę moreutils " parallel
util 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
( bash
polecenie 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
apt-get install
wciąż narzeka na konflikt, jak pisałeś wcześniej./var/lib/dpkg/status
aby 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.apt-get install
ostrzega, żeparallel
pakiet nie zostanie zaktualizowany, aleapt-cache policy
nie pokazuje różnych wersji, a nawetapt-get dist-upgrade
nie dotknieparallel
pakietu. Tak więc aktualizacjaparallel
wydaje się być procesem, który musi być inicjowany świadomie. Nie mam nic przeciwko.Ten konflikt został rozwiązany w Ubuntu 17.04 i Debian Stretch .
W przypadku zainstalowania równolegle & moreutils masz GNU
parallel
jak/usr/bin/parallel
i moreutil „sparallel
jako/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.
źródło
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:źródło
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).
źródło