<u style="display: none;">... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... no changes ... <a href='http://www.ringtones-dir.com'>free ringtones</a> : [http://www.ringtones-dir.com download ringtones] – [HTTP://www.ringtones-dir.com download ringtones] : [nokia ringtones|http://www.ringtones-dir.com] – [nokia ringtones|HTTP://www.ringtones-dir.com] : http://www.ringtones-dir.com/download/ : ring tones : ringtones download : “samsung ringtones” http://www.ringtones-dir.com : [http://www.ringtones-dir.com|ringtones free] </u>==Сборка программ для ALT Linux с использованием hasher==
Часто во время сборки пакетов по зависимостям предлагается установить очень много «лишнего» ПО. Это не всегда бывает удобно: не хочется «мусорить» в уже рабочей системе или вообще нежелательно в ней иметь некоторые средства (например, средства разработки на сервере). Часто банальной причиной является нежелание где-то искать это ПО – этот процесс утомляет, особенно если репозитарий пакетов для дистрибутива представлен в виде нескольких дисков, то всё сводится к «жонглированию» дисками...
Поэтому в дистрибутивы ALT Linux попадают только пакеты, заботливой рукой мантейнера проведённые через технологию hasher. Эта технология позволяет собирать пакеты внутри «чистого» окружения (chroot), которое создаётся из числа пакетов, входящих в состав описанных на пользовательской машине репозитариев. Т.е. в чистом окружении устанавливаются все необходимые для сборки данного пакеты (сборочная среда), затем в этом окружении и происходит сборка. В реальную систему пакеты при этом не ставятся. Таким образом, на входе hasher получает src.rpm пакет, а на выходе выдаёт уже собранные (только из данного src.rpm) пакеты, которые мы уже можем использовать в наших репозитариях для установки на рабочие системы.
За технологию hasher отвечают два пакета: hasher и hasher-priv, для работы последнего также нужен пакет sisyphus_check.
Внутри пакета hasher содержится краткая, но ёмкая документация: README, QUICKSTART и FAQ файлы, а также man-страницы, правда, они на английском языке, хотя разработчики программы вполне русскоговорящие. Этой документации, в принципе, хватает, чтобы начать работать c hasher, а в FAQ рассмотрены некоторые проблемы, которые могут возникать в работе. Но рассмотрим дополнительно некоторые аспекты работы с hasher.
На данном этапе все просто. От пользователя root выполняем:
# apt-get install hasher
Затем необходимо подготовить hasher – объявить, что какой пользователь имеет право пользоваться услугами hasher:
# hasher-useradd koal
Теперь этому пользователю нужно заново войти в систему (причём предварительно полностью завершив сеанс, запуск нового терминального сеанса, например, в konsole, не приведёт к нужному эффекту).
Сейчас работа должна происходить от обычного пользователя (но добавленного с помощью hasher-useradd). Сначала необходимо создать каталог, в котором будет строиться сборочная среда:
$ mkdir HASHER
Рабочий каталог hasher должен быть доступен на запись пользователю, запускающему сборку. Кроме того, его не следует располагать на файловой системе, которая смонтирована с опциями noexec или nodev.
Следует также обратить внимание, что hasher лучше с локальными репозитариями, то есть описанными (в /etc/apt/sources.list) с помощью file: или copy:.
После этого можно приступать к сборке:
$ hsh HASHER freetype-2.1.9-alt2.src.rpm
здесь
При удачной сборке полученные пакеты будут лежать в HASHER/repo/<платформа>/RPMS.hasher/. А если произошла ошибка, то информация о ней будет выведена на экран. Например, это информация о том, что какие-то пакеты, необходимые для сборки данного, не были обнаружены в доступных репозитариях.
Кстати, указанный выше репозитарий (HASHER/repo/<платформа>/RPMS.hasher/) можно использовать для установки, сразу после описания его в /etc/apt/sources.list.
(описал Женя Остапец сиречь eostapets@)
Однако, как показала практика, на деле всё происходит не так гладко – при последующей сборке других пакетов может выдаваться ошибка вида:
Дело в том, что на платформах i686 (athlon, Kx, pentium4) сборка автоматически происходит для неё. Вот что сказал Алексей Фролов в community@altlinux.ru:
Тогда возможный путь решения проблемы находится в 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 у собираемого пакета:
Тут всё дело в том, что 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.