Arch Build System (Русский)
Ссылки по теме
- Стандарты создания пакетов для Arch
- Пользовательский репозиторий Arch
- Создание пакетов
- Ядро/Система сборки Arch
- makepkg (Русский)
- Официальные репозитории
- pacman (Русский)
- PKGBUILD (Русский)
- Patching in ABS
- Дерево репозитория
- Набор каталогов, в которых хранятся необходимые для сборки всех официальных пакетов файлы — но не сами пакеты и не файлы с исходным кодом. Доступны две версии репозитория, svn и git. Подробнее см. раздел #Дерево репозитория.
- PKGBUILD
- Bash-скрипт, в котором находится URL для скачивания файлов с исходным кодом, а также инструкции по их компиляции в двоичный код и упаковке.
- makepkg
- Утилита командной строки, которая читает PKGBUILD, автоматически скачивает файлы с исходным кодом, компилирует их и создает пакет .pkg.tar* (какой конкретно суффикс будет у пакета определяется параметром
PKGEXT
в файлеmakepkg.conf
). makepkg также можно использовать для создания пакетов из AUR или сторонних источников, подробнее см. Создание пакетов. - pacman
- pacman является полностью отдельным проектом, но он вызывается (утилитой makepkg или вручную) каждый раз при установке или удалении собранных пакетов, а также для установки зависимостей.
- AUR
- Пользовательский репозиторий Arch (Arch User Repository, AUR) — отдельное от ABS хранилище файлов PKGBUILD для программ, не вошедших в официальные репозитории. В отличие от дерева ABS, которое представляет собой "голый" репозиторий git, у AUR есть интерактивный веб-интерфейс. В AUR находятся тысячи предложенных пользователями файлов PKGBUILD для программ, которые не имеют официального пакета Arch. Если вам нужен пакет, которого нет в официальных репозиториях, стоит поискать его в AUR.
- Компиляция или перекомпиляция пакета;
- Сборка из исходных кодов и установка программ, для которых ещё нет официального пакета (см. Создание пакетов);
- Изменение существующих пакетов под свои нужды (включение или отключение опций, внесение исправлений);
- Перестройка всей системы с использованием новых флагов компиляции "à la FreeBSD";
- Чистая сборка и установка собственного ядра (см. Ядро#Компиляция);
- Создание модулей для вашего собственного ядра;
- Компиляция и установка новой/старой/beta/devel версии Arch-пакета с помощью редактирования номера версии в PKGBUILD.
- проверьте правильность имени пакета;
- проверьте, не был ли пакет перемещен в другой репозиторий (например, из community в packages);
- проверьте страницу https://archlinux.org/packages чтобы убедиться, что ваш пакет не собирается на основе другого пакета (например, собирается по пакета ).
- pbget — получение файлов PKGBUILD для конкретных пакетов прямо из веб-интерфейса. Также работает для AUR.
Система сборки Arch (Arch Build System, ABS) — схожая с портами система сборки программных пакетов из исходного кода. В отличие от pacman, который является инструментом управления двоичными пакетами (в том числе собранными с помощью ABS), система сборки Arch — набор утилит для компилирования исходников в устанавливаемый (.pkg.tar.zst) пакет.
Порты используются в ОС семейства BSD для автоматизации процесса сборки программ из файлов с исходным кодом. Порты помогают загружать, распаковывать, патчить, компилировать и устанавливать программы. Сам по себе порт является небольшой директорией на компьютере пользователя, название которой совпадает с названием устанавливаемой программы. Данная директория содержит файлы с инструкциями по установке и сборке программ. Благодаря этому установка сильно упрощается: как правило, необходимо лишь выполнить команду или в директории порта.
Концепция ABS во многом похожа. Частью системы сборки является SVN-репозиторий и эквивалентный ему Git-репозиторий. Репозиторий состоит из каталогов, каждый из которых предназначен для отдельного пакета Arch Linux. В директориях содержатся файлы PKGBUILD (и иногда некоторые другие файлы), но в них нет ни исходников, ни двоичных файлов программ. Если выполнить команду makepkg внутри директории, то исходники программы будут загружены, скомпилированы и собраны в пакет. После этого можно воспользоваться pacman, чтобы установить данный пакет в систему.
Обзор
Система сборки Arch часто используется как обобщённый термин для целого ряда компонентов, хоть это и не совсем правильно. Обычно под ABS понимают следующие инструменты:
Дерево репозитория
В SVN-репозитории packages хранятся файлы PKGBUILD пакетов из официальных репозиториев core, extra и testing, а в SVN-репозитории community — файлы из community и multilib.
В SVN-репозитории для каждого пакета выделен отдельный каталог, в котором находятся подкаталоги и . В , в свою очередь, есть ещё один каталог, имя которого состоит из названия официального репозитория пакета (например, core) и архитектуры процессора. Файлы PKGBUILD, которые находятся в , используются в качестве официальной сборки. Файлы в используются разработчиками до перемещения в .
Например, дерево каталогов для выглядит следующим образом:
Исходного кода пакета в SVN-репозитории нет. Вместо этого файл PKGBUILD содержит URL официального репозитория, из которого исходный код будет загружен во время сборки.
Способы применения
ABS позволяет автоматизировать некоторые задачи, связанные с компиляцией из исходников. Например:
Использование
Получение PKGBUILD
Существует два способа добыть необходимый для сборки конкретного пакета из исходников файл PKGBUILD: либо посредством SVN, либо через Git программой , которая представляет собой обёртку для svntogit-репозиториев. Ниже рассматриваются оба подхода.
PKGBUILD из Git
Установите пакет . Asp — инструмент для скачивания исходных файлов пакетов Arch Linux через Git-интерфейс. Подробнее см. обсуждение на форуме.
Чтобы выполнить "сверку" (checkout) пакета из репозитория, выполните:
$ asp checkout пакетПакет будет клонирован в каталог, имя которого совпадает с названием пакета. Для обновления клонированного git-репозитория необходимо перейти в него и последовательно выполнить команды и .
Кроме того, можно использовать другие команды git для сверки более старых версий пакета и отслеживания изменений. Подробнее см. Git.
Если необходимо просто получить копию снимка (snapshot) текущего PKGBUILD для конкретного пакета, выполните:
$ asp export пакетPKGBUILD из SVN
Предварительные условия
Установите пакет subversion.
Сверка репозитория
Команда для сверки официальных репозиториев core, extra и testing:
$ svn checkout --depth=empty svn://svn.archlinux.org/packagesСоответствующая команда для репозиториев community и multilib:
$ svn checkout --depth=empty svn://svn.archlinux.org/communityВ обоих случаях единственным видимым результатом будет создание пустого каталога.
Сверка пакета
Перейдите в созданный каталог, packages или community, и выполните:
$ svn update пакетЭта команда выполнит сверку указанного пакета. С этого момента каждый раз при выполнении svn update
будет происходить его обновление.
Если запрошенный пакет не существует, svn не выдаст предупреждение. В терминале появится только что-то вроде "At revision 358704" без создания каких-либо файлов. Если это произошло:
Все синхронизированные пакеты можно периодически обновлять, если вы желаете пересобирать актуальные версии пакетов из репозиториев. Для этого выполните:
$ svn updateСверка старой версии пакета
Находясь в сверенном svn-репозитории (т.е. packages или community, как описано в разделе #Сверка репозитория), сначала изучите лог:
$ svn log пакетНайдите ревизию, которая вам нужна, и укажите её номер в команде синхронизации. Например, чтобы синхронизировать ревизию , выполните:
$ svn update -r1729 пакетВыбранный пакет обновится до нужной версии.
Вместо номера ревизии можно указать дату. Если на эту дату нет ревизии, то svn найдет ближайшую ревизию перед ней. Пример (для даты 2009-03-03):
$ svn update -r'{20090303}' пакетЭто даёт возможность синхронизации пакета с последней версией до перемещения в другой репозиторий. Необходимо лишь найти в логах дату перемещения или же последний номер ревизии.
Сборка пакета
Перед сборкой пакета из файла PKGBUILD настройте makepkg в соответствии с указаниями из раздела makepkg#Настройка.
Скопируйте каталог с файлом PKGBUILD в другое место, отредактируйте его, если необходимо, после чего соберите пакет и установите его в систему, как описано в разделе makepkg#Использование.
Советы и рекомендации
Сохранение изменённых пакетов
При первом же обновлении системы pacman заменит модифицированный вами пакет из ABS на стандартный пакет с таким же названием из официальных репозиториев. Ниже описано, как этого не допустить.
Добавьте параметр в PKGBUILD пакета и укажите в нём группу .
Добавьте эту группу в раздел IgnoreGroup
файла .
/etc/pacman.conf
IgnoreGroup = modified
Если в официальных репозиториях появится новая версия этого пакета, то во время обновления системы pacman напечатает замечание, что он пропускает пакет, поскольку тот находится в разделе IgnoreGroup
. После этого необходимо вручную пересобрать новую версию пакета из ABS, чтобы ваша система не оказалась "частично обновлённой".