rpm: как разрешить без прикосновения к старому пакету плавно переключаться между старым и новым пакетами с другим именем - PullRequest
0 голосов
/ 13 октября 2018

Короче говоря, я хочу реализовать плавное переключение между старым и новым пакетами с разными именами.Тем не менее, я хочу достичь этого, не трогая файл спецификации старого пакета.Беспроблемный коммутатор включает в себя то, что другие пакеты, зависящие от новых или старых пакетов, не нужно удалять и переустанавливать только из-за коммутатора.

Я собираюсь добавить, скажем, Y, в дистрибутив (ы) Linux на основе Redhat.Однако в дистрибутиве уже давно был пакет X.Это один и тот же набор программного обеспечения, в котором много файлов установлено в одном месте и т. Д. Единственное существенное отличие - это версия.X - относительно старая и стабильная версия.Y - почти такая же версия, как только что выпущенное сообщество open source.Скажем, программное обеспечение - это Foo, а X - это Foo 1.4, а Y - это Foo 2.1.

Поскольку Y является экспериментальной версией, мы бы хотели, чтобы пользователи могли беспрепятственно переключаться между X и Y.Другими словами, поскольку у пользователей есть несколько пакетов, которые зависят от X или Y, мы не хотим, чтобы пользователям приходилось удалять и переустанавливать эти пакеты при переключении с X на Y и с Y на X.

Проблема в том, что я хотел бы избежать как можно большего изменения X. Я могу делать все что угодно с файлом спецификации Y и т. Д.

Добавление «Obsoletes: X» к Y позволило, что при установке Y автоматически удаляется X безкасаясь любого другого программного пакета, который зависит от X или Y. Я действительно хотел бы сделать то же самое для X, но не могу коснуться файла спецификации X.

Добавление «Conflicts: X» к Y вынуждает пользователясначала «удалить» Y перед установкой X. Дело в том, что когда пользователь удаляет Y, все программные пакеты, зависящие от X или Y, исчезают с Y. X еще не установлен, а Y скоро исчезнет.Таким образом, у них не было бы ни X, ни Y. Это то, чего я хочу избежать.

% PS У меня здесь был похожий вопрос: как сделать существующий rpm устаревшим новым rpm без изменениясуществующий файл спецификации rpm

Это было пару дней назад, и у меня было мало знаний.Мне посоветовали использовать «Conflicts: X» в файле спецификации Y.Позже я обнаружил еще одну проблему, заключающуюся в том, что сторонние пакеты должны быть удалены и переустановлены, когда я переключаюсь обратно на X с Y. Это заставило меня опубликовать этот новый вопрос.Ответ здесь действительно решил мою проблему.Ответы на мой старый вопрос мне очень помогли, но не полностью разрешили мою проблему.

1 Ответ

0 голосов
/ 13 октября 2018

Как указано в https://fedoraproject.org/wiki/Packaging:Guidelines#Renaming.2FReplacing_Existing_Packages:

Provides: oldpackagename = $provEVR
Obsoletes: oldpackagename < $obsEVR

Если вы хотите вернуться к старому X, то вы можете сделать это, используя:

yum swap package_to_remove package_to_install

в вашей терминологии:

yum swap Y X

однако, если в вашем репо есть Y, yum upgrade всегда захочет перейти на Y.

Если вы хотите вернуться туда и обратно и иметь точный контроль над тем, чтоВы устанавливаете на машину, я рекомендую проект Katello - или Red Hat Satellite, если вам нужна поддержка.

...