Коринф – система сборки пакетов под произвольные целевые операционные системы на основе единого src.rpm, выполненного согласно правилам ALT Linux.
Название Korinf (Коринф) предложено Алексеем Новодворским. Как известно, Сизиф был царём Коринфа.
Проект развивается из системы сборки, применяемой в Etersoft для сборки бинарных пакетов с разрабатываемыми продуктами (WINE@Etersoft, haspd, Postgre SQL, freenx и прочее).
Система готова к самостоятельному использованию. В простейшем случае она может быть использована установленной из пакета. В случаях, требующих модификации системы сборки, для разработки, в соседние каталоги разворачиваются git-репозитории etersoft-build-utils и korinf.
По вопросам и проблемам можно обращаться в support@etersoft.ru.
Применение
Сборка пакетов, не являющихся системообразующими (неправильно применять Коринф для сборки glibc или rpm для разных систем).
Тестовая пересборка пакета (проекта) «под все системы» (полезно для тестирования разработчиком).
Создание дистрибутиво-специфичных репозиториев бинарных пакетов (позволяет не заниматься пустой работой по упаковыванию Clip Art для разных систем).
Сборка пакетов в автоматическом режиме на основе специального файла задания (робот-сборщик).
Полученные репозитории могут быть использованы при сборке специальных версий дистрибутивов (mkimage для ALT Linux).
Единый исходник
Исходной единицей, отправляемой на сборку, является src.rpm со спеком, написанным согласно принятым в ALT Linux правилам.
Спек желательно иметь идеальный (вычитанный согласно новейшим представлениям о его красоте).
Коринф выполняет организационную работу по передаче задания на сборку пакета и публикацию результата.
Сначала rpm-спек преобразуется из спека для ALT Linux с помощью команды rpmbph (из etersoft-build-utils), далее выполняется его сборка в целевой системе, где задействуется пакет rpm-build-altlinux-compat (обеспечивающий совместимость спека по макросам с целевой системой).
Сборка происходит на сборочной машине в chroot'е целевой системы под специальным пользователем, либо в удалённой системе, доступной через ssh.
Для не rpm-систем после сборки производится конвертирование пакета с помощью alien (в deb или tgz) или отдельным скриптом.
Результат сборки публикуется (копируется в указанный каталог).
Успешность сборки контролируется, но в любом случае протокол сборки также публикуется.
Дополнительно
Для систем, в которые невозможно преобразование из rpm (Free BSD, Gentoo, Solaris), могут быть написаны собственные правила сборки (портежи и ебилды).
Сейчас сборка проводится в chroot в конкретную систему. Предлагается задействовать контейнеры Open VZ, распространяя или используя готовые шаблоны/контейнеры.
Перед сборкой пакета нужно установить все необходимые для сборки пакеты. Существует команда получения списка необходимых для сборки пакетов (rpmgp -l). Далее штатным средством системы (apt-get, yum) в неё устанавливаются эти пакеты.
Чтобы подготовить систему к сборке, нужно дважды собрать в ней пакеты rpm-build-altlinux-compat и etersoft-build-utils (первый раз штатными средствами, второй раз – уже их средствами): это выполняется скриптом build-strap.sh
Как развернуть сборочную среду
Среда разворачивается только в ALT Linux.
Из пакета
Установить пакеты korinf и etersoft-build-utils
Настроить конфигурационный файл /etc/eterbuild/korinf, указав путь к каталогу с системами (в котором содержатся каталоги типа Fedora / 10, содержащие корневую ФС)
Настроить пути к репозиториям с пакетами в /etc/eterbuild/apt (для сборки пакетов в hasher)
Запустить сборку командой korinf <название пакета>
При установке rpm из стандартного каталога порта /usr/ports/archivers/rpm ставится rpm 3.0.6, который не пригоден.
Установка rpm 5
Как входить в систему
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:
Добавление нового пользователя:
1. Включить в группу builder (через http://sec)
2. Включить в группу builder локально (через /etc/group) – sudo не понимает удалённых (через nss) пользователей
3. Добавить в hasher ( # hasher-useradd USER)
Для сборки пакета (на примере etercifs) нужно выполнить скрипт из каталога bin-wine (название скрипта соответствует названию пакета):
Без указания параметров будут собраны пакеты под все системы версии last.
В каталоге назначения кроме каталогов с версиями программ могут быть ссылки или каталоги
last – указывает на последнюю версию
stable – последняя стабильная версия
testing – каталог для тестовых сборок стабильной версии
unstable – каталог для пробных сборок
Чтобы проверить текущее состояние собранности:
Для установки недостающих по зависимостям пакетов:
Переменные окружения:
ALLOWPUBLICDEBUG=1 — если её задать, будут собираться пакеты с отладкой, выкладываемые в /extra. См. eterbug #1190
Переписать, устарело:
Вспомогательные скрипты Korinf работают следующим образом:
Из скрипта build-%{пакет} вызывается функция build_rpm, описанная в ./functions/helpers.sh, которая запускает скрипт functions/autobuild-functions.sh. В нем используется функция build_in_dist, описанная в build-main.sh. Эта функция позволяет собирать пакеты для Free BSD (с помощью скрипта build-freebsd.sh), Open Solaris (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: rpmbb и rpmbph.
С результатом сборки можно ознакомиться в $TMPDIR/korinf-log/Система/Версия/Пакет.log, а также в соответствующем каталоге на ftp-сервере.
Планы
Рассмотрение LSB RPM с целью максимального соответствия стандартам.
Перевод сборки в Solaris на rpm/alien.
Веб-интерфейс
Средства автоматического обновления систем (установка обновлений)
Разворачивание чрута из минимальной системы (как из template для openvz)
Canonical, Ltd. представила свой новый публичный сервис под названием “Personal Package Archives”.
“Personal Package Archives” полностью интегрируется в другой бесплатный сервис Launchpad, и дает каждому своему пользователю 1 Gb дискового пространства для загрузки любого программного обеспечения. “Personal Package Archives” автоматически скомпилирует его, и сделает deb пакет для Ubuntu Linux.
Плюс, в “Personal Package Archives” доступен сервис оповещения о ошибках (bug reporting) и локализированное програмное обеспечение через веб-интерфейс.