Подход к исправлению/исправлению RPM

Мы запускаем систему на Centos 5.5 и устанавливаем наше программное обеспечение, используя один RPM, содержащий все наше программное обеспечение. Когда нам нужно применить горячее исправление или патч, текущая система просто вставляется в tar и распаковывается.

Я пытаюсь разработать отслеживаемую, воспроизводимую систему для применения исправлений и исправлений, но я немного не уверен, какую роль RPM играет в этом процессе.

Насколько я понимаю, если мы увеличим номер версии и переустановим даже с одним измененным файлом, то RPM взорвет всю партию. Это требует от нас абсолютной уверенности в том, что никто не установил в систему другое исправление, о котором мы не знаем, поскольку оно будет заменено.

Можно ли создать RPM, содержащий ТОЛЬКО новые файлы, и применить его поверх существующего RPM? Как это повлияет на последующие обновления системы?


person NeilInglis    schedule 30.03.2011    source источник


Ответы (3)


Проблема заключается в том, чтобы изменить файлы, локально установленные с помощью rpm, и забыть о них.

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

Если людям разрешено устанавливать исправление за исправлением поверх машины, даже не зафиксировав их в обычном процессе, вы навлекаете катастрофу.

Одна вещь, которую вы можете сделать, чтобы напомнить о том, что у вас есть исправления, это использовать

rpm -q --verify (your rpm name)

Это напечатает список файлов, которые были изменены с момента установки rpm. Таким образом, вы, по крайней мере, будете знать, какие файлы были пропатчены и должны быть приняты во внимание.

person Thomas Vander Stichele    schedule 30.08.2012
comment
Я больше не работаю в компании или вообще с рассматриваемой ОС, но эй, это звучит хорошо. Спасибо. - person NeilInglis; 30.08.2012

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

Разделение вашего монолитного пакета позволит вам обновлять отдельные части.

person idleyoungman    schedule 19.04.2011

Вы можете использовать deltarpm (но я не рекомендую это делать, см. ниже). Имея старые и новые обороты в минуту (на сборочной машине), вы можете сгенерировать дельту с помощью инструмента deltarpm. Используя инструмент deltarpm на машине, где установлено программное обеспечение, вы можете автоматически обновить старые rpm до новых (и при необходимости понизить их обратно).

Мне это не нравится, потому что если какой-либо (не конфигурационный) файл, предоставляемый старым rpm, будет изменен, вы не сможете установить исправление. Более того, deltarpm не является готовым к использованию инструментом. Вы были предупреждены.

В качестве альтернативы deltarpm я бы посоветовал разделить ваше программное обеспечение на несколько меньших RPM и поставить подмножество новых RPM в качестве исправления. Это наиболее распространенный подход.

person Michał Šrajer    schedule 19.04.2011