Работа с pbuilder

Автор vladimir_ar, 04 марта 2013, 07:07:49

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

vladimir_ar

По просьбе опишу свой опыт работы с pbuilder по сборке пакетов Debian в чистой среде.

Пользуюсь более дружественной утилитой cowbuilder (по сути, более дружественной оберткой pbuilder).
Я для себя пользовался фактически одним мануалом - Руководство по сборке и бэкпортированию deb пакетов (debian packet backport apt linux).

Пример команд по созданию чистого образа (на примере wheezy amd64) и входа в образ:
sudo cowbuilder --create --distribution wheezy --architecture amd64 --basepath /var/cache/pbuilder/wheezy-clean-amd64/
sudo cowbuilder --login --save --basepath /var/cache/pbuilder/wheezy-clean-amd64/

При логировании ключ --save позволяет запомнить состояние образа на момент ввода команды exit.
Без него при выходе все изменения будут утеряны и следующая загрузка произойдет опять в чистый образ.

При выполнении команды с ключем --create будет создан базовый образ системы с указанной в ключе --distribution версией дистрибутива и с архитектурой, указанной в ключе --architecture. Образ ляжет по пути в ключе --basepath. Если --basepath не указывать, по умолчанию будут использоваться пути из файла /etc/pbuilderrc (не помню, создается ли он при установке пакетов pbuilder - можно создать вручную и прописать содержимое, как приведено в статье с OpenNET по ссылке) и образ системы будет в каталоге с именем выбранного дистрибутива. Например, для wheezy это будет =/var/cache/pbuilder/wheezy/

После отработки команды sudo cowbuilder --login (остальные ключи по необходимости) мы попадем в root-окружение чистой системы. Далее можно пользоваться всеми командами, как и в обычной консоли. При запуске в работу базовый (или с сохраненными ранее наработками при использовании ключа --save) образ будет скопирован в каталог /var/cache/pbuilder/build/cow<цифры> , где будет вся структкра каталогов debian. cow<цифры> будут указаны в листинге выполнения cowbuilder в терминале при логировании. При выходе этот каталог удаляется. При сбое (зависли, перезагрузились) - если там может быть что-то важное из промежуточных наработок - сохранить куда-либо до повторного запуска cowbuilder, потому что (не уверен - не помню) этот каталог может быть удален.

По умолчанию в sources.list будет только репозиторий main выбранной версии дистрибутива. Остальные по необходимости прописываем сами (в том числе и src).

-------------------------------------------------------------------------------------

Теперь немного по сборке программ, которых нет в репозиториях дебиана. Можно прямо из загруженного окружения при помощи git, svn, wget скачать то, что нужно, а потом при сборке удовлетворить зависимости (логично, что для таких пакетов apt-get build-dep не сработает, поскольку их нет в репах и он о них не знает). Или подключить репозитории, которые содержат нужный нам код. Если не хочется создавать трафик, или уже есть по месту, то можно просто скопировать под основной системой в какой либо каталог загруженного образа по пути /var/cache/pbuilder/build/cow<цифры>/<каталог дебиан>/<выбранный каталог для сборки>.

На примере сборки e17 - я пользовался скриптом с сайта enlightenment, запуская его по инструкции в окружении pbuilder и скрипт выполнял всю закачку из git. Далее показывал неудовлетворенные зависимости по пакетам, которые я уже с помощью aptitude ставил из реп wheezy. Можно поступать и по другому (решает каждый сам) - подключить реп, содержащий нужный нам пакет (который хотим собрать) и делаем aptitude build-dep.

Внимание! Места на разделе, где собираетесь работать таким способом (pbuilder) с чистым окружением, должно быть много. Например, при сборке e17 образ с промежуточными сохранениями и, собственно, открытая в работу система отъедали до 10G и более.

Есть интересная мысль попробовать вынести /var/cache/pbuilder/build/cow<цифры>/ в tmpfs в ОЗУ, но еще не пробовал.

Еще - при создании образа загрузка будет идти с интернет. Можно попробовать использовать локальный репозиторий (если есть) - у меня сходу не получилось - не нравились ключи, хотя сама основная система на локальный реп не ругалась.

Пока все, может что не совсем подробно, по свободе буду дописывать. И отвечать на вопросы. Но, поскольку сам не гуру, то, скорее всего, будем разбираться сообща.
Debian Testing, kernel 3.16-2-amd64, OpenBox
AMD A8-3750 / 16Gb RAM / ATI HD6550D (onboard) / Sound ASUS Xonar - DS
_______________________________
Debian Testing, kernel 3.14-2-amd64, OpenBox
HP-655 AMD E1 / 8Gb RAM / ATI HD7310M