Arch Linux packages: полное руководство по управлению пакетами

Команда pacman -Syu завершилась ошибкой «conflicting files» или «target not found» — это самые частые проблемы, с которыми сталкиваются пользователи при работе с пакетами Arch Linux. Причина почти всегда кроется не в поломке системы, а в непонимании того, как устроена пакетная модель дистрибутива: бинарные репозитории, менеджер pacman и пользовательский репозиторий AUR работают по разным правилам.

Эта статья разбирает устройство пакетной системы Arch: откуда берутся пакеты, как их искать, устанавливать, обновлять и удалять, чем официальные репозитории отличаются от AUR и что делать при типичных ошибках. Материал подойдёт как новичкам, только перешедшим на Arch, так и тем, кто хочет систематизировать знания о pacman и сопутствующих инструментах.

Как устроена пакетная система Arch Linux

Arch Linux использует модель rolling release: пакеты обновляются непрерывно, без привязки к крупным релизам дистрибутива. Это значит, что система всегда получает свежие версии программ, но требует регулярного полного обновления — частичное обновление (когда обновлены лишь отдельные пакеты) официально не поддерживается и является частой причиной сбоев.

Пакеты распространяются в формате .pkg.tar.zst — это сжатые архивы с бинарными файлами и метаданными о зависимостях. Управляет ими менеджер пакетов pacman, который разрешает зависимости, скачивает файлы с зеркал и ведёт локальную базу установленного ПО.

  • 📦 core — базовые компоненты системы: ядро, glibc, системные утилиты;
  • 📦 extra — основной массив программ: браузеры, офисные пакеты, среды рабочего стола;
  • 📦 multilib — 32-битные библиотеки для 64-битной системы (по умолчанию отключён);
  • 📦 AUR — пользовательский репозиторий с рецептами сборки, поддерживается сообществом, а не разработчиками Arch.

Поиск пакетов: pacman и официальные базы

Перед установкой программу стоит найти и проверить её точное имя. Поиск по официальным репозиториям выполняется командой pacman -Ss ключевое_слово. Например, pacman -Ss firefox покажет все пакеты, в названии или описании которых встречается это слово.

Если нужно узнать, какому пакету принадлежит конкретный файл, используется другой инструмент — pacman -F, но сначала требуется обновить файловую базу:

sudo pacman -Fy

pacman -F имя_файла

Проверить, установлен ли пакет локально, можно через pacman -Qs имя (поиск по локальной базе) или pacman -Qi имя для подробной информации: версия, зависимости, дата установки, причина установки (явно или как зависимость).

Установка и удаление пакетов

Базовая команда установки — sudo pacman -S имя_пакета. Pacman сам скачает пакет и все недостающие зависимости. Если нужно установить сразу несколько программ, их перечисляют через пробел: sudo pacman -S vlc gimp htop.

Удаление устроено чуть сложнее, потому что у пакета могут быть зависимости и зависимые программы. Основные варианты:

  • 🗑️ sudo pacman -R имя — удалить только пакет, если от него ничего не зависит;
  • 🗑️ sudo pacman -Rs имя — удалить пакет вместе с зависимостями, которые больше никому не нужны;
  • 🗑️ sudo pacman -Rns имя — то же самое плюс удаление конфигурационных файлов (бэкапы с расширением .pacsave не создаются);
  • 🗑️ sudo pacman -Rsc имя — каскадное удаление вместе со всеми зависимыми пакетами (использовать осторожно).
⚠️ Внимание: опция -Rsc удаляет целую цепочку пакетов. Перед подтверждением внимательно читайте список того, что pacman собирается стереть, — там могут оказаться нужные программы.

☑️ Безопасная установка пакета в Arch

Выполнено: 0 / 5

Обновление системы и работа с зеркалами

Полное обновление выполняется одной командой:

sudo pacman -Syu

Здесь -y обновляет локальную базу репозиториев, а -u обновляет все установленные пакеты. Делать это стоит регулярно: на rolling release длительный простой (несколько месяцев без обновлений) может привести к проблемам с ключами подписи и массовым конфликтам при следующем обновлении.

Скорость загрузки зависит от выбранных зеркал. Их список хранится в файле /etc/pacman.d/mirrorlist. Для автоматического выбора быстрых зеркал используется утилита reflector, которая тестирует серверы и перезаписывает список. Конкретные параметры подбора (страна, протокол, количество зеркал) задаются флагами — актуальный синтаксис смотрите в reflector --help или man-странице, так как опции могут меняться между версиями.

⚠️ Внимание: не прерывайте обновление на этапе установки пакетов, особенно если обновляется ядро или glibc. Прерванное обновление — одна из немногих ситуаций, способных реально повредить систему. Если ноутбук работает от батареи, подключите зарядку заранее.

AUR: пользовательский репозиторий Arch

