Ответ 1
Насколько мне известно, RPM не предназначен для обновления/замены существующих файлов, поэтому все, что вы делаете, будет взломом.
Из перечисленных вами вариантов я бы выбрал № 1 как наименее плохой взлом, если целевые системы - это системы, которыми я управляю (как вы говорите, это более эффективный, но самый чистый вариант) и комбинация № 2 и № 4 ( символические ссылки, где это возможно, копирование, где нет), если я создаю RPM для других систем (чтобы не приходилось распространять несколько RPM, но я бы дал очень ясно понять в документации, что я ' я делаю).
Вы не описали, какие файлы нужно обновить или заменить и как их нужно обновить. В зависимости от ответов на эти вопросы у вас может быть несколько других вариантов:
- Многие программы предназначены для использования одного файла конфигурации по умолчанию, а также для получения файлов конфигурации из подкаталога
.d
. Например, Apache использует/etc/httpd/conf/httpd.conf
и/etc/httpd/conf.d/*.conf
, поэтому ваши RPM файлы могут удалять файлы в/etc/httpd/conf.d
вместо изменения/etc/httpd/conf/httpd.conf
. И если файлы, которые вам нужно изменить, являются файлами конфигурации, которые не следуют этому шаблону, но могут быть созданы, вы можете предложить сопровождающим пакета, чтобы они добавили эту возможность; это не поможет вам сразу, но облегчит будущие выпуски. - Для утилит командной строки, таких как
sendmail
иlpr
, которые могут предоставляться несколькими пакетами, системаalternatives
(см.man alternatives
) позволяет устанавливать более 1 об/мин, что позволяет устанавливать эти утилиты рядом друг с другом. Опять же, если файлы, которые вам нужно изменить, являются утилитами командной строки, которые не следуют этому шаблону, но могут быть добавлены, вы можете предложить сопровождающим пакета добавить эту возможность. - Изменениями файла конфигурации в системах, которыми вы управляете, лучше управлять с помощью такого инструмента, как Cfengine или Puppet, а не с помощью пользовательских RPM. Я думаю, что Red Hat предпочитает Puppet.
- Если бы я создавал RPM для систем, которые я не администрирую, я бы подумал об использовании стороннего инструмента, такого как Bitrock, и выгрузил бы все свои вещи в
/opt
, чтобы мне не пришлось топать файлы, установленные другими RPM администраторов. - Изменить (2019): В настоящее время Коллекции программного обеспечения предлагает полезную альтернативу. Вы можете создавать пакеты, которые устанавливаются где-то под
/opt
, и инструменты "Коллекции программного обеспечения" предлагают пользователям стандартный способ использовать их вместо тех, которые обычно устанавливаются в/usr
. Red Hat использует это для распространения более новых версий инструментов для их стабильных и долгоживущих (то есть более старых) дистрибутивов Red Hat Enterprise Linux.