rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
Для начала ставим необходимые пакеты:
yum install -y rpmdevtools
Также нам необходимо получвть SRС RPM пакеты из репозитория для пересборки, для этого нам понадобится программа yumdownloader:
yum -y install yum-utils
Создаем пользователя, под которым будем собирать пакеты:
/usr/sbin/useradd rpmbuild
Входим в систему под именем нового пользователя:
su - rpmbuild
Переходим в домашнюю папку:
cd
Инициализируем структуру каталогов для сборки RPM:
rpmdev-setuptree
Теперь скачиваем SRC RPM пакет интересующего нас модуля:
yumdownloader --enablerepo=epel-source --source nginx
А если требуется пересобрать пакет не из EPEL, а из основного репозитория CentOS? Тут возникает небольшая проблема - репозиторий с SRC RPM пакетами стандартно не добавлен в систему. Поэтому его придется установить:
wget http://fastvps.googlecode.com/svn/trunk/configs/CentOS-SRPMS.repo -O/etc/yum.repos.d/CentOS-SRPMS.repo
yum update
А скачивание с него выглядит так (либо update-SRPMS, если требуется самая новая версия пакета):
yumdownloader --enablerepo=base-SRPMS --source mysql
Итак, вернемся к nginx, попробуем собрать для него бинарный RPM пакет.
От имени рута в папке /home/rpmbuild выполняем команду:
yumdownloader --enablerepo=epel-source --source nginx
После чего, входим в систему под именем rpmbuild и обнаруживаем в домашней папке следующий файл:
nginx-0.6.39-1.el5.src.rpm
Теперь распаковываем его командой:
rpm -ihv nginx-0.6.39-1.el5.src.rpm
Далее нам необходимо поставить все пакеты, требуемые для сборки нашего пакета (запускаем от рута):
yum-builddep nginx-0.6.39-1.el5.src.rpm
После вышеописанных операций, у нас имеются исходный код пакета и SPEC файл, описывающий как его собирать в бинарник.
Переходим в папку со SPEC файлами:
cd rpmbuild/SPECS/
Запускаем сборку пакета:
rpmbuild -bb nginx.spec
Если же требуется только наложить патчи, но не билдить пэкадж, команда такая:
rpmbuild -bp nginx.spec
Если в ответ на это, будет выдан список пакетов с надписью "error: Failed build dependencies", то их придется поставить от имени рута.
Ну вот и все, в случае успешной сборки мы получим бинарные файлы в папке:
ls ~/rpmbuild/RPMS/x86_64/
nginx-0.6.39-1.x86_64.rpm nginx-debuginfo-0.6.39-1.x86_64.rpm
No comments :
Post a Comment
Note: only a member of this blog may post a comment.