Сборка пакетов rpm
ВНИМАНИЕ: команды предваряемые символом '#
' должны выполняться с правами 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.