Правильная сборка пакетов на сервере под rpm-based системами. Никаких "make install".
Подготовка сервера к сборке
1. Для начала нужно установить пакеты:
yum install -y rpmdevtools gcc make yum-utils sudo tar # Дописать пакеты, необходимые для сборки
2. Добавляем в систему пользователя, от которого будет выполняться сборка:
useradd -m rpmbuild
3. Готовим дерево сборки для пакетов:
sudo -u rpmbuild -i
rpmdev-setuptree
tree -L 1 rpmbuild/
rpmbuild/
├── BUILD # Директория сборки
├── BUILDROOT # Директория сборки
├── RPMS # Содержит готовые rpm-пакеты
├── SOURCES # Исходные коды
├── SPECS # Файлы описаний (SPEC)
└── SRPMS # Исходные srpm-пакеты
Сборка собственного пакета на примере nginx+ldap
внимание: не выполняй сборку от имени root!!!
1. Все операции выполняются от пользователя rpmbuild (чтобы не нанести вред системе)
sudo -u rpmbuild -i
2. Качаем необходимые исходники/пачи/файлы Для nginx я взял SRC пакет из официального репозитория nginx для CentOS. Модуль для авторизации с официального репозитория GIT
cd ~/rpmbuild/SRPMS/
VERSION_NG="1.2.5"
wget -nd -r -l 1 -A "nginx-${VERSION_NG}*src.rpm" http://nginx.org/packages/centos/6/SRPMS/ 2>/dev/null
cd ~/rpmbuild/SOURCES/
git clone https://github.com/kvspb/nginx-auth-ldap
3. Устанавливаем необходимые для сборки пакеты
yum-builddep nginx-${VERSION_NG}-*.ngx.src.rpm --nogpgcheck
4. Устанавливаем пакет (он будет распакован в предварительно подготовленное дерево каталогов /home/rpmbuild/rpmbuild)
rpm -ivh nginx-${VERSION_NG}-*.ngx.src.rpm
5. Вносим изменения в файл сборки
vim ~/rpmbuild/SPECS/nginx.spec
6. Меняем в строке номер релиза (чтобы пакет обновился при установке)
Release: 4%{?dist}.wil
ЗАМЕЧАНИЕ: Я также указал суффикс wil для уникальности пакета
7. Добавляем строку описания источника с исходными текстами модуля
Source1001: nginx-auth-ldap
8. Добавляем модуль в параметры сборки nginx (так же как при обычной сборке)
./configure \
ЗАМЕЧАНИЕ: Возможно потребуется добавить параметры сборки дважды для debug и original версий пакета
9. Теперь можем приступить к сборке нашего пакета
cd ~/rpmbuild/SPECS/
rpmbuild -bb nginx.spec
10. После сборки будет примерно следующая запись:
Записан: /home/rpmbuild/rpmbuild/RPMS/x86_64/nginx-1.bla.bla.rpm
Записан: /home/rpmbuild/rpmbuild/RPMS/x86_64/nginx-debug-1.bla.bla.rpm
11. Это наши готовые для установки пакеты, теперь можно установить через rpm или использовать локальный репозиторий для установки через yum 12. Так же рекомендую создать srpm-пакет, чтобы не потерять ваши изменения и можно было развернуть его на любом сервере
rpmbuild -bs nginx.spec
13. Файл будет тут
Записан: /home/rpmbuild/rpmbuild/SRPMS/nginx-1.bla.bla.src.rpm
14. PROFIT?