Бинарная сборка на базе gentoo без компилятора и т.п.
Приветствую... когда то задумывался на эту тему, и вот понадобилось создать и главное поддерживать небольшую сборку установки (для виртуальной машины - пока в планах uml) для работы ограниченного набора ПО. Лучше gentoo решений найти сложно, система портежей предоставляет замечательные механизмы по отслеживанию зависимостей и компиляции только необходимых компонент.
Проблема в том что мне нужна сборка минимального размера, stage3 сборки уже велики (хотя 140мб и выглядит компактным, хочется 'большего'), так как содержат как минимум среду для сборки пакетов, в моем случае мне достаточно, что собираться и обновляться дистрибутив будет извне (или простым скриптом в загрузчике).
В общем вопрос, каким образом воспользоваться гибкостью portage и при этом сделать сборку, в которой не будет присутствовать компилятор и dev-библиотеки установленных пакетов? Если бы не требовалось обновлять сборку, можно было бы однократно поиграться с комбинацией пакетов и выборочными опциями статичной линковки и тупо вручную их установить, а тут все сложнее...
Кстати отдельный вопрос как делать сами обновления автоматически, тут у меня есть варианты:
* либо внедрить в этот дистрибутив чистый portage а обновление пакетов вести через бинарные сборки emerge --usepkgonly со всей мощностью и гибкостью (etc-update, и т.п.)
* либо создание патчей для обновления, у меня пока решение вида: делаем копию текущей сборки, обновляем, сравниваем, получаем список различий : update|remove|insert имя_файла. Кстати какой готовый инструментарий обеспечит функционал rdiff но без прямого подключения к удаленной машины?
Первый гибче, второй проще..
Может кто уже решал подобную задачу или даже есть готовые решения?
p.s. почти наверняка с этим сталкивались те, кто собирает сборки под не-x86 платформы, например arm - планшетники, плееры, коммуникаторы,..
- Для комментирования войдите или зарегистрируйтесь
Предлагаю таки освоить
Предлагаю таки освоить dev-util/catalyst.
Смысл следующий. Выделяется корень сборки, пишется спецификация, получается бинарный дистр. Использует всякие бинарные кэши, ccache, distcc и прочие ускорители.
Спецификация позволяет :
1) убирать Компиляторы, заколовочные файлы, утилиты для сборки конфигурирования, утилиты для сборки документации и прочий инструментарий разработчика.
2) убирать Пакетный менеджер и систему портэжей
3) убирать Абсолютно любой не понравившийся Вам файл.
4) добавлять конфигурационные файлы
По поводу обновлений сборки. Обновляем дерево, запускаем каталист, получаем сборку в виде бинарных пакетов и/или образа.
Минусы.
Коль скоро на клиенте будет вынен пакетный менеджер (портэж с пистоном) возникнет проблема обновления оного. Скорей всего придется либо палдуис ставить, либо изобретать нечто свое.
Можете собирать новую систему
Можете собирать новую систему с указанием устанавливать собранные пакеты в определённую директорию, но не устанавливать в неё пакеты, необходимые для сборки, а лишь для запуска:
Для начала список пакетов можете получить из 'eix -I system --only-names' и убрать из него лишнее.
В конце концов у вас в директории /target/ будет новая системе, содержащая только компоненты, необходимые для запуска приложений, но не имеющая компонентов для сборки.
Огромное спасибо, оба ответа
Огромное спасибо, оба ответа выглядят именно тем что мне нужно, разбираюсь.
p.s. Надеюсь у меня не возникнет проблем по самостоятельному определению списка необходимых пакетов, хочется указать список требуемых приложений + use флаги и получить в результате оптимальное желаемое.