Сборка пакетов rpm

Материал из FedoraMD.org Wiki
Перейти к навигации Перейти к поиску

ВНИМАНИЕ: команды предваряемые символом '#' должны выполняться с правами root (Суперпользователь). Открыв терминал (или находясь в консоли) с правами обычного пользователя, введите команду $ su - для повышения уровня привелегий. Символы '$' и '#' в начале строки не являются частью команды и не должны вводится. Прочие команды могут выполняться с правами обыкновенного пользователя.


Подготовка

Для правильной сборки пакетов нам понадобиться mock. Для установки выполняем следующее:

# yum install mock

Mock позволяет собирать пакеты в chroot от простого пользователя (без прав root), причём определяется автоматически какие пакеты нужны для сборки[1]. Для того, чтобы пользователь мог запускать mock необходимо добавить пользователя или пользователей в группу mock:

# usermod -a -G mock <user>

Не забываем, что после добавления в группу, необходимо пройти заново авторизацию.

Сборка

Для сборки нам нужен готовый src.rpm. Запуск сборки происходит по команде:

$ mock -r fedora-8-i386 rebuild package-1.2-3.src.rpm

где fedora-8-i386 - профиль для сборки. Список профилей доступен по /etc/mock.

Если необходимо просматривать установку в реальном режиме, то используйте параметр -v (verbose)[2].

Первый запуск обычно достаточно долгий, т.к. создаётся основное дерево для сборки. Но последующие запуски будут быстрее, т.к. используется кэш[3].

Дополнительные опции Mock

Вы можете добавлять и менять репозитории в профиле. Так же Вы можете добавить прокси сервер, если доступ в Интернет проходит только через прокси. Просто добавьте после строк конфигурации и перед репозиториями:

proxy=http://localhost:3128/

Есть возможность задавать значение макросов rpm. при помощи добавления в тот же профиль после конфигурационных строк, например:

config_opts['macros']['%packager'] = "FedoraMD.org Project"
config_opts['macros']['%vendor'] = "FedoraMD.org Project"

или заданием параметра --define "packager FedoraMD.org Project" --define "vendor FedoraMD.org Project" при вызове mock.

По умолчанию собранные пакеты и логи находятся в /var/lib/mock.