Репозиторий пакетов: Сборка RPM
Сценарии
Основные директивы
Name - Название для пакета RPM (nginx)
Version - Версия собираемого пакета (1.20.2)
Release - Релиз или версия программы (1)
Summary - Краткое описание пакета (http server)
Group - Пакет принадлежит к группе (System Environment/Base)
License - Способ лицензирования (GPL)
URL - Адрес источника пакета (https://nginx.org)
BuildArch - Архитектура системы (noarch)
Provides - предоставляемые имена пакета/библиотек: usbip, libusbip.so()(64bit)
Requires - Зависимости (packagename >= 1.10-1)
Source0 - Источник данных, из которых должен собираться пакет (%{name}-%{version}.tar.gz)
Сценарии
%description
Описание пакета. Может состоять из нескольких строк, но каждая строка должна содержать до 73 символов
%files
Перечисление файлов, которые должны попасть в конечную систему при установке пакета
Макрос %defattr(<mode>,<user>,<group>) глобально задает Unix-права, чаще используется %defattr(-,root,root)
Макрос %attr(<mode>,<user>,<group>) задает права для конкретных файлов, например %attr(644,postgres,postgres) %{_libdir}/pgsql/redis.so
%config [/opt/progname/conf/file.conf] - помечает файл как конфигурационный, при удалении пакета файл будет переименован с окончанием .rpmsave
%dir [/opt/progname] - при удалении пакета будет удалена указанная папка
Тело скрипта, выполняющегося %pre (перед) / %post (после) установкой пакета в систему
Тело скрипта, выполняющегося %preun (перед) удалением / %postun (после) пакета из системы
%pre if [ $1 == 1 ];then echo "-----------------------" echo "RPM is getting installed" echo "Put your script here" echo "-----------------------" elif [ $1 == 2 ];then echo "-----------------------" echo "RPM is getting upgraded" echo "Put your script here" echo "-----------------------" fi %post if [ $1 == 1 ];then echo "-----------------------" echo "RPM is getting installed" echo "Put your script here" echo "-----------------------" elif [ $1 == 2 ];then echo "-----------------------" echo "RPM is getting upgraded" echo "Put your script here" echo "-----------------------" fi %preun if [ $1 == 1 ];then echo "-----------------------" echo "RPM is getting upgraded" echo "Put your script here which will be called when this rpm is removed" echo "-----------------------" elif [ $1 == 0 ];then echo "--------------------" echo "RPM is getting removed/uninstalled" echo "Put your script here which will be called before uninstallation of this rpm" echo "--------------------" fi %postun if [ $1 == 1 ];then echo "-----------------------" echo "RPM is getting upgraded" echo "Put your script here which will be called when this rpm is removed" echo "-----------------------" elif [ $1 == 0 ];then echo "--------------------" echo "RPM is getting removed/uninstalled" echo "Put your script here which will be called after uninstallation of this rpm" echo "--------------------" fi
Макросы команд
%{__rm}
%{__mv}
%{__tar}
%{__sed}
%{__ln_s}
%{__mkdir}
%{__mkdir_p}
Макросы директорий
%{_prefix} : /usr
%{_usr} : /usr
%{_libdir} : %{_prefix}/lib64
%{_datarootdir} : %{_prefix}/share
%{_datadir} : %{_datarootdir}
%{_sysconfdir} : /etc
%{_var} : /var
%{_localstatedir} : /var
%{_sharedstatedir} : /var/lib
%{_docdir} : %{_datadir}/doc