2016-03-11 3 views
0

Я создал RPM-пакет для Centos 6.6, который установлен на машине нашего клиента. Этот пакет содержит наше собственное программное обеспечение, настроенное для конкретного варианта использования, но также использует пакет HAProxy с открытым исходным кодом.Настройка зависимостей в RPM

HAProxy (RPM-версия 1.5.4-2.el6_7.1) поставляется с конфигурацией по умолчанию в /etc/haproxy/haproxy.conf, и его нельзя настроить без изменения этого файла. Но я хочу, чтобы конфигурация была частью моего сгенерированного пакета. RPM выдает ошибку, если файл /etc/haproxy/haproxy.conf находится в моем пакете, потому что он также является частью пакета haproxy.

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

Есть ли предпочтительный способ обработки таких настроек?

ответ

1

В подобных случаях, я создал RPM, который устанавливает файлы конфигурация в другой подкаталог, и в его %post и %preun скриптлетах изменяет конфигурационные-файлы в несотрудничающей упаковке приборов:

  • при установке, я переименован исходные конфигурационные файлы и сделанные символические ссылки от этих путей к перезаписывающим конфигурационным файлам и
  • при удалении пакет удалил символические ссылки и восстановил файлы исходного пакета.

Выполнение этого, конечно же, означало, что мой параметр-RPM зависел от исходного RPM. Немного неудобно описывать, но это работает.

В дальнейшем рассматривается вопрос о , обновляющий. Для обновления RPM требуется специальная обработка, чтобы избежать деинсталляции.Программа rpm передает параметр $1, который вы можете проверить в сценариях %pre и %preun, чтобы заметить, что это обновление и что нет необходимости сохранять исходные конфигурационные файлы (или восстанавливать их). Остальная часть сценария будет одинаковой, скопировав новые версии ваших конфигурационных файлов поверх остальных.

Дальнейшее чтение:

+0

Согласно [этот вопрос] (http://stackoverflow.com/questions/14511334/ rpm-upgrade-handling-of-config-files) измененный файл конфигурации может быть переопределен при выполнении 'rpm -U'. Ваш метод предотвращает такое поведение? –

+0

Нет - это совсем другая ситуация (в нем описывается случай, когда используется '% config' *). –

0

Ваш подход правильный. На EL6 и sysv нет другого выбора, кроме создания настраиваемого пакета haproxy или настраиваемого сервиса haproxy или создания скрипта, который клиент запускает после установки. Я считаю, что создание другого сервиса является лучшим вариантом.

Обратите внимание, что на EL7 с системой SystemD у вас есть намного лучший вариант, так как вы можете использовать функцию Drop-In SystemD. Для получения дополнительной информации см:

0

Обычный способ это сделать, это есть капля в каталоге конфигурации, например, /etc/httpd/conf.d/, где ваш пакет потеряет свою конфигурацию, и вы скажете другому демонам, например. httpd, сделать изящный перезапуск в вашем %post/%postun.

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

Смежные вопросы