Какие инструменты используют сопровождающие дистрибутивы (например, Ubuntu, Fedora) для управления сборкой / зависимостями? - PullRequest
0 голосов
/ 20 сентября 2018

Справочная информация

Я хотел бы, исключительно ради исследований и проверки концепции, разветвить существующий дистрибутив Linux, такой как Ubuntu (или, возможно, Fedora).У меня небольшой кластер из vagrant виртуальных машин, и я хотел бы поэкспериментировать с ним, чтобы понять, как крупные (с открытым исходным кодом) проекты обрабатывают сборки и управляют зависимостями.


Подробности

Несмотря на то, что достаточно просто вытащить их исходные деревья, патчи и т. Д .;одна вещь, которая ускользает от меня, это «как они создают каждый пакет»?Для того, чтобы сделать что-то вроде «ночной сборки», я считаю, что сопровождающему дистрибутива необходимо:

  • Настроить среду сборки с помощью наборов инструментов / компиляторов для всех поддерживаемых платформ (т.е. x86, x86_64, arm, armhf, aarch64, mips и т. Д.).
  • Извлечение исходных архивов / репозиториев для каждого пакета.
  • Развертывание заголовковдля всех «библиотечных» пакетов.
  • Сборка и развертывание библиотек (т.е. файлов .a и .so) для всех «библиотечных» пакетов.
  • Сборка и развертывание приложений / двоичных файлов, которые(возможно) зависит от ранее созданных библиотек.
  • Упакуйте каждую библиотеку / приложение как отдельное deb / rpm / tarball.
  • Создайте общий установщик, охватывающий все пакеты.

Вопрос

Как администраторы дистрибутивов настраивают все это?Есть ли общая / стандартная структура, используемая сопровождающими дистрибутивов, или все они "оборачивают свое собственное решение" собственными силами?

1 Ответ

0 голосов
/ 21 сентября 2018

Многие из этих шагов вы можете узнать из книги Linux From Scratch .Хотя эта книга ориентирована на платформу x86_64 , вещи, которые вы узнаете, могут быть перенесены на другие.Когда позже вы соберете для ARM , например, вы можете следовать учебным пособиям, таким как this для ядра, и для конкретных пакетов / библиотек, соответствующих им команд для кросс-компиляции, это будет зависеть отв программе.После прочтения этой книги вы сможете, по крайней мере, понять первые пять итенов в своих почтовых деталях.

Что касается упаковки пакетов .deb, .rpm, то это будет характерно для разветвленного вами дистрибутива,вам придется прочитать несколько документов по этому вопросу.Если вы планируете выпустить свой форк, вам также потребуется онлайн-провайдер для пакетов (примеры, sourceforge, github, gitlab).Поэтому вам придется настроить репозитории для исходников и двоичных файлов, чтобы ваш менеджер пакетов указывал (в случае apt это будут те, на которые указывает /etc/apt/sources.list.)

Наконец,вам нужно будет упаковать все это в .iso файл для установки.После того, как ваша LFS запущена и работает на вашем компьютере, вы можете просто сгенерировать из нее образ, предполагая, что он состоит из одного раздела в /dev/sda1:

dd if=/dev/sda1 of=my-distro-iso.iso

, а затем запишите его и загрузитесь в него.При этом другим людям будет достаточно установить ваш дистрибутив.Если вы хотите сделать больше и создать инсталлятор, возможно, вы можете использовать сборщики дистрибутивов, такие как Ubiquity или Anaconda .Это не будет тривиально, и вам придется прочитать о том, как их использовать, но для тех, кто только что прошел тест LFS, это будет легко;)

Вы также можете рассчитывать на AdvancedLinux Programming книга при разработке приложений для вашего дистрибутива.

...