Команда 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
Обновление системы и работа с зеркалами
Полное обновление выполняется одной командой:
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 имя_пакета.
Поскольку 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 путь_к_файлу.