Мы используем RPM для упаковки и развертывания нашего продукта. Наш продукт зависит от других компонентов, таких как база данных postgresql и т. Д., Которые указаны в нашем файле .spec. Скажем, один из файлов конфигурации стороннего компонента должен быть исправлен до установки нашего продукта (и восстановлен после его удаления). Как правильно это сделать? Есть ли примеры пакетов RPM, которые делают то же самое?
Спасибо!
Файлы спецификации RPM поддерживают установку (%pre
) и после установки (%post
) или перед удалением (%preun
) и после удаления (%postun
) скриптлеты, которые можно использовать для обновления любой конфигурации системы перед установкой пакета RPM или после его удаления.
Вы можете проверить, например, пакет httpd, где в %pre
раздел определен для добавления пользователя apache и в %post
Раздел определен для включения службы httpd при загрузке.
rpm -q --scripts httpd
preinstall scriptlet (using /bin/sh):
# Add the "apache" user
getent group apache >/dev/null || groupadd -g 48 -r apache
getent passwd apache >/dev/null || \
useradd -r -u 48 -g apache -s /sbin/nologin \
-d /var/www -c "Apache" apache
exit 0
postinstall scriptlet (using /bin/sh):
# Register the httpd service
/sbin/chkconfig --add httpd
/sbin/chkconfig --add htcacheclean
preuninstall scriptlet (using /bin/sh):
if [ $1 = 0 ]; then
/sbin/service httpd stop > /dev/null 2>&1
/sbin/chkconfig --del httpd
/sbin/service htcacheclean stop > /dev/null 2>&1
/sbin/chkconfig --del htcacheclean
fi
posttrans scriptlet (using /bin/sh):
test -f /etc/sysconfig/httpd-disable-posttrans || \
/sbin/service httpd condrestart >/dev/null 2>&1 || :
Вот соответствующие разделы в файле SPEC для пакета httpd:
%pre
# Add the "apache" user
getent group apache >/dev/null || groupadd -g 48 -r apache
getent passwd apache >/dev/null || \
useradd -r -u 48 -g apache -s /sbin/nologin \
-d %{contentdir} -c "Apache" apache
exit 0
%post
# Register the httpd service
/sbin/chkconfig --add httpd
Я вещь Максимальная частота вращения руководство является исчерпывающим источником информации о том, как это сделать.