wiki:ru/doc/packaging/redhat
Last modified 8 years ago Last modified on 02/26/17 18:29:21

Сборка бинарных пакетов для Fedora/RHEL/CentOS

ВНИМАНИЕ: RHEL4 с набором пакетов из официальных репозиториев официально не поддерживается, поскольку там используется устаревшая версия glib (<2.6) отсутствуют slang2 и ncursesw.

Соглашения и обозначения

Для исключения неоднозначных толкований необходимо определиться с используемыми далее по тексту терминами и обозначениями:

  • ${SRC_DIR} - каталог, в котором находится дерево исходных текстов;
  • ${RPMBUILD_DIR} - каталог, используемый утилитой rpmbuild для сборки пакетов. Обычно это каталог ~/rpmbuild, но может быть и /usr/src/rpmbuild. Также вы можете переопределить этот каталог в любое удобное для вас место. См. руководство по сборке RPM-пакетов для более полной информации

Подготовка к сборке

Вам необходимо иметь копию нашего репозитория. В дереве исходных текстов выполните команды:

cd ${SRC_DIR}
./autogen.sh
./configure
make dist

После завершения работы этих команд в дереве исходных текстов появится архив вида mc-<версия>.tar.gz

Использование утилиты rpmbuild

Вы можете собрать бинарный rpm-пакет при помощи утилиты rpmbuild. При этом в вашей ОС должны быть установлены все необходимые для сборки пакеты?.

  1. Скопируйте файл ${SRC_DIR}/contrib/dist/redhat/mc.spec в ${RPMBUILD_DIR}/SPECS.
  2. Скопируйте файл ${SRC_DIR}/mc-<версия>.tar.gz в ${RPMBUILD_DIR}/SOURCES.
  3. Выполните сборку бинарного пакета.
  4. Выполните сборку пакета исходных текстов.

В виде shell-команд это выглядит так:

cp ${SRC_DIR}/contrib/dist/redhat/mc.spec ${RPMBUILD_DIR}/SPECS
cp ${SRC_DIR}/mc-*.tar.gz ${RPMBUILD_DIR}/SOURCES
rpmbuild -bb ${RPMBUILD_DIR}/SPECS/mc.spec
rpmbuild -bs ${RPMBUILD_DIR}/SPECS/mc.spec

Сборка бинарного пакета и пакета исходных текстов может быть выполнена одной командой:

rpmbuild -ba ${RPMBUILD_DIR}/SPECS/mc.spec

Для получения более подробной информации обратитесь к man rpmbuild.

Использование утилиты mock

При использовании утилиты mock нет необходимости держать в ОС установленные пакеты, необходимые для сборки нашего проекта.

  1. Скопируйте файл ${SRC_DIR}/contrib/dist/redhat/mc.spec в ${RPMBUILD_DIR}/SPECS.
  2. Скопируйте файл ${SRC_DIR}/mc-<версия>.tar.gz в ${RPMBUILD_DIR}/SOURCES.
  3. Выполните сборку пакета исходных текстов.
  4. Запустите утилиту mock с указанием необходимой ОС для сборки.

В виде shell-команд это выглядит так:

cp ${SRC_DIR}/contrib/dist/redhat/mc.spec ${RPMBUILD_DIR}/SPECS
cp ${SRC_DIR}/mc-*.tar.gz ${RPMBUILD_DIR}/SOURCES
rpmbuild --nodeps -bs ${RPMBUILD_DIR}/SPECS/mc.spec
mock ${RPMBUILD_DIR}/SRPMS/mc-*.src.rpm -r fedora-11-i386

Для получения более подробной информации обратитесь к man mock.

Использование build-ферм koji

TODO: красиво расписать. Hubbitus: help, please :)