Задний план
Я хотел бы, строго ради исследования и проверки концепции, разветвить существующий дистрибутив Linux, такой как Ubuntu (или, возможно, Fedora). У меня есть небольшой кластер vagrant виртуальных машин, и я хотел бы поэкспериментировать с этим, чтобы понять, насколько большие (с открытым исходным кодом) проекты обрабатывают сборки и управление зависимостями.
Подробности
Хотя вытащить соответствующие деревья исходных текстов, патчи и т.д .; одна вещь, которая ускользает от меня, - это как они собирают каждый пакет? Насколько я понимаю, для того, чтобы сделать что-то вроде ночной сборки, сопровождающему дистрибутива необходимо:
- Настройте среду сборки с инструментами / компиляторами для всех поддерживаемых платформ (т.е.
x86,x86_64,arm,armhf,aarch64,mipsи т. Д.). - Извлеките архивы / репозитории с исходным кодом для каждого пакета.
- Разверните заголовки для всех пакетов библиотеки.
- Соберите и разверните библиотеки (т.е. файлы
.aи.so) для всех пакетов библиотек. - Создайте и разверните приложения / двоичные файлы, которые (возможно) зависят от ранее созданных библиотек.
- Упакуйте каждую библиотеку / приложение как собственное _10 _ / _ 11_ / tarball.
- Создайте общий установщик, включающий все пакеты.
Вопрос
Как разработчики дистрибутива все это настраивают? Существует ли общая / стандартная структура, используемая разработчиками дистрибутива, или все они сами создают собственное решение?