Могу ли я заставить менеджер пакетов разрешить конфликт, например, переименовав двоичный файл (например, параллельный → gparallel) или установка в другое место (например /usr/ → /usr/local/)?
решение1
ДляUbuntu v17.04 («Пикантный Запус»)иDebian v9 («Растянуть»), (2017или новее), или дистрибутивы, основанные на этих версиях, пожалуйста, прочтитеОтвет Брайана Ларсена первый, чего должно быть достаточно.
Для версий, выпущенных ранее2017, читай дальше...
Использовать dpkg
длясилаустановка;параллельныйхорошо ладит сmoreutils-- он переименовываетmoreutils' parallel
util to parallel.moreutils
. Когда установка будет завершена, обе программы (ГНУи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
решение2
Этот конфликт решен вУбунту 17.04иРастяжка Debian.
Если вы установитепараллельный&moreutilsвы получаетеГНУ parallel
как /usr/bin/parallel
иmoreutil's parallel
как /usr/bin/parallel.moreutils
. Если вы только установитеmoreutils, это обеспечивает /usr/bin/parallel
.
Если вы используете старую версиюУбунтуилиДебиан, вы можете загрузить и установить .deb-файлы из более новой версии: они устанавливаются и работают просто отлично.
решение3
Полагаю, самым простым способом будет установить один из пакетов обычным образом (например, 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/
решение4
GNU Parallels — это всего лишь скрипт на Perl, поэтому вы можете просто скопировать его в удобное место (например, /usr/local/bin/gnu-parallel).
(Просто проверьте зависимости Perl).