Mock-urpm — различия между версиями
Xlab (обсуждение | вклад) м (→Настройка) |
D uragan (обсуждение | вклад) м (added category) |
||
(не показано 6 промежуточных версий 2 участников) | |||
Строка 19: | Строка 19: | ||
===Как использовать=== | ===Как использовать=== | ||
+ | ====Установка==== | ||
+ | Установить пакет можно командой {{Cmd|sudo urpmi mock-urpm}}, при этом произойдёт автоматическая настройка пользователя для работы с mock-urpm. | ||
+ | |||
====Настройка==== | ====Настройка==== | ||
Все конфигурационные файлы лежат в {{Источник|/etc/mock-urpm}}. | Все конфигурационные файлы лежат в {{Источник|/etc/mock-urpm}}. | ||
− | |||
− | В первую очередь применяются настройки из {{Источник|site-defaults.cfg}}, затем из конкретного пользовательсткого конфигурационного файла (default.cfg, если не указан другой опцией -r) | + | Настройки по умолчанию вшиты в скрипт, поэтому все конфигурационные файлы могут быть пустыми. |
+ | |||
+ | Основной файл, {{Источник|site-defaults.cfg}}, содержит закомментированные настройки по умолчанию. | ||
+ | В первую очередь применяются настройки из {{Источник|site-defaults.cfg}}, затем из конкретного пользовательсткого конфигурационного файла ({{Источник|default.cfg}}, если не указан другой опцией -r) | ||
====Запуск==== | ====Запуск==== | ||
− | + | Команда {{Cmd|mock-urpm /path/to/src.rpm --enable tmpfs}} соберет rpm из указанного src.rpm. | |
+ | |||
+ | Chroot контейнеры создаются в папке {{Источник|/var/lib/mock-urpm}}. | ||
+ | |||
+ | После сборки контейнер содержит каталог {{Источник|results/}}, там складываются логи процесса сборки и собранные пакеты. | ||
+ | |||
+ | Также всё подробно описано в {{Cmd|man mock-urpm}}. | ||
+ | |||
+ | ====Использование с Git==== | ||
+ | Файл {{Источник|site-defaults.cfg}} содержит заготовку настроек SCM, в том числе и Git: | ||
+ | # Things that must be adjusted if SCM integration is used: | ||
+ | # | ||
+ | # config_opts['scm'] = True | ||
+ | # config_opts['scm_opts']['method'] = 'git' | ||
+ | # config_opts['scm_opts']['cvs_get'] = 'cvs -d /srv/cvs co SCM_BRN SCM_PKG' | ||
+ | # config_opts['scm_opts']['git_get'] = 'git clone SCM_BRN git://localhost/SCM_PKG.git SCM_PKG' | ||
− | + | Изменение конфига на примере [[Сборочная_среда_ABF|ABF]]: | |
− | + | # Things that must be adjusted if SCM integration is used: | |
+ | # | ||
+ | config_opts['scm'] = True | ||
+ | config_opts['scm_opts']['method'] = 'git' | ||
+ | config_opts['scm_opts']['git_get'] = 'git clone SCM_BRN https://username@abf.rosalinux.ru/import/SCM_PKG.git SCM_PKG' | ||
+ | Запуск на примере пакета {{Pkg|kernel}} и ветки '''rosa2012lts''': | ||
− | + | {{Cmd|mock-urpm --scm-enable --scm-option package=kernel --scm-option branch=rosa2012lts}} | |
===Полезные статьи=== | ===Полезные статьи=== | ||
Строка 39: | Строка 64: | ||
[[en:mock-urpm]] | [[en:mock-urpm]] | ||
+ | [[Категория:Packaging Policies]] | ||
+ | [[Категория:Инструменты_разработки]] |
Текущая версия на 12:31, 24 декабря 2012
Содержание
Обзор
mock-urpm - программа, собирающая rpm пакеты внутри chroot. Содержимое этого chroot определяется конфигурационными файлами, которых может быть несколько (нужный выбирается опцией -r).
Что умеет mock-urpm
(ну и mock в федоре, конечно же):
- собирает пакеты в chroot (монтирует туда все нужные директории с хоста, ставит минимальный набор пакетов, доустанавливает нужные для сборки конкретного пакета и собирает)
- кэширует установленную минимальную систему, при следующем запуске лишь разархивирует ее и проводит апдейт пакетов. При внесении изменений в конфиги удаляет кэш.
при сборке одного пакета все результаты (логи и собранные rpm) можно найти в /var/lib/mock-urpm/{rootname}/results
- понижает свои права, когда нужно. Для этого при установке создается группа mock-urpm и пользователь из SUDO_USER помещается в эту группу (поэтому установка должна производиться через sudo, иначе root будет помещен в группу mock-urpm )
- имеет интерфейс для подключения плагинов. Часть функционала сейчас реализована через плагины (tmpfs, ccache, selinux, root-cache, bind-mount).
- использует tmpfs (включается через конфиги (site-defaults.cfg) или аргументов --enable tmpfs).
- имеет модуль поддержки selinux. Пока что он отключен, но на будущее может пригодиться
- может подсовывать в chroot заданный /etc/hosts
- может работать с git/cvs/svn. Пока вообще не не пробовал, но как-то может.
- испольнять указанные команды в последнем чруте, копировать туда/оттуда файлы. Правда, после использования tmpfs чрут будет пустой.
- защита от зависания процесса сборки (можно установить таймаут)
- многие параметры настраиваются через конфигурационные файлы. При запуске можно указать нужный конфигурационный файл (-r configname)
Как использовать
Установка
Установить пакет можно командой sudo urpmi mock-urpm, при этом произойдёт автоматическая настройка пользователя для работы с mock-urpm.
Настройка
Все конфигурационные файлы лежат в /etc/mock-urpm.
Настройки по умолчанию вшиты в скрипт, поэтому все конфигурационные файлы могут быть пустыми.
Основной файл, site-defaults.cfg, содержит закомментированные настройки по умолчанию. В первую очередь применяются настройки из site-defaults.cfg, затем из конкретного пользовательсткого конфигурационного файла (default.cfg, если не указан другой опцией -r)
Запуск
Команда mock-urpm /path/to/src.rpm --enable tmpfs соберет rpm из указанного src.rpm.
Chroot контейнеры создаются в папке /var/lib/mock-urpm.
После сборки контейнер содержит каталог results/, там складываются логи процесса сборки и собранные пакеты.
Также всё подробно описано в man mock-urpm.
Использование с Git
Файл site-defaults.cfg содержит заготовку настроек SCM, в том числе и Git:
# Things that must be adjusted if SCM integration is used: # # config_opts['scm'] = True # config_opts['scm_opts']['method'] = 'git' # config_opts['scm_opts']['cvs_get'] = 'cvs -d /srv/cvs co SCM_BRN SCM_PKG' # config_opts['scm_opts']['git_get'] = 'git clone SCM_BRN git://localhost/SCM_PKG.git SCM_PKG'
Изменение конфига на примере ABF:
# Things that must be adjusted if SCM integration is used: # config_opts['scm'] = True config_opts['scm_opts']['method'] = 'git' config_opts['scm_opts']['git_get'] = 'git clone SCM_BRN https://username@abf.rosalinux.ru/import/SCM_PKG.git SCM_PKG'
Запуск на примере пакета kernel и ветки rosa2012lts:
mock-urpm --scm-enable --scm-option package=kernel --scm-option branch=rosa2012lts
Полезные статьи
http://fedoraproject.org/wiki/Using_Mock_to_test_package_builds