Если программы нет в официальных репозиториях, почти наверняка она есть в AUR (Arch User Repository). Важно понимать: AUR содержит не готовые пакеты, а скрипты сборки PKGBUILD, которые скачивают исходный код или бинарники и собирают из них пакет локально на вашей машине.

Работать с AUR вручную можно через git и makepkg, но чаще используют AUR-хелперы — например, yay или paru. Они автоматизируют скачивание PKGBUILD, разрешение зависимостей и сборку. Установка через yay выглядит так же, как через pacman: yay -S имя_пакета.

📊 Как вы устанавливаете пакеты из AUR?
yay
paru
Вручную через makepkg
Не использую AUR

Поскольку PKGBUILD публикуют обычные пользователи, перед установкой стоит открыть файл и проверить, откуда скачиваются исходники и что выполняют скрипты. AUR-хелперы обычно предлагают просмотреть PKGBUILD перед сборкой — не пропускайте этот шаг для малоизвестных пакетов.

Типичные ошибки и их решение

Большинство проблем с пакетами Arch сводится к нескольким повторяющимся сценариям. Ниже — таблица с диагностикой.

ОшибкаВероятная причинаЧто делать
target not foundПакета нет в репозиториях, опечатка в имени или устаревшая локальная базаВыполнить pacman -Sy, проверить имя через pacman -Ss, поискать в AUR
conflicting files / exists in filesystemФайл уже существует и не принадлежит ни одному пакету (часто после установки через pip или make install)Найти владельца через pacman -Qo файл; если владельца нет — вручную удалить или переместить конфликтующий файл
invalid or corrupted package (PGP signature)Устаревшее ключевое кольцо archlinux-keyringОбновить сначала sudo pacman -S archlinux-keyring, затем всю систему
failed to commit transaction (conflicting dependencies)Конфликт версий зависимостей, часто после частичного обновленияВыполнить полное обновление pacman -Syu, не обновлять пакеты поодиночке
error: failed retrieving file / 404Зеркало устарело или недоступноОбновить mirrorlist (вручную или через reflector) и повторить
Что делать, если система не загружается после обновления

Загрузитесь с установочного ISO Arch, смонтируйте корневой раздел, выполните arch-chroot /mnt и повторите pacman -Syu внутри chroot — это завершит прерванную транзакцию. После этого проверьте, что ядро и initramfs пересобраны корректно.

Обслуживание: кэш, сироты и логи

Pacman хранит скачанные пакеты в кэше /var/cache/pacman/pkg/, и со временем он разрастается. Очистка старых версий выполняется командой sudo pacman -Sc (удаляет версии, которые уже не установлены) или sudo pacman -Scc (очищает кэш полностью — откат на старую версию после этого будет затруднён).

Пакеты-сироты — это зависимости, от которых больше никто не зависит. Их список выводится командой pacman -Qtdq, а удалить все разом можно так:

sudo pacman -Rs $(pacman -Qtdq)

Перед удалением просмотрите список: иногда среди «сирот» оказываются пакеты, которые вы используете напрямую, но установили как зависимость. Такой пакет можно пометить как установленный явно командой sudo pacman -D --asexplicit имя.

FAQ: частые вопросы о пакетах Arch Linux

Чем pacman отличается от apt или dnf?

Pacman — менеджер пакетов Arch Linux, работающий с бинарными пакетами формата .pkg.tar.zst и собственной базой зависимостей. В отличие от apt (Debian/Ubuntu), он рассчитан на rolling release: нет разделения на релизы дистрибутива, обновления идут непрерывно. Синтаксис отличается: вместо apt install используется pacman -S.

Безопасно ли использовать AUR?

AUR не проходит официальную проверку разработчиками Arch — качество и безопасность PKGBUILD зависят от сопровождающего. Практические меры: выбирайте пакеты с высоким числом голосов и свежим обновлением, просматривайте PKGBUILD перед сборкой, не запускайте сборку от root (makepkg сам откажется это делать).

Как откатить пакет на предыдущую версию?

Если старая версия ещё есть в кэше /var/cache/pacman/pkg/, её можно установить напрямую: sudo pacman -U /var/cache/pacman/pkg/имя-версия.pkg.tar.zst. Если кэш очищен, существует Arch Linux Archive — официальный архив снимков репозиториев, откуда можно скачать старую версию. Учтите, что откат одного пакета может потребовать отката связанных зависимостей.

Почему нельзя обновлять систему командой pacman -S имя_пакета после долгого простоя?

Установка отдельного пакета подтянет свежие версии его зависимостей, но остальная система останется старой — возникает частичное обновление. Библиотеки разных версий конфликтуют, и программы начинают падать с ошибками символов. Правильный порядок: сначала pacman -Syu, затем установка новых пакетов.

Как узнать, какие файлы установил пакет?

Команда pacman -Ql имя_пакета выводит полный список файлов, принадлежащих установленному пакету. Обратная задача — узнать владельца файла — решается через pacman -Qo путь_к_файлу.