2014-09-02 3 views
2

Когда yum downgrade запускается на установленном пакете, yum сначала удаляет пакет, а затем повторно устанавливает предыдущий пакет? Как следствие, какой аргумент передается в% preun scriptlet пакета на yum downgrade, 0 или 1?Что происходит на yum downgrade?

ответ

1

Хороший вопрос. Из быстрого просмотра источников yum 3.2.22 (с моей машины CentOS 5) похоже, что это единственная транзакция, которая удаляется + установка. Который заставил бы меня думать, что %preun получит 1.

Встроенные справочная система для yum.YumBase.downgrade также имеет это сказать:

$ python 
Python 2.4.3 (#1, Jan 9 2013, 06:47:03) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-54)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import yum 
>>> help(yum.YumBase.downgrade) 
Help on method downgrade in module yum: 

downgrade(self, po=None, **kwargs) unbound yum.YumBase method 
    Try to downgrade a package. Works like: 
    % yum shell <<EOL 
    remove abcd 
    install abcd-<old-version> 
    run 
    EOL 
+0

Моего тестирование кажется, показывает, что% preun получает 1 переданную ей. Я хотел бы иметь возможность различать и обновлять и понижать уровень в разделе% preun, т. Е. Я хочу запустить некоторый код при понижении, но не при обновлении, но я думаю, что% preun получает 1 проход в обоих случаях. –

+0

Да, это было похоже на то, что вы получите. Я не думаю, что вы можете сказать, в '% preun', является ли это понижением или обновлением. Что вы пытаетесь сделать во время понижения в любом случае? –

+0

По историческим причинам у нас есть rpm, который применяет изменения в файле my.cnf (файл конфигурации mysql) с использованием команды sed, проверяет, изменился ли my.cnf, и если это так перезапустило mysql с новым my.cnf. Я хочу сделать резервную копию старого my.cnf во время обновления, а затем восстановить резервную копию во время понижения. Я должен добавить, что скоро мы перейдем к управлению my.cnf через марионетку, так что этот вопрос исчезнет. –