2016-04-26 1 views
2

Выпуск 1 содержит следующие пакетыни Понижение рейтинг не снимает новый пакет

Package A-1.0 
Package B-1.0 

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

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

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

Теперь, когда Release 2 установлен, как я понижаем до Release 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?

+0

вы говорите, B-1,0 имеет conflics файлов с C-2.0. Разве yum не предлагает вам решение для удаления C-2.0? –

+0

из некоторой документации по понижательной документации yum: «Переходы сложны, но в версиях yum 3.2.27 и выше они могут выполнять _some_ downgrades. Они не идеальны и должны использоваться с осторожностью» -> если вы хотите делать это часто, возможно, посмотрите для других вариантов, кроме перехода на yum –

+0

@ChrisMaes, Удаление только C может испортить его из-за взаимозависимостей (в моем случае). Так что мне нужен один шаг, который удалит C, а также понижение A и B. – CR7

ответ

3

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

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

yum history list 
    yum history undo <ID> 

или

yum history undo last 

И это будет откатить эту транзакцию. То есть в вашем случае откажитесь от этих пакетов. Подробнее о команде истории см. В man-странице yum.

+0

Это действительно делает эту работу, но мы не можем документировать это для наших клиентов, поскольку это больше похоже на обходной путь. Да, мы поддерживаем понижение! И клиент может также отказаться от последующих месяцев. – CR7

2

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

В файле спецификации а-2,0 и B-2.0 добавить: Requires: C

Это имеет несколько преимуществ, вы будете искать (и более):

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

Однако:

  • , когда понижение А и В; C не будет удалена.

Существует альтернатива, который я использую для моих проектов: Я использую мета-пакет:

  • мета-пакет-1,0: Требуется A-1,0, В-1,0, конфликты с
  • мета-пакет-2.0: требует а-2,0, в-2,0, C-2,0

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

+0

Действительно хороший подход. Только причина, по которой мы не можем сделать этого, состоит в том, что релиз 1 уже выпущен и теперь не может быть изменен. – CR7

+0

оба моих подхода все еще возможны с выпуском 1 релиза ... –

1

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

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

yum shell 
yum downgrade A B 
yum remove C 
run