Mock-urpm — различия между версиями

Материал из Rosalab Wiki
Перейти к: навигация, поиск
(Как использовать)
м (added category)
 
(не показано 12 промежуточных версий 4 участников)
Строка 1: Строка 1:
 
===Обзор===
 
===Обзор===
Mock - программа, собирающая rpm пакеты внутри chroot. Содержимое этого chroot определяется конфигурационными файлами, которых может быть несколько (нужный выбирается опцией -r).
+
'''mock-urpm''' - программа, собирающая rpm пакеты внутри chroot. Содержимое этого chroot определяется конфигурационными файлами, которых может быть несколько (нужный выбирается опцией -r).
  
 
===Что умеет mock-urpm===
 
===Что умеет mock-urpm===
Строка 15: Строка 15:
 
* может работать с git/cvs/svn. Пока вообще не не пробовал, но как-то может.
 
* может работать с git/cvs/svn. Пока вообще не не пробовал, но как-то может.
 
* испольнять указанные команды в последнем чруте, копировать туда/оттуда файлы. Правда, после использования tmpfs чрут будет пустой.
 
* испольнять указанные команды в последнем чруте, копировать туда/оттуда файлы. Правда, после использования tmpfs чрут будет пустой.
* имеет вроде рабочий bash-autocomplete
 
 
* защита от зависания процесса сборки (можно установить таймаут)
 
* защита от зависания процесса сборки (можно установить таймаут)
* многие параметры настраиваются через конфигурационные файлы. При запуске можно указать нужный конфигурационный файл (-r configname.cfg)
+
* многие параметры настраиваются через конфигурационные файлы. При запуске можно указать нужный конфигурационный файл (-r configname)
 
+
=== Что не умеет, но в планах есть ===
+
* сейчас нет возможности повлиять на набор media у urpmi, все работает на основе настроек источников в системе. Надо добавить Возможность изменения набора media в конфигах.
+
* установка идет через urpmi --root, надо добавить возможность использовать и --urpmi-root
+
* улучшить вывод информации о прогрессе установки (парсить вывод urpmi и отображать хотя бы "установлено пакетов: count/total")
+
  
 
===Как использовать===
 
===Как использовать===
Если поставили пакет через sudo urpmi, то имеем правильно настроенного пользователя. sudo mock-urpm /path/to/src/rpm --enable tmpfs должен привести к успеху.
+
====Установка====
Логи читаем в /var/lib/mock-urpm/{rootname}/results.
+
Установить пакет можно командой {{Cmd|sudo urpmi mock-urpm}}, при этом произойдёт автоматическая настройка пользователя для работы с mock-urpm.
  
Так же все подробно описано в man mock-urpm.
+
====Настройка====
 +
Все конфигурационные файлы лежат в {{Источник|/etc/mock-urpm}}.
 +
 
 +
Настройки по умолчанию вшиты в скрипт, поэтому все конфигурационные файлы могут быть пустыми.
 +
 
 +
Основной файл, {{Источник|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}}
  
 
===Полезные статьи===
 
===Полезные статьи===
 
http://fedoraproject.org/wiki/Using_Mock_to_test_package_builds
 
http://fedoraproject.org/wiki/Using_Mock_to_test_package_builds
 +
 +
[[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