Могу ли я заставить менеджер пакетов разрешить конфликт, например, переименовав двоичный файл ( например, параллельный → gparallel ) или установив в другое место ( например, / usr / → / usr / local / )?
источник
Могу ли я заставить менеджер пакетов разрешить конфликт, например, переименовав двоичный файл ( например, параллельный → gparallel ) или установив в другое место ( например, / usr / → / usr / local / )?
Для Ubuntu v17.04 («Zesty Zapus») и Debian v9 («Stretch») , ( 2017 или новее) или дистрибутивов, основанных на этих версиях, сначала прочтите ответ Брайана Ларсена , чего должно быть достаточно.
Для версий до 2017 года читайте дальше ...
Используйте dpkg
для принудительной установки; параллельно ладит хорошо с moreutils - переименовывает moreutils ' parallel
Util к 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
apt-get install
продолжает жаловаться на конфликт, как вы писали ранее./var/lib/dpkg/status
чтобы удалить конфликт. Искал "Conflicts: moreutils", удалил эту строку. Источник: superuser.com/a/815371/99136 . Кажется, сейчас работает, но я боюсь, что обновление «параллельного» пакета снова сломает вещи.apt-get install
предупреждает, чтоparallel
пакет не будет обновлен, ноapt-cache policy
не показывает разные версии и дажеapt-get dist-upgrade
не будет касатьсяparallel
пакета. Таким образом, модернизацияparallel
представляется процессом, который должен начинаться сознательно. Я согласен.Этот конфликт разрешен в Ubuntu 17.04 и Debian Stretch .
Если вы устанавливаете параллельный & moreutils, вы получаете GNU
parallel
as/usr/bin/parallel
и moreutil 'sparallel
as/usr/bin/parallel.moreutils
. Если вы только устанавливаете moreutils , он предоставляет/usr/bin/parallel
.Если вы используете более старую версию Ubuntu или Debian , вы можете загрузить и установить .deb из более новой версии: они устанавливаются и работают просто отлично.
источник
Я полагаю, что самым простым способом было бы нормально установить один из пакетов (например
parallel
) и просто извлечь другой в произвольный путь:источник
GNU Parallels - это всего лишь Perl-скрипт, поэтому вы можете просто скопировать его куда-нибудь полезное (например, / usr / local / bin / gnu -rallel).
(Просто проверьте зависимости perl).
источник