Korinf: различия между версиями
(→Ссылки) |
(→Ссылки) |
||
Строка 174: | Строка 174: | ||
=== Ссылки === | === Ссылки === | ||
* [http://www.altlinux.ru/media/protva-2012.pdf Korinf: трудности на пути к универсальной сборочной | * [http://www.altlinux.ru/media/protva-2012.pdf Korinf: трудности на пути к универсальной сборочной системе (стр. 16)] | ||
системе (стр. 16) | |||
* [http://bugs.etersoft.ru/show_bug.cgi?id=4534 Bug 4534 - Развёртывание korinf на сервере pbf для публичной сборки] | * [http://bugs.etersoft.ru/show_bug.cgi?id=4534 Bug 4534 - Развёртывание korinf на сервере pbf для публичной сборки] | ||
* [http://etersoft.ru/about/news/306-korinf Открыт публичный сервер Korinf] | * [http://etersoft.ru/about/news/306-korinf Открыт публичный сервер Korinf] | ||
* [http://download.openvz.org/template/precreated/ | * [http://download.openvz.org/template/precreated/ Готовые шаблоны систем для OpenVZ] | ||
* http://www.altlinux.org/Check-unmets | * http://www.altlinux.org/Check-unmets | ||
<references/> | <references/> |
Версия 17:05, 3 августа 2013
Korinf
Описание
Коринф (Korinf) <ref>Название Коринф предложено Алексеем Новодворским. Как известно, Сизиф был царём Коринфа. </ref> - система сборки пакетов под произвольные целевые операционные системы на основе единого src.rpm, выполненного согласно правилам ALT Linux.
Проект развивается из системы сборки, применяемой в компании Etersoft для сборки бинарных пакетов с разрабатываемыми продуктами (WINE@Etersoft, haspd, PostgreSQL, freenx и прочее) под целевые платформы.
Части, из которых состоит Korinf, разбиты на пакеты, которые могут быть использованы и независимо:
- rpm-build-altlinux-compat — rpm-макросы, создающие одинаковую среду макросов на любой платформе;
- etersoft-build-utils — утилиты для сборки пакетов;
- korinf — собственно система сборки пакетов под различные системы;
- korinf-sisyphus — автоматическая (пере)сборка пакетов из заданных пакетов в репозитории ALT Linux Sisyphus;
- eepm — единая команда управления пакетами
Система готова к независимой инсталляции и использованию. В простейшем случае она может быть использована установленной из пакета. В случаях, требующих модификации системы сборки (её разработки или адаптации), в соседние каталоги просто разворачиваются git-репозитории etersoft-build-utils, rpm-built-altlinux-compat и korinf. См. соотв. пункт документации ниже.
По вопросам и проблемам можно обращаться в support@etersoft.ru.
Применение
- Сборка пакетов, не являющихся системообразующими (неправильно применять Коринф для сборки glibc или rpm для разных систем).
- Тестовая пересборка пакета (проекта) "под все системы" (полезно для тестирования разработчиком).
- Создание дистрибутиво-специфичных репозиториев бинарных пакетов (позволяет не заниматься пустой работой по упаковыванию ClipArt для разных систем).
- Сборка пакетов в автоматическом режиме на основе специального файла задания (робот-сборщик).
- Полученные репозитории могут быть использованы при сборке специальных версий дистрибутивов для ALT Linux.
- При подключении на автопересборку пакетов из Сизифа позволяет сопровождать пакет в одной системе, с автоматической сборкой под остальные
Новости
korinf-1.9.6 от 22.05.2012
- Исправлены ошибки в порядке получения списков замен названий пакетов.
- Установка сборочных зависимостей теперь выполняется без предварительной конвертации rpm-пакета (которая причём раньше по ошибке выполнялась дважды.
- Улучшен вывод при сборке пакета
- Добавлен ключ -r/-R для тестирования наличия необходимых для сборки и установки пакета зависимостей
- Добавлена проверка корректности зависимостей по собранным пакетам. Это поможет не мучить клиентов пакетами, которые у них не будут устанавливаться.
- Окончательно введена в строй сборка пакетов с зависимостями для deb-систем.
- Внутри Korinf произошли существенные изменения: приведены к общему наименованию используемые глобальные переменные — контекст целевой системы (название, тип пакетов, архитектура и пр.). Значительно модифицирован и etersoft-build-utils.
- Существенно переработаны и выверены списки замен для deb-пакетов (по проектам postgresql, rx, wine)
Единый исходник
Исходной единицей, отправляемой на сборку, является src.rpm со спеком, написанным согласно принятым в ALT Linux правилам. Спек желательно иметь идеальный (вычитанный согласно новейшим представлениям о его красоте).
Поддерживаемые целевые основные системы:
- Debian/Ubuntu (deb-based)
- Fedora / SUSE / Mandriva (RPM-based)
- ArchLinux
- Slackware
- Gentoo
- FreeBSD
Примерный список систем, под которые реально производится сборка, можно увидеть на http://etersoft.ru/wine/platforms.
В процессе разработки поддержка следующих систем:
- OpenSolaris
- SunOS
- Mac OS
- PuppyRus
- Windows
Процесс сборки
Коринф выполняет организационную работу по передаче задания на сборку пакета и публикацию результата. Входной единицей является пакет src.rpm. Сначала rpm-спек преобразуется из спека ALT Linux с помощью команды rpmbph (из etersoft-build-utils), далее выполняется его сборка в целевой системе, где задействуется пакет rpm-build-altlinux-compat (обеспечивающий совместимость rpm-окружения по макросам с целевой системой). Сборка происходит на сборочной машине в chroot'е целевой системы под специальным пользователем, либо в удалённой системе, доступной через ssh. Для не rpm-систем после сборки производится конвертирование пакета с помощью alien (в deb или tgz) или отдельным скриптом. Результат сборки публикуется (копируется в указанный каталог). Успешность сборки контролируется, но в любом случае протокол сборки также публикуется.
Дополнительно
Для систем, в которые невозможно преобразование из rpm (FreeBSD, Gentoo, Solaris), могут быть написаны собственные правила сборки (портежи и ебилды).
- Gentoo
- FreeBSD
- Solaris
Что нужно
- Сейчас сборка проводится в chroot в конкретную систему. Предлагается задействовать контейнеры OpenVZ, распространяя или используя готовые шаблоны/контейнеры.
- Чтобы подготовить систему к сборке, нужно собрать в ней пакет rpm-build-altlinux-compat (с установкой): это выполняется скриптом build-strap.sh
Как развернуть сборочную среду
Пока разворачивание среды отрабатывалось только в ALT Linux.
Из пакета
- Установить пакеты korinf и etersoft-build-utils
- Настроить конфигурационный файл /etc/eterbuild/korinf, указав путь к каталогу с системами (в котором содержатся каталоги типа Fedora/10, содержащие корневую ФС)
- Настроить пути к репозиториям с пакетами в /etc/eterbuild/apt (для сборки пакетов в hasher)
- Запустить сборку командой korinf <название пакета>
Из репозитория
- Склонировать репозиторий etersoft-build-utils
- Склонировать репозиторий korinf в соседний каталог
Особенности FreeBSD
При установке rpm из стандартного каталога порта /usr/ports/archivers/rpm ставится rpm 3.0.6, который не пригоден. Установка rpm 5 %% $ cd /usr/ports/archivers/rpm $ make install %%
Как входить в систему
- korlogin <Дистрибутив/версия> [-r]
- <Дистрибутив/версия> - в стиле ALTLinux/4.0 или SUSE/10.3
-r - вход под root, а не под пользователем
Заливать пакеты внутрь можно либо найдя в системе каталог вида /tmp/autobuild/chroot-*-9jT7RA/tmp либо находясь в чруте, получить пакет по ftp.
Как проводить групповые операции внутри чрутов
(Устарело!) На примере etercifs:
В korinf есть скрипт run-script.sh в каталоге tools/run-script/. Если его запустить с параметром etercifs, то он прогонит сборку по всем системам (правила записаны в scripts/etercifs)
Предварительно надо выполнить сборку etercifs во всех системах с переменной окружения BOOTSTRAP=1, чтобы собранные пакеты ставились в систему после установки.
Подготовка к использованию
Инструкция по использованию на сборочном сервере builder компании Etersoft:
Добавление нового пользователя:
- Включить в группу builder (через http://sec)
- Включить в группу builder локально (через /etc/group) - если sudo ещё не понимает удалённых (через nss) пользователей
- Добавить в hasher ( # hasher-useradd USER)
$ mkdir -p ~/Projects $ cd Projects $ git clone git://git.etersoft.ru/projects/korinf/etersoft-build-utils.git $ git clone git://git.etersoft.ru/projects/korinf/korinf.git $ git clone git://git.etersoft.ru/projects/korinf/rpm-build-altlinux-compat.git
Пример сборки
Для сборки пакета (на примере etercifs) нужно выполнить скрипт из каталога bin-wine (название скрипта соответствует названию пакета):
$ cd bin-wine $ ./etercifs.sh ALTLinux/p7 last
Без указания параметров будут собраны пакеты под все системы версии last.
В каталоге назначения кроме каталогов с версиями программ могут быть ссылки, например:
- last - указывает на последнюю версию
- stable - последняя стабильная версия
- testing - каталог для тестовых сборок стабильной версии
- unstable - каталог для пробных сборок
Чтобы проверить текущее состояние собранности:
$ wine-etersoft.sh -c
Для установки недостающих по зависимостям пакетов:
$ wine-etersoft.sh -i
С результатом сборки можно ознакомиться в korinf/log/Система/Версия/Пакет.log, а также в соответствующем каталоге на ftp-сервере.
!!Переписать, устарело:!! Переменные окружения: ALLOWPUBLICDEBUG=1 — если её задать, будут собираться пакеты с отладкой, выкладываемые в /extra. См. ((http://bugs.etersoft.ru/show_bug.cgi?id=1190 eterbug #1190))
Вспомогательные скрипты Korinf работают следующим образом: Из скрипта build-%{пакет} вызывается функция build_rpm, описанная в ./functions/helpers.sh, которая запускает скрипт functions/autobuild-functions.sh. В нем используется функция build_in_dist, описанная в build-main.sh. Эта функция позволяет собирать пакеты для FreeBSD (с помощью скрипта build-freebsd.sh), OpenSolaris (build-solaris.sh), Gentoo (build-gentoo.sh) (для этих систем сборка происходит на отдельных машинах), ALTLinux (./functions/build-hasher.sh) и других дистрибутивов (build_rpms из ./functions/build-rpm.sh) (для deb дистрибутивов производится конвертирование из rpm с помощью функции convert_rpm; с ее же помощью происходит конвертирование в tgz и tar.gz). Для 2 последних случаев монтируется файловая система соответствующего дистрибутива (системы указываются в переменной REBUILDLIST скрипта build-%{пакет}) (с помощью mount-linux из ./functions/mount.sh). Сборка для Linux при этом происходит в чруте в подмонтированной файловой системе с помощью средств из пакета etersoft-build-utils: ((http://www.freesource.info/wiki/AltLinux/Sisyphus/devel/SborkaPaketov& rpmbb и rpmbph)).
Планы
- Рассмотрение LSB RPM с целью максимального соответствия стандартам.
- Перевод сборки в Solaris на rpm/alien.
- Веб-интерфейс
- Средства автоматического обновления систем (установка обновлений)
- Разворачивание чрута из минимальной системы (как из template для openvz)
- Сборка в pbuilder/Debian, build/SUSE, mock/Fedora
Ссылки
- Korinf: трудности на пути к универсальной сборочной системе (стр. 16)
- Bug 4534 - Развёртывание korinf на сервере pbf для публичной сборки
- Открыт публичный сервер Korinf
- Готовые шаблоны систем для OpenVZ
- http://www.altlinux.org/Check-unmets
<references/>
Подобные системы
- http://www.openpkg.org/
- http://fedoraproject.org/wiki/Projects/Mock
- http://www.pgbuildfarm.org/cgi-bin/show_status.pl
- http://build.samba.org/
- http://sisyphus.sen.cwi.nl:8080/
- http://bf.openpkg.net/openpkg-cgi/openpkg-tools/bf-ui.cgi
- https://build.opensuse.org/
- Canonical, Ltd. представила свой новый публичный сервис под названием "Personal Package Archives".
"Personal Package Archives" полностью интегрируется в другой бесплатный сервис Launchpad, и дает каждому своему пользователю 1 Gb дискового пространства для загрузки любого программного обеспечения. "Personal Package Archives" автоматически скомпилирует его, и сделает deb пакет для Ubuntu Linux. Плюс, в "Personal Package Archives" доступен сервис оповещения о ошибках (bug reporting) и локализированное программное обеспечение через веб-интерфейс.