UNPKG

arch-wiki-md-repo

Version:

All arch-wiki articles in markdown format, updated every two days.

284 lines (182 loc) 30.4 kB
Ссылки по теме * [Стандарты создания пакетов для Arch](/index.php/%D0%A1%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D1%8B_%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%BE%D0%B2_%D0%B4%D0%BB%D1%8F_Arch "Стандарты создания пакетов для Arch") * [Пользовательский репозиторий Arch](/index.php/%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B9_%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%B9_Arch "Пользовательский репозиторий Arch") * [Создание пакетов](/index.php/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%BE%D0%B2 "Создание пакетов") * [Сборка ядра через ABS](/index.php/Kernels_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)#.D0.9A.D0.BE.D0.BC.D0.BF.D0.B8.D0.BB.D1.8F.D1.86.D0.B8.D1.8F_.D1.8F.D0.B4.D1.80.D0.B0 "Kernels (Русский)") * [makepkg (Русский)](/index.php/Makepkg_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Makepkg (Русский)") * [Официальные репозитории](/index.php/%D0%9E%D1%84%D0%B8%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%B8 "Официальные репозитории") * [pacman (Русский)](/index.php/Pacman_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Pacman (Русский)") * [PKGBUILD (Русский)](/index.php/PKGBUILD_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "PKGBUILD (Русский)") * [Patching in ABS](/index.php/Patching_in_ABS "Patching in ABS") **Состояние перевода:** На этой странице представлен перевод статьи [Arch Build System](/index.php/Arch_Build_System "Arch Build System"). Дата последней синхронизации: 6 сентября 2015\. Вы можете [помочь](/index.php/ArchWiki_Translation_Team_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "ArchWiki Translation Team (Русский)") синхронизировать перевод, если в английской версии произошли [изменения](https://wiki.archlinux.org/index.php?title=Arch_Build_System&diff=0&oldid=398463). В этой статье представлен обзор системы сборки Arch (сокращенно ABS) и пошаговое руководство для начинающих. Это не исчерпывающее руководство. Если вам нужна дополнительная информация, обратитесь к man страницам. **Примечание:** Дерево ABS синхронизируется один раз в день, поэтому оно может не содержать то, что уже доступно в репозиториях. ## Contents * [1 Что такое Arch Build System?](#.D0.A7.D1.82.D0.BE_.D1.82.D0.B0.D0.BA.D0.BE.D0.B5_Arch_Build_System.3F) * [1.1 Что такое система наподобие портов?](#.D0.A7.D1.82.D0.BE_.D1.82.D0.B0.D0.BA.D0.BE.D0.B5_.D1.81.D0.B8.D1.81.D1.82.D0.B5.D0.BC.D0.B0_.D0.BD.D0.B0.D0.BF.D0.BE.D0.B4.D0.BE.D0.B1.D0.B8.D0.B5_.D0.BF.D0.BE.D1.80.D1.82.D0.BE.D0.B2.3F) * [1.2 ABS имеет такую же концепцию](#ABS_.D0.B8.D0.BC.D0.B5.D0.B5.D1.82_.D1.82.D0.B0.D0.BA.D1.83.D1.8E_.D0.B6.D0.B5_.D0.BA.D0.BE.D0.BD.D1.86.D0.B5.D0.BF.D1.86.D0.B8.D1.8E) * [1.3 Обзор ABS](#.D0.9E.D0.B1.D0.B7.D0.BE.D1.80_ABS) * [2 Зачем мне использовать ABS?](#.D0.97.D0.B0.D1.87.D0.B5.D0.BC_.D0.BC.D0.BD.D0.B5_.D0.B8.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D1.82.D1.8C_ABS.3F) * [3 Как использовать ABS](#.D0.9A.D0.B0.D0.BA_.D0.B8.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D1.82.D1.8C_ABS) * [3.1 Установка инструментов](#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0_.D0.B8.D0.BD.D1.81.D1.82.D1.80.D1.83.D0.BC.D0.B5.D0.BD.D1.82.D0.BE.D0.B2) * [3.2 /etc/abs.conf](#.2Fetc.2Fabs.conf) * [3.3 Дерево ABS](#.D0.94.D0.B5.D1.80.D0.B5.D0.B2.D0.BE_ABS) * [3.3.1 Загрузка дерева ABS](#.D0.97.D0.B0.D0.B3.D1.80.D1.83.D0.B7.D0.BA.D0.B0_.D0.B4.D0.B5.D1.80.D0.B5.D0.B2.D0.B0_ABS) * [3.4 /etc/makepkg.conf](#.2Fetc.2Fmakepkg.conf) * [3.4.1 Задание переменной PACKAGER в /etc/makepkg.conf](#.D0.97.D0.B0.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D0.BF.D0.B5.D1.80.D0.B5.D0.BC.D0.B5.D0.BD.D0.BD.D0.BE.D0.B9_PACKAGER_.D0.B2_.2Fetc.2Fmakepkg.conf) * [3.4.1.1 Отобразить все пакеты (включая пакеты из AUR)](#.D0.9E.D1.82.D0.BE.D0.B1.D1.80.D0.B0.D0.B7.D0.B8.D1.82.D1.8C_.D0.B2.D1.81.D0.B5_.D0.BF.D0.B0.D0.BA.D0.B5.D1.82.D1.8B_.28.D0.B2.D0.BA.D0.BB.D1.8E.D1.87.D0.B0.D1.8F_.D0.BF.D0.B0.D0.BA.D0.B5.D1.82.D1.8B_.D0.B8.D0.B7_AUR.29) * [3.4.1.2 Отобразить только пакеты из репозиториев](#.D0.9E.D1.82.D0.BE.D0.B1.D1.80.D0.B0.D0.B7.D0.B8.D1.82.D1.8C_.D1.82.D0.BE.D0.BB.D1.8C.D0.BA.D0.BE_.D0.BF.D0.B0.D0.BA.D0.B5.D1.82.D1.8B_.D0.B8.D0.B7_.D1.80.D0.B5.D0.BF.D0.BE.D0.B7.D0.B8.D1.82.D0.BE.D1.80.D0.B8.D0.B5.D0.B2) * [3.5 Создание каталога для сборки](#.D0.A1.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D0.BA.D0.B0.D1.82.D0.B0.D0.BB.D0.BE.D0.B3.D0.B0_.D0.B4.D0.BB.D1.8F_.D1.81.D0.B1.D0.BE.D1.80.D0.BA.D0.B8) * [3.6 Сборка пакета](#.D0.A1.D0.B1.D0.BE.D1.80.D0.BA.D0.B0_.D0.BF.D0.B0.D0.BA.D0.B5.D1.82.D0.B0) * [3.6.1 fakeroot](#fakeroot) * [3.7 Оставлять модифицированные пакеты](#.D0.9E.D1.81.D1.82.D0.B0.D0.B2.D0.BB.D1.8F.D1.82.D1.8C_.D0.BC.D0.BE.D0.B4.D0.B8.D1.84.D0.B8.D1.86.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.BD.D1.8B.D0.B5_.D0.BF.D0.B0.D0.BA.D0.B5.D1.82.D1.8B) * [4 Другие инструменты](#.D0.94.D1.80.D1.83.D0.B3.D0.B8.D0.B5_.D0.B8.D0.BD.D1.81.D1.82.D1.80.D1.83.D0.BC.D0.B5.D0.BD.D1.82.D1.8B) ## Что такое Arch Build System? Arch Build System — это система *наподобие портов* для сборки и пакетирования программ из исходного кода. [Pacman](/index.php/Pacman_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Pacman (Русский)") является специализированным инструментом в Arch для управления бинарными пакетами (включая пакеты, собираемые с помощью ABS), а ABS — это набор инструментов для компиляции исходников в пакеты `.pkg.tar.xz`, которые уже можно устанавливать. ### Что такое система наподобие портов? *Порты* — это система используемая в *BSD для автоматизации процесса сборки программ из исходного кода. Система использует *порт* для загрузки, распаковки, исправления, компиляции и установки нужной программы. *Порт* — это всего лишь небольшой каталог на компьютере пользователя, название которого соответствует устанавливаемой программе. Этот каталог содержит несколько файлов, которые содержат инструкции по сборке и установке программ из исходных кодов. Таким образом для установки программы всего лишь нужно выполнить `make` или `make install clean` находясь в каталоге порта. ### ABS имеет такую же концепцию ABS состоит из дерева каталогов (дерева ABS), которое находится в `/var/abs`. Это дерево содержит множество подкаталогов, распределённых по названиям репозиториев и названых в соответствии с названием пакета. Это дерево представляет собой (но не содержит) все *официальные программы Arch*, получаемые через систему SVN. Вы можете воспринимать каждый такой подкаталог как 'ABS', хотя большинство называют их 'портами'. Эти ABS (или подкаталоги) не содержат ни пакета с программой, ни исходных кодов, а только файл [PKGBUILD](/index.php/PKGBUILD_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "PKGBUILD (Русский)") (и иногда другие файлы). PKGBUILD — это просто Bash скрипт для сборки — текстовый файл, содержащий инструкции по компиляции и упаковке пакета, а также URL соответствующего tarball архива с **исходниками**, который нужно скачать. (Самым главным компонентом ABS являются PKGBUILDы.) Выполнив команду [makepkg](/index.php/Makepkg_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Makepkg (Русский)") в ABS каталоге, программа сначала компилируется, а затем *упаковывается* внутри каталога сборки. Теперь вы можете воспользоваться [pacman](/index.php/Pacman_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Pacman (Русский)") (пакетным менеджером Arch Linux), для установки, обновления или удаления вашего нового пакета. ### Обзор ABS 'ABS' можно использовать в качестве обобщающего термина, поскольку она неразрывно связана с некоторыми другими компонентами. Несмотря на то, что это технически неверно, под 'ABS' может подразумеваться набор следующих компонентов: Дерево ABS Структура каталогов ABS. Каталоги синхронизируется с SVN и расположены в `/var/abs/` на вашем (локальном) компьютере. Дерево содержит много подкаталогов, названных в соответствии со всеми доступными официальными программами Arch Linux из репозиториев, которые прописаны в `/etc/abs.conf`, но не сами пакеты. Дерево создаётся после установки пакета [abs](https://www.archlinux.org/packages/?name=abs) с помощью [pacman](/index.php/Pacman "Pacman") и последующего выполнения скрипта `abs`. **Примечание:** Сами пакеты находятся в [svn](https://www.archlinux.org/svn/) и [git](https://projects.archlinux.org/svntogit/packages.git/) репозиториях, а скрипт `abs` скачивает их с помощью [rsync](/index.php/Rsync "Rsync"). [PKGBUILD](/index.php/PKGBUILD_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "PKGBUILD (Русский)") [Bash](/index.php/Bash_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Bash (Русский)") скрипт, который содержит URL исходного кода и инструкции по компиляции и упаковыванию пакета. [makepkg](/index.php/Makepkg_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Makepkg (Русский)") Шелл команда, которая читает PKGBUILDы, автоматически скачивает и компилирует исходники и создаёт `.pkg.tar*` в зависимости от массива `PKGEXT` в `makepkg.conf`. Вы также можете использовать makepkg, чтобы собирать ваши собственные пакеты из [AUR](/index.php/AUR_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "AUR (Русский)") или других источников. Для дополнительной информации смотрите [Создание пакетов](/index.php/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%BE%D0%B2 "Создание пакетов"). [pacman](/index.php/Pacman_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Pacman (Русский)") pacman — это совершенно независимая программа. Он всегда используется либо программой makepkg либо вручную для установки и удаления собранных пакетов и для просмотра зависимостей. [AUR](/index.php/AUR_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "AUR (Русский)") Пользовательский репозиторий Arch — это не имеющие отношение к ABS PKGBUILDы (неподдерживаемые), которые используются программой makepkg для компиляции и упаковки программ. В отличие от дерева ABS, которое расположено на вашем локальном компьютере, AUR представлен в виде веб сайта. AUR содержит тысячи PKGBUILDов, созданных пользователями для программ, которые недоступны в качестве официальных пакетов Arch. Если вам нужно собрать пакет, которого нет в официальном дереве Arch, то вероятнее всего вы найдёте его в AUR. ## Зачем мне использовать ABS? Система сборки Arch используется для: * Компиляции или перекомпиляции пакета по какой-либо причине * Сборки и установки новых пакетов из исходных кодов для программ, для которых ещё нет пакетов (смотрите [Создание пакетов](/index.php/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%BE%D0%B2 "Создание пакетов")) * Изменения существующих пакетов под ваши нужды (включение или отключение опций, наложение патчей) * Перестройки всей системы с использованием новых флагов компиляции "à la FreeBSD" (например с [pacbuilder](/index.php/Pacbuilder "Pacbuilder")) * Чистой сборки и установки вашего собственного ядра (смотрите [Компиляция ядра](/index.php/Kernels_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)#.D0.9A.D0.BE.D0.BC.D0.BF.D0.B8.D0.BB.D1.8F.D1.86.D0.B8.D1.8F_.D1.8F.D0.B4.D1.80.D0.B0 "Kernels (Русский)")) * Получения работающих модулей ядра для вашего собственного ядра * Легкой компиляции и установки новой/старой/бета или девел версии Arch пакета, с помощью редактирования номера версии в PKGBUILD ABS не является необходимой для использования в Arch Linux, но она удобна для автоматизации некоторых задач при компиляции из исходников. ## Как использовать ABS Сборка пакетов с помощью abs состоит из следующих шагов: 1. Установка пакета [abs](https://www.archlinux.org/packages/?name=abs) с помощью [pacman](/index.php/Pacman_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Pacman (Русский)"). 2. Запуск команды `abs` с правами root для создания дерева ABS, синхронизированного с сервером Arch Linux. 3. Копирование файлов для сборки (обычно расположенных в `/var/abs/<репозиторий>/<название_пакета>`) в каталог сборки. 4. Переход в этот каталог, редактирование PKGBUILD (если это необходимо) и выполнение команды **makepkg**. 5. В соответствии с инструкциями в PKGBUILD, makepkg скачает нужный tarball архив с исходным кодом, распакует его, наложит патч (если необходимо), скомпилирует в соответствии с флагами `CFLAGS`, заданными в `makepkg.conf` и наконец сожмёт собранные файлы в пакет с расширением `.pkg.tar.gz` или `.pkg.tar.xz`. 6. Установка, заключающаяся в выполнении команды `pacman -U <файл .pkg.tar.xz>`. Удаление пакета также осуществляется с помощью pacman. ### Установка инструментов Чтобы использовать ABS, вы должны [установить](/index.php/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C "Установить") пакет [abs](https://www.archlinux.org/packages/?name=abs). Этот пакет включает в себя скрипты синхронизации abs, некоторые скрипты сборки и [rsync](/index.php/Rsync "Rsync") (в качестве зависимости, если он у вас ещё не установлен). Однако, перед тем как вы сможете что-то собрать, вам также понадобятся основные инструменты сборки. Они уже подготовлены для вас в [группе пакетов](/index.php/Pacman_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0_.D0.B3.D1.80.D1.83.D0.BF.D0.BF.D1.8B_.D0.BF.D0.B0.D0.BA.D0.B5.D1.82.D0.BE.D0.B2 "Pacman (Русский)") [base-devel](https://www.archlinux.org/groups/x86_64/base-devel/). Эту группу можно установить с помощью pacman. ### /etc/abs.conf Отредактируйте файл `/etc/abs.conf`, чтобы он включал в себя нужные вам репозитории. Уберите `!` перед соответствующими репозиториями. Например: ``` REPOS=(core extra community !testing) ``` ### Дерево ABS Дерево ABS — это иерархия каталогов, синхронизируемая с SVN, расположенная в `/var/abs` и выглядит оно примерно так: ``` | -- core/ | || -- acl/ | || || -- PKGBUILD | || -- attr/ | || || -- PKGBUILD | || -- abs/ | || || -- PKGBUILD | || -- autoconf/ | || || -- PKGBUILD | || -- ... | -- extra/ | || -- acpid/ | || || -- PKGBUILD | || -- apache/ | || || -- PKGBUILD | || -- ... | -- community/ | || -- ... ``` Дерево ABS имеет в точности такую же структуру, как и база данных пакетов: * Первый уровень вложенности: Название репозитория * Второй уровень вложенности: Каталоги, названные именами пакетов * Третий уровень вложенности: PKGBUILD (содержит информацию, необходимую для сборки пакета) и другие необходимые файлы (патчи и иные файлы, необходимые для сборки пакета) Исходные код для пакетов не представлен в ABS каталоге. Вместо этого `PKGBUILD` содержит URL, с которого будет произведена загрузка исходных кодов когда пакет будет собираться. Поэтому размер дерева abs довольно мал. #### Загрузка дерева ABS Выполните: ``` # abs ``` Теперь ваше дерево ABS находится в каталоге `/var/abs`. Обратите внимание, что ветви дерева ABS были созданы в соответствии с заданными вами репозиториями в `/etc/abs.conf`. Команду abs нужно выполнять периодически, чтобы ваше дерево было синхронизировано с официальными репозиториями. Файлы конкретного ABS пакета можно также закачать командой: ``` # abs <репозиторий>/<пакет> ``` В этом случае вам не нужно обновлять всё дерево только для того, чтобы собрать один пакет. ### /etc/makepkg.conf Файл `/etc/makepkg.conf` программы [makepkg](/index.php/Makepkg_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Makepkg (Русский)") определяет глобальные переменные окружения и флаги компиляции, которые вы можете захотеть отредактировать если вы используете [SMP](https://en.wikipedia.org/wiki/ru:%D0%A1%D0%B8%D0%BC%D0%BC%D0%B5%D1%82%D1%80%D0%B8%D1%87%D0%BD%D0%B0%D1%8F_%D0%BC%D1%83%D0%BB%D1%8C%D1%82%D0%B8%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80%D0%BD%D0%BE%D1%81%D1%82%D1%8C для дополнительной информации.) #### Задание переменной PACKAGER в /etc/makepkg.conf Настройка переменной `PACKAGER` в файле `/etc/makepkg.conf` является необязательным, но *настоятельно рекомендуемым* шагом. Это позволяет сделать "пометку", чтобы быстро определить, какие пакеты были собраны и/или установлены ВАМИ, а не официальным сопроводителем! Это можно легко сделать с помощью [expac](https://www.archlinux.org/packages/?name=expac): ##### Отобразить все пакеты (включая пакеты из AUR) `$ grep myname /etc/makepkg.conf` `PACKAGER="myname <myemail@myserver.com>"` `$ expac "%n %p" | grep "myname" | column -t` ``` archey3 myname binutils myname gcc myname gcc-libs myname glibc myname tar myname ``` ##### Отобразить только пакеты из репозиториев В этом примере отобразятся только те пакеты, которые находятся в репозиториях, заданных в `/etc/pacman.conf`: `$ . /etc/makepkg.conf; grep -xvFf <(pacman -Qqm) <(expac "%n\t%p" | grep "$PACKAGER$" | cut -f1)` ``` binutils gcc gcc-libs glibc tar ``` ### Создание каталога для сборки Рекомендуется создать каталог, в котором непосредственно будет производиться компиляция; вы никогда не должны изменять дерево ABS, производя сборку в его каталогах, поскольку данные будут потеряны (перезаписаны) при каждом обновлении ABS. Хорошей практикой является использование вашего домашнего каталога, хотя некоторые пользователи Arch предпочитают создавать каталог 'local' в `/var/abs/`, которым владеет обычный пользователь. Создайте ваш каталог для сборки, например: ``` $ mkdir -p $HOME/abs ``` Скопируйте ABS из дерева (`/var/abs/<репозиторий>/<имя_пакета>`) в ваш каталог сборки. ### Сборка пакета В данном примере мы будем собирать пакет *slim*. Скопируйте slim ABS из дерева ABS в каталог сборки: ``` $ cp -r /var/abs/extra/slim/ ~/abs ``` Перейдите в каталог сборки: ``` $ cd ~/abs/slim ``` Измените PKGBUILD под ваши нужды, затем выполните *makepkg* (с флагом `-s` для того, чтобы автоматически обрабатывать зависимости, необходимые на время сборки): ``` $ makepkg -s ``` **Примечание:** Прежде чем жаловаться на недостающие зависимости (во время make), не забудьте проверить, что группа [base-devel](https://www.archlinux.org/groups/x86_64/base-devel/) установлена, поскольку это подразумевается при сборке пакетов с помощью *makepkg*. Смотрите [#Установка инструментов](#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0_.D0.B8.D0.BD.D1.81.D1.82.D1.80.D1.83.D0.BC.D0.B5.D0.BD.D1.82.D0.BE.D0.B2). Установите с правами супер пользователя: ``` # pacman -U slim-1.3.0-2-i686.pkg.tar.xz ``` Вот и всё. Вы только что собрали slim из исходных кодов и правильно установили его в вашу систему с помощью pacman. Удаление пакета также осуществляется с помощью pacman командой `pacman -R slim`. Метод установки программ с использованием ABS предоставляет удобство, сохраняя при этом полную прозрачность и контроль над *build* и *install* функциями, включёнными в PKGBUILD. #### fakeroot По сути, такие же самые шаги предпринимаются при традиционном способе установки (обычно включающем шаги `./configure, make, make install`), но программа устанавливается в *fake root* окружение. (*fake root* — это просто подкаталог внутри каталога сборки, который функционирует и ведёт себя как корневой каталог системы. С помощью программы **fakeroot**, *makepkg* создаёт ненастоящий корневой каталог и устанавливает скомпилированные бинарники и необходимые файлы в него, в качестве владельца выставляя **root**.) Затем *fake root*, т.е. дерево подкаталогов, содержащее скомпилированную программу, сжимается в архив с расширением `.pkg.tar.xz`, т.е. в *пакет*. Затем, когда запускается pacman, он извлекает пакет (устанавливает его) в настоящий системный корневой каталог (`/`). ### Оставлять модифицированные пакеты При обновлении системы, pacman затрёт изменённый вами пакет из ABS на пакет, который имеет такое же имя в официальных репозиториях. Следуйте инструкции ниже для того, чтобы этого избежать. Впишите массив групп в PKGBUILD и добавьте пакет в группу под названием `modified`. `PKGBUILD` `groups=('modified')` Добавьте эту группу в секцию `IgnoreGroup` в `/etc/pacman.conf`. `/etc/pacman.conf` `IgnoreGroup = modified` Если в официальных репозиториях появится новая версия, то во время обновления системы pacman напечатает замечание, что он пропускает обновление этого пакета, поскольку он находится в секции IgnoreGroup. С этого момента изменённый пакет должен быть пересобран из ABS во избежание частичных обновлений. ## Другие инструменты * [pbget](http://xyne.archlinux.ca/projects/pbget/) - получение PKGBUILDов для конкретных пакетов прямо из веб интерфейса. Также работает для AUR. * [asp](https://github.com/falconindy/asp) - инструмент для управления сборкой из исходных кодов, использующийся для создания Arch Linux пакетов. Использует git интерфейс, что предоставляет более свежие исходные коды.