d587fa5f88
The mixin concept and name has been borrowed from Ruby language -- it's a kind of thing that can be added to more or less whatever suitable; the problem it tries to solve is that incrementally building up the image configuration breaks when one would like to change something that's been configured in early enough so that grafting early will warrant a lot of duplication later on but inheriting too much things that need to be changed gets too much hackery in. It started while trying to build an installer image using configuration bits and pieces collected while bringing an installable LiveCD together: there are just too many livecdish things in a LiveCD to try and rebase the actual desktop configuration things onto an installer, so putting these into a mixin to be reused within both livecd and installer seems the way to go.
69 lines
5.0 KiB
Plaintext
69 lines
5.0 KiB
Plaintext
== conf.d ==
|
||
|
||
Этот каталог содержит включаемые фрагменты конфигурации образов с тем,
|
||
чтобы было удобнее параллельно разрабатывать специфические образы
|
||
без излишних merge conflict'ов.
|
||
|
||
Следует понимать, что основная цель появления mkimage-profiles на свет
|
||
-- это уменьшение "форков" внутри семейства дистрибутивных профилей.
|
||
Поэтому при возможности следует всё-таки работать над общей базовой
|
||
частью, включая скриптовые хуки и списки пакетов, а также оптимизировать
|
||
граф зависимостей между конфигурациями образов.
|
||
|
||
Попросту говоря, copy-paste -- тревожный признак.
|
||
|
||
Вместо него нередко может помочь выделение кусочков конфигурации
|
||
в пределах включаемого файла в цели mixin/*, которые не являются
|
||
самостоятельными или даже промежуточными, но включают полезные
|
||
группы настроек, нужных в различных образах, не наследующих
|
||
друг другу -- посмотрите существующие примеры использования.
|
||
|
||
По переменным (см. тж. doc/pkglists.txt):
|
||
|
||
* для пользовательского окружения (live, main) предназначены
|
||
THE_PACKAGES, THE_LISTS, THE_GROUPS, THE_PACKAGES_REGEXP
|
||
|
||
* для "обычного общего" (live, main, rescue) есть COMMON_PACKAGES
|
||
(NB: тоже попадают в базовую установку)
|
||
|
||
* SYSTEM_PACKAGES стоит применять крайне осторожно -- эти пакеты попадут
|
||
во все стадии, в том числе в образ чувствительной к объёму install2
|
||
(в stage1 -- только в инструментальный чрут); применяйте для того,
|
||
что обязано быть и в инсталяторе, и в готовой системе
|
||
|
||
* для направленного действия служат:
|
||
** STAGE1_PACKAGES, STAGE1_PACKAGES_REGEXP (первая стадия загрузки)
|
||
** STAGE2_PACKAGES (инсталятор и спасательная/"живая" система)
|
||
** INSTALL2_PACKAGES (инсталятор)
|
||
** BASE_PACKAGES, BASE_LISTS, BASE_PACKAGES_REGEXP (базовая система)
|
||
** MAIN_PACKAGES, MAIN_LISTS, MAIN_PACKAGES_REGEXP (дополнительные пакеты)
|
||
** LIVE_PACKAGES, LIVE_LISTS, LIVE_PACKAGES_REGEXP ("живая" система)
|
||
|
||
* аналогично по модулям ядра:
|
||
** THE_KMODULES попадут в "пользовательскую" среду (live, main)
|
||
** STAGE1_KMODULES доступны в производных от stage2 (install2, live, rescue)
|
||
** BASE_KMODULES попадут в установку по умолчанию
|
||
** MAIN_KMODULES будут доступны для установки с носителя
|
||
** LIVE_KMODULES предназначены для LiveCD/LiveFlash
|
||
|
||
Не стоит бояться такого разнообразия, для большинства задач достаточно THE_*.
|
||
|
||
По подстановкам:
|
||
|
||
* $(VAR) подставляются перед их записью в $(CONFIG), который distcfg.mk
|
||
* $$(VAR) раскрываются позже, при включении $(CONFIG) и востребовании
|
||
значений; в этом случае их значения могут изменяться до окончания
|
||
конфигурации, а также зависеть от значений других переменных
|
||
|
||
По спискам пакетов:
|
||
|
||
* на этапе экспериментирования можно забивать прямо в описание образа
|
||
* при фиксации состояния стоит воспользоваться существующими списками,
|
||
а дополнительные оформить как можно более чётко обособленными по тем
|
||
задачам, для решения которых они и подобраны
|
||
* повторяющиеся логически связанные группы списков может иметь смысл
|
||
выделить в фичу (см., например, power или x11)
|
||
* если явной фичи не наблюдается, но у группы дистрибутивов намечается
|
||
заметная общая часть -- её можно выделить в промежуточную цель вида
|
||
distro/.name, не являющуюся самостоятельно собираемой
|