yum downgrade не удаляет новый пакет

Выпуск 1 содержит следующие пакеты

Package A-1.0
Package B-1.0

Выпуск 2 содержит следующие пакеты

Package A-2.0
Package B-2.0
Package C-2.0

В выпуске 2 Package B-1.0 был разделен на два пакета - package B-2.0 и package C-2.0.

Теперь, когда установлен Выпуск 2, как мне перейти на Выпуск 1?

yum downgrade A B пытается установить package B-1.0, файл которого конфликтует с package C-2.0.

yum downgrade A B C не работает, потому что для Package C нет более старой версии.

Есть ли одна команда, с помощью которой он удаляет новый пакет (package C-2.0) и понижает версию пакетов A и B?


person CR7    schedule 26.04.2016    source источник
comment
вы говорите, что файл B-1.0 конфликтует с C-2.0. Разве yum не предлагает вам решение удалить C-2.0?   -  person Chris Maes    schedule 26.04.2016
comment
из некоторой документации по yum по переходу на более раннюю версию: переход на более раннюю версию сложно, но в yum версии 3.2.27 и выше он может делать некоторые понижения. Они не идеальны, и их следует использовать с осторожностью - ›если вы хотите делать это часто, возможно, поищите другие варианты, кроме перехода на более раннюю версию yum   -  person Chris Maes    schedule 26.04.2016
comment
@ChrisMaes, удаление одного только C испортит его из-за взаимозависимостей (в моем случае). Поэтому мне нужен один шаг, который бы удалил C, а также понизил A и B   -  person CR7    schedule 28.04.2016


Ответы (3)


Если вы обновили несколько пакетов, а затем хотите понизить версию только для этих двух, это будет невозможно. Не использовать только yum (если вы не используете --nodeps и временные break deps). Существуют инструменты высокого уровня, такие как RH Satellite, которые могут это сделать.

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

   yum history list
   yum history undo <ID>

or

   yum history undo last

И он откатит эту транзакцию. Т.е. в вашем случае понизьте эти пакеты. См. Справочную страницу yum для получения подробной информации о команде history.

person msuchy    schedule 27.04.2016
comment
Это действительно работает, но мы не можем задокументировать это для наших клиентов, поскольку это больше похоже на обходной путь. Да, мы поддерживаем понижение версии !! И заказчик может выбрать более раннюю версию спустя несколько месяцев. - person CR7; 28.04.2016

Возможно, уже слишком поздно, поскольку вы уже выпустили пакеты A-2.0 и B-2.0, но то, что вы должны были сделать (и все еще можете сделать, если вы можете удалить свои пакеты A-2.0 и B-2.0):

В спецификациях A-2.0 и B-2.0 добавить: Requires: C

У этого есть несколько преимуществ, которые вы ищете (и многое другое):

  • при обновлении A и / или B; C будет установлен автоматически.
  • при удалении C версии A и B будут понижены.

Тем не мение:

  • при понижении до A и B; C не будет удален.

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

  • meta-package-1.0: Требуется A-1.0, B-1.0, Конфликты C
  • meta-package-2.0: Требуется A-2.0, B-2.0, C-2.0

(и я использую ветку с нестабильным метапакетом для подготовки следующего релиза: метапакет: требуется A, B)

person Chris Maes    schedule 28.04.2016
comment
Действительно хороший подход. Единственная причина, по которой мы не можем этого сделать, состоит в том, что Release 1 уже выпущен и не может быть изменен сейчас. - person CR7; 25.05.2016

Вы можете использовать оболочку yum для записи нескольких операций, прежде чем выполнять их все в одной транзакции.

В вашем случае вы можете использовать следующее:

yum shell
yum downgrade A B
yum remove C
run
person Abdallah Jaghoob    schedule 22.01.2018