"Сборка ПО из SOURCE rpm пакета на сервере CentOS 6 (nginx+LDAP)"

Fri 04 April 2014

Правильная сборка пакетов на сервере под 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?

By A. Semenov, Category: linux

Comments

Яндекс.Метрика