Что может расстроить новичков Arch Linux – так это очень небольшое количество официальных пакетов, которые можно загрузить с помощью стандартного менеджера pacman. Данный мануал научит вас загружать разные пакеты на Arch Linux при помощи Yaourt.
Глоссарий:
- PKGBUILD: сценарий сборки пакетов Arch.
- makepkg: инструмент, который читает PKGBUILD и собирает пакет для Arch.
- AUR: Arch User Repository, коллекция сценариев PKGBUILD, разработанных сообществом.
- pacman: стандартный инструмент управления пакетами Arch Linux.
- yaourt: инструмент для сборки пакетов AUR.
Философия
После создания свежего сервера Arch Linux вы получаете доступ к 3 стандартным репозиториям pacman:
- core
- extra
- community
Репозиторий community поддерживается пользователями Arch.
Разработчики Arch очень строго относятся к пакетам, и пакеты редко становятся стандартными. Кроме того, что пакет должен набрать определенное количество голосов, его также должен использовать так называемый «доверенный пользователь». Разработчики системы не видят смысла предоставлять доступ к пакету через стандартный менеджер, пока пакет не используется большинством пользователей системы. Это отличает Arch от других дистрибутивов, многие из которых пытаются поддерживать как можно больше официальных пакетов (что чаще всего не получается делать). В Arch очень мало доверенных пользователей и немногим более 2000 пакетов, разработанных сообществом.
Однако, в отличие от многих дистрибутивов, Arch Linuxподдерживает дополнительный репозиторий сообщества – Arch User Repository. AUR – простой репозиторий, который поддерживается исключительно сообществом, благодаря чему количество пакетов в нем постоянно растет.
Пакеты AUR – это не исходный код и не бинарные файлы. Это сценарии (PKGBUILD), которые позволяют загрузить, собрать и установить программу. Этот подход к управлению пакетами унаследован из портов FreeBSD. Если рассмотреть PKGBUILD в исходно-бинарном контексте, то исходником здесь может быть что угодно – от репозитория git до пакетов .deb. Кроме того, тут нет никаких лицензионных ограничений.
Arch Linux – дистрибутив плавающих релизов, потому любой загруженный из AUR или стандартного репозитория пакет будет предоставлять последнюю доступную для Arch версию (даже если версия системы устарела). Поскольку загрузить можно только одну версию каждого пакета, пакеты проще исправлять (и исправления затронут все версии). Если обновление версии пакета может помешать работе системы, вы можете использовать более старую версию – для этого нужно изменить версию в PKGBUILD.
Arch Linux vs. обычный Linux
Arch Linux:
- Стандартные пакеты поддерживаются разработчиками Arch и доверенными пользователями.
- Пакеты, разработанные сообществом, хранятся отдельно в AUR. В репозитории находится по одному релизу для каждого пакета, потому сообщество может коллективно исправлять ошибки. Такая прозрачность привлекает в сообщество новых пользователей.
Обычный Linux:
- Стандартные пакеты загружаются на одних условиях, хотя поддерживаются на разных условиях.
- Версия пакета зависит от релиза. Коллективная работа над исправлениями невозможна.
Ubuntu предлагает подобный AUR репозиторий, который называется universe. На данный момент он включен в систему по умолчанию. Ситуация в Ubuntu аналогична ситуации, когда пользователи Arch получают доступ к нескольким различным AUR с помощью pacman прямо из коробки, но без поддержки проектов с закрытым исходным кодом и без средств немедленной обратной связи с сообществом.
По этим ссылкам вы найдете пакет nodejs git в AUR и пакет nodejs dev в Universe.
Отсутствие диалога о пакетах в Ubuntu подкрепляется такими словами на странице пакета:
It should generally not be necessary for users to contact the original maintainer.
Что такое Yaourt?
Хотя в AUR есть много хороших и постоянно поддерживаемых пакетов, у пользователей нет к ним доступа сразу после установки Arch. Однако в ArchWiki есть страница о вспомогательных инструментах, которые помогают упростить загрузку пакета. Одним из лучших среди таких инструментов является yaourt.
Yaourt сводит запутанный процесс установки пакетов AUR до поиска по ключевым словам и серии вопросов «да/нет». Он также эффективно заменяет pacman, так как он может искать и устанавливать как AUR, так и стандартные пакеты.
Установка Yaourt
Yaourt можно получить двумя способами:
- Добавить репозиторий archlinuxfr в /etc/pacman.conf.
- Собрать yaourt из AUR.
Ниже мы рассмотрим оба варианта, но первый гораздо проще. Если вы хотите научиться загружать и устанавливать пакеты из AUR, сразу переходите к методу 2.
Метод 1: Установка из репозитория
Откройте конфигурационный файл pacman, чтобы добавить пользовательский репозиторий.
sudo vi /etc/pacman.conf
В конец добавьте репозиторий archlinuxfr:
[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch
Переменная $arch просто определяет дистрибутив x86 или x86_64. Она будет заменена при обработке файла.
После того, как пользовательский репозиторий был добавлен в pacman.conf, нужно синхронизировать базу данных пакета с пакетами из archlinuxfr и всеми обновлениями стандартных пакетов, для которых требуется yaourt или его зависимости.
sudo pacman -Sy
После этого yaourt и его зависимости можно установить так же, как и любой другой пакет.
sudo pacman -S yaourt
Последние две команды можно объединить в одну:
sudo pacman -Sy yaourt
Метод 2: установка с помощью AUR
Скажем сразу – это не для слабонервных. Но этот метод научит вас загружать, собирать и устанавливать любой пакет из AUR в отсутствие вспомогательного инструмента, такого как yaourt.
Общий процесс выглядит следующим образом:
- Загрузить tarball, содержащий PKGBUILD
- РАспаковать архив
- Запустить makepkg в папке, содержащей PKGBUILD
- Установить полученный файл .xz
Во-первых, yaourt нужен пакет package-query.
Обновите стандартные хранилища.
sudo pacman -Sy
Загрузите файл из AUR.
curl -O https://aur.archlinux.org/packages/pa/package-query/package-query.tar.gz
Распакуйте файл, чтобы получить доступ к PKGBULD:
tar zxvf package-query.tar.gz
Перейдите в папку с PKGBUILD.
cd package-query
Соберите пакет. Флаг –s синхронизирует зависимости пакета из стандартных репозиториев с pacman до сборки пакета.
makepkg -s
Примечание: Если у вас нет настроенного пользователя, добавьте флаг –asroot, чтобы запустить makepkg как root. В нормальных условиях собирать пакеты как root не рекомендуется, поскольку PKGBUILD может содержать вредоносный или неправильный код.
makepkg -s --asroot
Установите файл, собранный командой makepkg. В makepkg можно использовать флаг -i (т.е. makepkg -si вместо makepkg -s), чтобы объединить установку с предыдущей командой.
sudo pacman -U *.xz
Затем сделайте то же самое с архивом yaourt:
curl -O https://aur.archlinux.org/packages/ya/yaourt/yaourt.tar.gz
tar zxvf yaourt.tar.gz
cd yaourt
makepkg -si
Примечание: Несмотря на то, что package-query является зависимостью yaourt, флаг -s в makepkg не будет синхронизировать его, поскольку он не находится в стандартных репозиториях. Вот почему его нужно было собирать отдельно. Хотя package-query находится в репозитории archlinuxfr, как только вы его добавите, вы сможете также установить yaourt через pacman. Поскольку yaourt обрабатывает зависимости AUR, обычно не нужно собирать зависимости AUR отдельно.
Использование Yaourt
Как правило, работа yaourt начинается с передачи ему желаемого ключевого слова. Yaourt будет искать его как в именах пакетов, так и в описаниях.
yaourt <keyword>
При поиске yaourt выведет все совпадения на экран:
- Описание
- Номер версии
- Установлен ли пакет в системе
- Количество голосов за пакет
Если установленный пакет старше, чем в AUR, он будет выделен. Это полезно для отслеживания пакетов, которые нарушают работу системы.
Когда вы выбираете пакет из списка, yaourt показывает последние комментарии и спрашивает, хотите ли вы отредактировать PKGBUILD. Это позволяет редактировать пакет, если с ним что-то не так. Если кто-то разместил исправление в комментариях, вы можете внести изменения в PKGBUILD, прежде чем yaourt соберет его через makepkg.
Помимо поиска, yaourt поддерживает другие стандартные операции управления пакетами.
- yaourt -S: установить или обновить пакет
- yaourt -Sy: синхронизировать базу данных пакета pacman
- yaourt -R: удалить пакет
- yaourt -G: получить PKGBUILD для пакета
- yaourt –stats: показать, сколько места использует пакет
У Yaourt есть опция экспорта для хранения пакетов после их создания.
yaourt -Sb --export <destination dir> <package>
Это можно использовать для создания бинарных резервных копий важных пакетов. Если вы хотите создать и архивировать пакет, не устанавливая его, просто выберите no на этапе установки.