Подтвердить что ты не робот

Как игнорировать конфликты в установках rpm

У меня есть куча файлов rpm в папке. Я пытаюсь установить их, используя: rpm -ivh *.rpm, поэтому rpm может позаботиться о правильном порядке установки.

В некоторых из этих rpms у меня есть новая версия, установленная в моей системе, поэтому я получаю, например:

package info-5.0-1 (which is newer than info-4.13a-2) is already installed

/opt/freeware/man/man1/infokey.1 from install of info-4.13a-2 conflicts with file from package info-5.0-1

Есть ли способ игнорировать старый файл .rpm и разрешать зависимость с новой версией, которая уже установлена? Я подумал о опции -force. Но как - разрешает конфликты? Перезаписывает их с более старой версией или просто игнорирует их, оставляя новую версию?

Любые мысли приветствуются.

4b9b3361

Ответ 1

Опция --force переустанавливает уже установленные пакеты или перезаписывает уже установленные файлы из других пакетов. Вы не хотите этого обычно.

Если вы скажете rpm установить все RPM из некоторого каталога, то он сделает именно это. rpm не будет игнорировать RPM, указанные для установки. Вы должны вручную удалить ненужные RPM из списка (или каталога). Он всегда будет перезаписывать файлы с "последней установленной RPM" в любом порядке.

Вы можете удалить старый RPM, и rpm разрешит зависимость с более новой версией установленного RPM. Но это будет работать только в том случае, если ни один из устанавливаемых RPM-пакетов точно не зависит от старой версии.

Если вам действительно нужны разные версии одного и того же RPM, то RPM должен быть перемещаемым. Затем вы можете указать rpm установить конкретный RPM в другой каталог. Если файлы не конфликтуют, вы можете просто установить разные версии с rpm -i (zypper in не может устанавливать разные версии одного и того же RPM). Я упаковываю, например, рубиновые драгоценные камни как перемещаемые RPM на работе. Поэтому я могу установить разные версии одного и того же драгоценного камня.

Я не знаю, по каким файлам ваши RPM конфликтуют, но если все они "просто" справочные страницы, то вы, вероятно, можете просто перезаписать новые на старые с помощью rpm -i --replacefiles. Единственная проблема в этом состоит в том, что это может запутать кого-то, кто читает страницу старого пользователя и думает, что это актуальная версия. Другая проблема - команда rpm --verify. Он будет жаловаться на новый пакет, если старый перезаписал некоторые файлы.

Возможно, это дубликат https://serverfault.com/questions/522525/rpm-ignore-conflicts?

Ответ 2

Попробуйте команду Freshen:

rpm -Fvh *.rpm

Ответ 3

В контексте конфликт был вызван версией пакета.
Посмотрите руководство по rpm:

--force
    Same as using --replacepkgs, --replacefiles, and --oldpackage.

--oldpackage
    Allow an upgrade to replace a newer package with an older one.

Итак, вы можете выполнить команду rpm -Uvh info-4.13a-2.rpm --force, чтобы решить вашу проблему.