Поясните, как работают debuild
и makepkg
/PKGBUILD
. Постоянно ими пользуюсь, но некоторые аспекты мне до сих пор не ясны.
Общая схема мне понятна: в изолированном окружении запускается сборка, потом установка в префикс, потом упаковка в архив.
Но как это изолированное окружение выглядит? Ведь в это изолированное окружение нужно доустановить все зависимости. А ещё в этом изолированном окружении должен быть компилятор и куча утилит? Не, это уже перебор. Так как же это работает?
Давайте по шагам рассмотрим пример создания пакета для GNU Hello:
- Скачиваем исходный код и распаковываем его (тут всё ясно)
- Подготавливаем наше изолированное окружение и запускаем в нём скрипт
configure
(как именно должно выглядеть это изолированное окружение? это chroot? что именно должно быть в этом окружении? только зависимости данного пакета (libc, libintl, libiconv в данном случае)? баш, мейк и компилятор тоже должны там быть или они как-то вызываются извне? полагаю, что на данном этапе устанавливать--prefix
не нужно, так как он может быть куда-нибудь захардкожен, так что prefix тут должен быть таким же, как на целевой системе (--prefix=/ в общем случае), верно?) - Запускаем в этом изоляторе компиляцию и ждём (тут тоже всё понятно, кроме того, откуда же в изолированном окружении компилятор)
- Устанавливаем наш пакет в определённый префикс и упаковываем его в архив, чтобы этот префикс для архива был корнем (непонятно, откуда этот префикс берётся — создаётся ли ещё одно пустое изолированное окружение или всё банальнее?)
Буду рад, если объясните мне просто и на пальцах.