The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Сборка программ для ALTLinux Master с использованием hasher (linux altlinux packet rpm)


<< Предыдущая ИНДЕКС Правка src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: linux, altlinux, packet, rpm,  (найти похожие документы)
From: Kolotov Alexandr <koal DOG kirov.lug.ru> Newsgroups: http://kirov.lug.ru Date: Sun, 29 JuL 2005 17:02:14 +0000 (UTC) Subject: Сборка программ для ALTLinux Master с использованием hasher Оригинал: http://kirov.lug.ru/wiki/HasherSborkaProgramm?v=1ecn Оглавление документа Введение Установка hasher Сборка программ в hasher Проблемы Разные архитектуры Самосборные пакеты Введение Часто во время сборки пакетов по зависимостям предлагается установить очень много "лишнего" ПО. Это не всегда бывает удобно: не хочется "мусорить" в уже рабочей системе или вообще нежелательно в ней иметь некоторые средства (например, средства разработки на сервере), или часто банальной причиной является нежелание где-то искать это ПО - этот процесс утомляет, особенно если репозитарий пакетов для дистрибутива представлен в виде нескольких дисков, то все сводится к "жонглированию" дисками... Поэтому в дистрибутиве ALTLinux Master заботливой рукой мантейнера были оставлены пакеты имеющие отношение к технологии hasher. Эта технология позволяет собирать пакеты внутри "чистого" окружения (chroot), которое создается при помощи пакетов входящих в состав репозитариев описанных на пользовательской машине. Т.е. имитируется процесс установки на "чистую" систему пакетов, необходимых для сборки данного, из репозитариев, а уже в данном окружении и собирается пакет. В реальную систему пакеты не ставятся. Таким образом, на входе hasher получает src.rpm пакет, а на выходе выдает уже собранные (только из данного src.rpm) пакеты, которые мы уже можем использовать в наших репозитариях для установки на рабочие системы. За технологию hasher отвечают два пакета: hasher и hasher-priv, для работы последнего также нужен пакет sisyphus_check. Внутри пакета hasher содержится краткая, но емкая документация: README, QUICKSTART и FAQ файлы, а также man-страницы - правда они на английском языке, хотя разработчики программы вполне русскоговорящие. Этой документации, в принципе, хватает чтобы начать работать c hasher, а в FAQ рассмотрены некоторые проблемы, которые могут возникать в работе. Но рассмотрим дополнительно некоторые аспекты работы с hasher. Установка hasher На данном этапе все просто. От пользователя root делаем: # apt-get install hasher Затем, необходимо подготовить hasher - сказать какой пользователь будет имеет право пользоваться услугами hasher: # hasher-useradd koal Теперь, если данным пользователь уже был произведен вход в систему, то нужно произвести "релогин" (причем полный, запуск нового терминального сеанса, например, в konsole - не приведет к нужному эффекту). Сборка программ в hasher Сейчас, работа должна происходить от обычного пользователя (но добавленного с помощью hasher-useradd). Сначала необходимо создать каталог, в котором будет строиться сборочная среда: $ mkdir HASHER Следует также обратить внимание, что hasher работает только с локальными репозитариями, то есть описанных (в /etc/apt/sources.list) с помощью file: После этого можно приступать к сборке: $ hsh HASHER freetype-2.1.9-alt2.src.rpm здесь * HASHER - каталог-основа для сборочной среды * freetype-2.1.9-alt2.src.rpm - пакет, который необходимо собрать При удачной сборке полученные пакеты будут лежать в HASHER/repo/<платформа>/RPMS.hasher/. А если произошла ошибка, то информация о ней будет выведена на экран. Например, это информация о том, что какие-то пакеты, необходимые для сборки данного, не были обнаружены в доступных репозитариях. Кстати, указанный выше репозитарий (HASHER/repo/<платформа>/RPMS.hasher/) можно использовать для установки, сразу после описания его в /etc/apt/sources.list. Проблемы Разные архитектуры Однако, как показала практика на деле все происходит не так гладко - при последующей сборке других пакетов может выдаваться ошибка вида: package freetype2-devel-2.1.9-alt2 is for a different architecture Дело в том, что на платформах i686 (athlon, Kx, pentium4) сборка автоматически происходит для нее. Вот что сказал Алексей Фролов в [email protected]: Платформа определяется по uname(2), после чего, если machine получается i686, rpm лезет грязными руками в /proc/cpuinfo и совершенно диким способом определяет какой это i686 - athlon, Kx, pentium4... У вас есть /proc/cpiunfo в hasher во время установки сборочных зависимостей? Мне его туда запихать не удалось... i586 и i686 работают. Тогда возможный путь решения проблемы находится в man hsh в виде опции --target. То есть сборку можно осуществлять следующим образом: $ hsh --target=i586 HASHER freetype-2.1.9-alt2.src.rpm Но приведенная выше ошибка выдавалась все равно. Оказалось, что когда-то давно пакет freetype2 версии 2.1.9 был уже собран под платформу athlon и положен в репозитарий для данной платформы. И hasher пытался использовать пакеты именно этой сборки. Поэтому я удалил из athlon-репозитария все пакеты касающиеся freetype-2.1.9: freetype2, freetype2-demos, freetype2-devel. После этого сборка заработала. Самосборные пакеты Следующая проблема может возникнуть при самосборных src.rpm: hasher будет ругаться на неверный PACKAGER у собираемого пакета: some-packet.src.rpm: wrong PACKAGER: Kolotov Alexandr <koal@kirov.lug.ru.> Тут все дело в том, что hasher предназначается для тестирования сборки пакетов перед отправкой их в Sisyphus, поэтому помимо самой сборки происходит проверка на правильность заполнения служебной информации об rpm-пакете. В случае с Sisyphus, пакеты в нем могут размещать только члены ALT Linux Team, соответственно в поле PACKAGER должен быть указан один их них. Это проверяется утилитой sisyphus_check по наличию altlinux.com|net|org|ru после "@". man hsh говорит, что данную проверку можно отключить, указав опцию --no-sisyphus-check[=LIST], где LIST - список пропускаемых тестов. О тестах, которые может пропустить sisyphus_cheсk, логичнее спросить у него самого: $ sisyphus_cheсk --help Итак, пробуем отключить тест на PACKAGER, а за одним и GPG: $ hsh --target=i586 --no-sisyphus-check=packager,gpg HASHER some-packet.src.rpm Теперь работает... Спасибо за помощь в "разборках" с hasher Алексею Фролову aka raorn.

<< Предыдущая ИНДЕКС Правка src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру