- Arch Build System (Русский)
- Contents
- Обзор
- Дерево репозитория
- Способы применения
- Использование
- Получение PKGBUILD
- PKGBUILD из Git
- PKGBUILD из SVN
- Сборка пакета
- Советы и рекомендации
- Сохранение изменённых пакетов
- Archiso (Русский)
- Contents
- Установка
- Настройка live носителя
- Установка пакетов
- Собственный локальный репозиторий
- Предотвращение установки пакетов, принадлежащих основной группе
- Установка пакетов из multilib
- Добавление файлов в образ
- Загрузчик
- UEFI Secure Boot
- Вход в систему
- Изменение автоматического входа в систему
- Сборка ISO
- Удаление рабочей директории
- Использование ISO
Arch Build System (Русский)
Система сборки Arch (Arch Build System, ABS) — схожая с портами система сборки программных пакетов из исходного кода. В отличие от pacman, который является инструментом управления двоичными пакетами (в том числе собранными с помощью ABS), система сборки Arch — набор утилит для компилирования исходников в устанавливаемый (.pkg.tar.zst) пакет.
Порты используются в ОС семейства BSD для автоматизации процесса сборки программ из файлов с исходным кодом. Порты помогают загружать, распаковывать, патчить, компилировать и устанавливать программы. Сам по себе порт является небольшой директорией на компьютере пользователя, название которой совпадает с названием устанавливаемой программы. Данная директория содержит файлы с инструкциями по установке и сборке программ. Благодаря этому установка сильно упрощается: как правило, необходимо лишь выполнить команду make или make install clean в директории порта.
Концепция ABS во многом похожа. Частью системы сборки является SVN-репозиторий и эквивалентный ему Git-репозиторий. Репозиторий состоит из каталогов, каждый из которых предназначен для отдельного пакета Arch Linux. В директориях содержатся файлы PKGBUILD (и иногда некоторые другие файлы), но в них нет ни исходников, ни двоичных файлов программ. Если выполнить команду makepkg внутри директории, то исходники программы будут загружены, скомпилированы и собраны в пакет. После этого можно воспользоваться pacman, чтобы установить данный пакет в систему.
Contents
Обзор
Система сборки Arch часто используется как обобщённый термин для целого ряда компонентов, хоть это и не совсем правильно. Обычно под 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.
Дерево репозитория
В SVN-репозитории packages хранятся файлы PKGBUILD пакетов из официальных репозиториев core, extra и testing, а в SVN-репозитории community — файлы из community и multilib.
В SVN-репозитории для каждого пакета выделен отдельный каталог, в котором находятся подкаталоги repos и trunk . В repos , в свою очередь, есть ещё один каталог, имя которого состоит из названия официального репозитория пакета (например, core) и архитектуры процессора. Файлы PKGBUILD, которые находятся в repos , используются в качестве официальной сборки. Файлы в trunk используются разработчиками до перемещения в repos .
Например, дерево каталогов для acl выглядит следующим образом:
Исходного кода пакета в SVN-репозитории нет. Вместо этого файл PKGBUILD содержит URL официального репозитория, из которого исходный код будет загружен во время сборки.
Способы применения
ABS позволяет автоматизировать некоторые задачи, связанные с компиляцией из исходников. Например:
- Компиляция или перекомпиляция пакета;
- Сборка из исходных кодов и установка программ, для которых ещё нет официального пакета (см. Создание пакетов);
- Изменение существующих пакетов под свои нужды (включение или отключение опций, внесение исправлений);
- Перестройка всей системы с использованием новых флагов компиляции «à la FreeBSD»;
- Чистая сборка и установка собственного ядра (см. Ядро#Компиляция);
- Создание модулей для вашего собственного ядра;
- Компиляция и установка новой/старой/beta/devel версии Arch-пакета с помощью редактирования номера версии в PKGBUILD.
Использование
Получение PKGBUILD
Существует два способа добыть необходимый для сборки конкретного пакета из исходников файл PKGBUILD: либо посредством SVN, либо через Git программой asp , которая представляет собой обёртку для svntogit-репозиториев. Ниже рассматриваются оба подхода.
PKGBUILD из Git
Установите пакет asp . Asp — инструмент для скачивания исходных файлов пакетов Arch Linux через Git-интерфейс. Подробнее см. обсуждение на форуме.
Чтобы выполнить «сверку» (checkout) пакета из репозитория, выполните:
Пакет будет клонирован в каталог, имя которого совпадает с названием пакета. Для обновления клонированного git-репозитория необходимо перейти в него и последовательно выполнить команды asp update и git pull .
Кроме того, можно использовать другие команды git для сверки более старых версий пакета и отслеживания изменений. Подробнее см. Git.
Если необходимо просто получить копию снимка (snapshot) текущего PKGBUILD для конкретного пакета, выполните:
PKGBUILD из SVN
Предварительные условия
Сверка репозитория
Соответствующая команда для репозиториев community и multilib:
В обоих случаях единственным видимым результатом будет создание пустого каталога.
Сверка пакета
Перейдите в созданный каталог, packages или community, и выполните:
Эта команда выполнит сверку указанного пакета. С этого момента каждый раз при выполнении svn update будет происходить его обновление.
Если запрошенный пакет не существует, svn не выдаст предупреждение. В терминале появится только что-то вроде «At revision 358704» без создания каких-либо файлов. Если это произошло:
- проверьте правильность имени пакета;
- проверьте, не был ли пакет перемещен в другой репозиторий (например, из community в packages);
- проверьте страницу https://archlinux.org/packages чтобы убедиться, что ваш пакет не собирается на основе другого пакета (например, python-tensorflow собирается по PKGBUILD пакета tensorflow ).
Все синхронизированные пакеты можно периодически обновлять, если вы желаете пересобирать актуальные версии пакетов из репозиториев. Для этого выполните:
Сверка старой версии пакета
Находясь в сверенном svn-репозитории (т.е. packages или community, как описано в разделе #Сверка репозитория), сначала изучите лог:
Найдите ревизию, которая вам нужна, и укажите её номер в команде синхронизации. Например, чтобы синхронизировать ревизию r1729 , выполните:
Выбранный пакет обновится до нужной версии.
Вместо номера ревизии можно указать дату. Если на эту дату нет ревизии, то svn найдет ближайшую ревизию перед ней. Пример (для даты 2009-03-03):
Это даёт возможность синхронизации пакета с последней версией до перемещения в другой репозиторий. Необходимо лишь найти в логах дату перемещения или же последний номер ревизии.
Сборка пакета
Перед сборкой пакета из файла PKGBUILD настройте makepkg в соответствии с указаниями из раздела makepkg#Настройка.
Скопируйте каталог с файлом PKGBUILD в другое место, отредактируйте его, если необходимо, после чего соберите пакет и установите его в систему, как описано в разделе makepkg#Использование.
Советы и рекомендации
Сохранение изменённых пакетов
При первом же обновлении системы pacman заменит модифицированный вами пакет из ABS на стандартный пакет с таким же названием из официальных репозиториев. Ниже описано, как этого не допустить.
Добавьте параметр groups в PKGBUILD пакета и укажите в нём группу modified .
Добавьте эту группу в раздел IgnoreGroup файла /etc/pacman.conf .
Если в официальных репозиториях появится новая версия этого пакета, то во время обновления системы pacman напечатает замечание, что он пропускает пакет, поскольку тот находится в разделе IgnoreGroup . После этого необходимо вручную пересобрать новую версию пакета из ABS, чтобы ваша система не оказалась «частично обновлённой».
Источник
Archiso (Русский)
Archiso — набор bash скриптов, предназначенных для создания полностью функциональных Live-CD/DVD и Live-USB на базе Arch Linux. Это тот же инструмент, который используется для создания официальных образов, но он довольно гибкий инструмент, который может быть использован как для создания дисков восстановления или установочных, так и для специализированных live-CD/DVD/USB систем. Сердце Archiso — mkarchiso. Для получения подробного описания всех его опций достаточно вызвать его без параметров, так что здесь будет описанно только создание live диска своими руками.
Если вам требуется только краткое изложение требований и процесса сборки, вы можете также воспользоваться официальной документацией проекта.
Contents
Установка
Archiso поставляется с двумя «профилями»: releng и baseline.
- Если вы хотите создать полностью индивидуальную версию Arch Linux, предварительно установленной со всеми вашими любимыми программами и конфигурациями, используйте профиль releng.
- Если вы просто хотите создать основу для live CD, без предварительно установленных пакетов и минимальной конфигурацией, используйте baseline.
Теперь скопируйте профиль на Ваш выбор, в каталог (
/archlive используется в примере ниже), в котором вы можете вносить корректировки. Выполните следующую команду, заменив profile либо на releng , либо на baseline .
- Если вы используете профиль releng для создания полностью индивидуального образа, вы можете переходить к секции #Настройка live носителя.
- Если вы используете профиль baseline для создания пустого образа, то вам не нужно его настраивать, поэтому переходите к секции #Сборка ISO.
Настройка live носителя
В этом разделе подробно описывается настройка создаваемого вами образа, определение пакетов и конфигураций, которые вы хотите, чтобы ваш live образ содержал.
Внутри каталога archlive , созданного в #Установка, имеется ряд файлов и каталогов; мы рассмотрим лишь несколько из них, в основном:
- packages.x86_64 — это где вы перечисляете построчно пакеты, которые вы хотите установить, и
- каталог airootfs — это каталог, действующий как наложение, и именно там вы делаете все настройки.
Как правило, любые административные задачи, которые вы обычно делаете после новой установки, могут быть выполнены в скрипте archlive/airootfs/root/customize_airootfs.sh , за исключением установки пакетов. Скрипт должен быть написан с точки зрения новой среды, поэтому / в скрипте означает корень ISO-образа, который создается.
Установка пакетов
Отредактируйте списки пакетов в packages.x86_64 чтобы указать, какие пакеты должны быть установлены на live носителе.
Собственный локальный репозиторий
This article or section is a candidate for merging with Pacman/Tips and tricks (Русский)#Собственный локальный репозиторий.
Для подготовки своих пакетов или пакетов из AUR/ABS, вы можете создать собственный локальный репозиторий. Если вам нужна поддержка нескольких архитектур, примените соответствующие меры для предотвращения ошибок в будущем. Каждая архитектура должна иметь собственное дерево каталогов:
Затем вы можете добавить свой репозиторий, поместив следующее в
/archlive/pacman.conf выше других записей (для более высокого приоритета):
Если пакет подходит, repo-add выполняет проверку. Иначе, вы столкнетесь с сообщениями об ошибках, подобными этому:
Предотвращение установки пакетов, принадлежащих основной группе
По умолчанию /usr/bin/mkarchiso , скрипт, который используется
/archlive/build.sh , вызывает один из скриптов arch-install-scripts с именем pacstrap без флага -i , что заставляет Pacman не ждать ввода пользователя во время процесса установки.
При внесении в черный список основных пакетов группы путем добавления их в строку IgnorePkg в файле
/archlive/pacman.conf , Pacman спрашивает, должны ли они все еще быть установлены, а это значит, что они будут при обходе ввода пользователя. Чтобы избавиться от этих пакетов существует несколько вариантов:
- «Грязный» способ: Добавьте флаг -i в каждую строку, вызывающую pacstrap в /usr/bin/mkarchiso .
- «Чистый»: Создайте копию /usr/bin/mkarchiso , в которую вы добавите флаг и адаптируете
/archlive/build.sh , так чтобы он вызывал измененную версию скрипта mkarchiso.
- Расширенный способ: Создайте функцию для
/archlive/build.sh , которая явно удаляет пакеты после основной установки. Это принесет вам удовольствие от того, что вам не придется много вводить во время процесса установки.
Установка пакетов из multilib
Чтобы установить пакеты из репозитория multilib, вам нужно просто раскомментировать его в
Добавление файлов в образ
Каталог airootfs действует как наложение, считайте его корневым каталогом ‘/’ в вашей текущей системе, поэтому любые файлы, которые вы размещаете в этом каталоге, будут скопированы при загрузке.
Поэтому, если у вас есть набор скриптов iptables в вашей текущей системе, которые вы хотите использовать на вашем live образe, скопируйте их:
Размещение файлов в домашнем каталоге пользователей немного отличается. Не помещайте их в airootfs/home , а вместо этого создайте каталог skel внутри airootfs/ и разместите их там. Затем мы добавим соответствующие команды в customize_airootfs.sh , которые мы собираемся использовать для их копирования при загрузке и выяснения разрешений.
Сначала создайте каталог skel:
Теперь скопируйте файлы ‘home’ в каталог skel, например для .bashrc :
/archlive/airootfs/root/customize_airootfs.sh , и создается новый пользователь, файлы из каталога skel будут автоматически скопированы в новую домашнюю папку, а разрешения будут установлены правильно.
Аналогичным образом, требуется обратить внимание на особые файлы конфигурации, которые находятся где-то внизу по иерархии. В качестве примера конфигурационный файл /etc/X11/xinit/xinitrc находится на пути, который может быть перезаписан путем установки пакета. Чтобы поместить файл конфигурации, следует поместить пользовательский xinitrc в
/archlive/airootfs/etc/skel/ , а затем изменить customize_airootfs.sh , чтобы переместить его соответствующим образом.
Загрузчик
Файл по умолчанию должен работать прекрасно, поэтому вам не нужно трогать его.
Из-за модульной природы isolinux вы можете использовать множество дополнений, так как все *.c32 файлы копируются и доступны вам. Посмотрите официальный сайт syslinux и репозиторий git archiso. Используя указанные аддоны, можно сделать визуально привлекательные и сложные меню. Для получения дополнительной информации смотрите здесь.
UEFI Secure Boot
Если вы хотите загружать Archiso в окружении с включённым UEFI Secure Boot, вы должны использовать подписанный загрузчик. Вы можете воспользоваться инструкциями из статьи Secure Boot#Booting an installation medium.
Вход в систему
Запуск X при загрузке выполняется путем включения службы systemd менеджера входа в систему. Если вы знаете, какой файл .service нуждается в символической ссылке: Отлично. Если нет, то вы можете легко узнать в случае, если вы используете одну и ту же программу в системе, в которой вы собираете свой iso. Просто используйте:
Теперь создайте ту же самую символическую ссылку в
/archlive/airootfs/etc/systemd/system . Для LXDM:
Это позволяeт запустить LXDM при загрузке системы из вашего live образа.
В качестве альтернативы вы можете просто включить службу в airootfs/root/customize_airootfs.sh вместе с другими включенными там службами.
Если вы хотите, чтобы графическая среда фактически запускалась автоматически во время загрузки, обязательно отредактируйте airootfs/root/customize_airootfs.sh и замените
Изменение автоматического входа в систему
Файлы настроек автоматического входа для getty расположены в airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf .
Вы можете отредактировать этот файл для изменения автоматического входа пользователя в систему:
Или удалите его вообще для отключения автоматического входа в систему.
Сборка ISO
Создайте ISO, который затем можно записать на компакт-диск или USB, запустив:
- -w указывает рабочий каталог. Если параметр не указан, по умолчанию он будет работать в текущем каталоге.
- -o указывает каталог, в который будет помещен созданный ISO-образ. Если параметр не указан, по умолчанию он будет выводить в текущий каталог.
- Следует отметить, что файл профиля profiledef.sh не может быть указан при запуске mkarchiso, только путь к файлу
Замените /путь/до/профиля/ на путь к вашему пользовательскому профилю или на /usr/share/archiso/configs/relng/ , если вы создаете неизмененный профиль.
При запуске сценарий загрузит и установит указанные вами пакеты в рабочую_директорию/x86_64/airootfs , создаст образы ядра и инициализации, применит ваши настройки и, наконец, создаст ISO в выходной каталог.
Удаление рабочей директории
Временные файлы копируются в рабочую директорию. После успешного создания ISO рабочую директорию и его содержимое можно удалить. Например.:
Использование ISO
Для получения дополнительной информации смотрите статью Руководство по установке.
Источник