Сборка или пересборка, компиляция или перекомпиляция бинарных пакетов из src.rpm в rpm для CentOS

Сборка и перекомпиляция бинарных пакетов из src.rpm в rpm для CentOS

Поставим репозиторий Epel:
Epel

Поставим пакет с тулсами:

# yum install -y rpmdevtools

Также нам необходимо получить SRС RPM пакеты из репозитория для пересборки, нам поможет прога — yumdownloader:

# yum -y install yum-utils

Если нужно можно создать пользователя который будет собирать пакеты:

# /usr/sbin/useradd rpmbuild

Войдем в систему из под раннее созданного юзера rpmbuild:

# su - rpmbuild

Проинициализируем структуру директорий для сборки RPM:

# rpmdev-setuptree

Если у Вас есть уже готовый пакет — package.src.rpm (пример: php4.x.x.src.rpm), то перейдите сразу к шагу 2.
1. В качестве примера я возьму пакет php4.x.x, скачиваю SRC RPM пакет:

# yumdownloader --enablerepo=epel-source --source php

Собираем для пхп4 бинарный RPM пакет.

От рутовского пользователя в папке /home/rpmbuild выполним:

# yumdownloader --enablerepo=epel-source --source php

И так, залогинимся из под юзера rpmbuild и видим в домашней папке следующий файл php4.x.x.src.rpm
2. Если у Вас есть готовый .src.rpm, то необходимо его распаковать:

# rpm -ihv php4.x.x.src.rpm

Ставим все пакеты которые необходимы для нашей сборки пакета (выполняются от root):

# yum-builddep php4.x.x.src.rpm

После чего появляется исходный код пакета и SPEC файл, описывающий как его собрать в бинарный вид.

Перейдем в директорию с SPEC файлами:

# cd rpmbuild/SPECS/

Запустим сборку пакета:

# rpmbuild -bb nginx.spec

Если необходимо только наложить патчи, но не собирать пакет,то выполняем:

# rpmbuild -bp nginx.spec

Если выдаст список пакетов с надписью «error: Failed build dependencies», то их придется поставить от root-а.

Ну вот и все, в случае успешной сборки мы получим бинарные файлы в папке:

ls ~/rpmbuild/RPMS/x86_64/
php4.x.x.x86_64.rpm php-debuginfo-x.x.x86_64.rpm

Пересборка бинарных пакетов из src.rpm в rpm

Нет нужды инсталить пакет с исходниками в систему, для того чтобы пересобрать из него же бинарник. За место этого логичней собрать пакет непосредственно, с опции —rebuild .

Если Вы находитесь в каталоге где и  src.rpm, то команда будет такова (на примере php-4.x.x.src.rpm):

# rpmbuild --rebuild php-4.x.x.src.rpm

Перекомпиляция бинарных пакетов из src.rpm

Если вы хотите только перекомпилировать файлы в src.rpm-пакете, можно использовать опцию —recompile , для примера(на примере php-4.x.x.src.rpm):

# rpmbuild --recompile php-4.x.x.src.rpm

Выполняются те же процессы, что и при установке пакета с исходным кодом в систему и последующем выполнении команды:

# rpmbuild -bc --clean package.spec

Сборка или пересборка, компиляция или перекомпиляция  бинарных пакетов из src.rpm в rpm для CentOS закончена. Запутано, но попробовав 1 раз, разобравшись до конца, Вы поймете что не так уж это и сложно было)

2 thoughts on “Сборка или пересборка, компиляция или перекомпиляция бинарных пакетов из src.rpm в rpm для CentOS

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.