Вы здесь

Бинарная сборка на базе 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) добавлять конфигурационные файлы

По поводу обновлений сборки. Обновляем дерево, запускаем каталист, получаем сборку в виде бинарных пакетов и/или образа.

Минусы.
Коль скоро на клиенте будет вынен пакетный менеджер (портэж с пистоном) возникнет проблема обновления оного. Скорей всего придется либо палдуис ставить, либо изобретать нечто свое.

Можете собирать новую систему с указанием устанавливать собранные пакеты в определённую директорию, но не устанавливать в неё пакеты, необходимые для сборки, а лишь для запуска:

ROOT=/target/ emerge package --with-bdeps=n

Для начала список пакетов можете получить из 'eix -I system --only-names' и убрать из него лишнее.

В конце концов у вас в директории /target/ будет новая системе, содержащая только компоненты, необходимые для запуска приложений, но не имеющая компонентов для сборки.

Огромное спасибо, оба ответа выглядят именно тем что мне нужно, разбираюсь.

p.s. Надеюсь у меня не возникнет проблем по самостоятельному определению списка необходимых пакетов, хочется указать список требуемых приложений + use флаги и получить в результате оптимальное желаемое.