Сразу к делу: pacman это менеджер пакетов Arch Linux, и для повседневной работы хватает десятка команд. Обновление системы делает pacman -Syu, установка пакета pacman -S имя, удаление вместе с конфигами и зависимостями pacman -Rns имя, поиск pacman -Ss запрос. Ниже разобраны все команды, которые реально нужны, с примерами и подводными камнями. Статья построена как шпаргалка: читай по разделам или ищи нужную операцию по заголовку.
Обновление Arch Linux выполняется одной командой:
sudo pacman -Syu
Флаг -S означает синхронизацию с репозиториями, -y обновление баз пакетов, -u обновление установленных пакетов. Вместе они дают полное обновление системы. Эту команду стоит запускать регулярно, раз в несколько дней.
pacman -Sy обновляет только базы пакетов, но не сами пакеты. После этого pacman считает базы свежими и может предложить установить пакет, собранный под более новые библиотеки, чем стоят у тебя. Получается частичное обновление, и система ломается. Подробный разбор этой ошибки в статье «Частичное обновление pacman».
Если базы устарели сильно, а -Syu не видит обновлений, принудительно перекачай базы:
sudo pacman -Syyu
Двойное -yy заставляет pacman скачать базы заново, даже если он считает их свежими. Полезно после смены зеркал или при подозрении на повреждённую базу.
Во время обновления pacman скачивает новые версии пакетов, проверяет их подписи и заменяет старые файлы. Если обновляется ядро, после перезагрузки ты попадёшь в новую версию. Если обновляются glibc или systemd, pacman может попросить перезагрузиться, чтобы изменения вступили в силу.
Посмотреть доступные обновления без установки можно командой checkupdates из пакета pacman-contrib. Она выводит список пакетов с новыми версиями и ничего не меняет в системе. Удобно проверять обновления в скриптах и перед планированием перезагрузки.
Перед обновлением загляни на главную страницу archlinux.org. Там публикуют предупреждения о ручных действиях после обновления, например о переносе конфигов или пересборке ядра.
Иногда после -Syu ядро остаётся старым: pacman пишет, что всё обновлено, а uname -r показывает прежнюю версию. Причины и решение в статье «Ядро не обновилось».
Установка одного пакета:
sudo pacman -S firefox
Несколько пакетов за раз:
sudo pacman -S firefox vlc htop
Повторный pacman -S имя переустанавливает пакет поверх текущего. Так чинят сломанные файлы и возвращают удалённые вручную. Флаг --needed пропускает уже установленные пакеты:
sudo pacman -S --needed base-devel git
В скриптах удобно сочетать --needed и --noconfirm, чтобы pacman не задавал вопросов:
sudo pacman -S --needed --noconfirm htop
Локальный файл пакета:
sudo pacman -U ./package.pkg.tar.zst
Пакет по ссылке:
sudo pacman -U https://example.com/package.pkg.tar.zst
Флаг -U ставит пакет из файла или URL. Так устанавливают пакеты, которых нет в официальных репозиториях, например собранные вручную через makepkg.
Пакет из AUR так не поставишь: pacman -U принимает только файлы и прямые ссылки. Для AUR используй хелпер вроде yay, он сам собирает пакет из исходников и передаёт результат в pacman.
Установить пакет сразу как зависимость можно флагом --asdeps:
sudo pacman -S --asdeps имя
Такой пакет попадёт в список сирот, когда перестанет быть нужен.
sudo pacman -Sw firefox
Флаг -w только скачивает пакет в кэш, не устанавливая его. То же самое делает --downloadonly. Пригодится, когда нужно поставить пакет позже без интернета. Скачанные пакеты попадают в /var/cache/pacman/pkg, откуда их потом ставят через pacman -U.
Удаление бывает четырёх уровней, от мягкого до жёсткого.
sudo pacman -R vlc
Удаляет сам пакет. Конфигурационные файлы и зависимости остаются на месте.
sudo pacman -Rs vlc
Флаг -s убирает ещё и зависимости, которые не нужны другим пакетам. Это стандартный способ удаления.
sudo pacman -Rns vlc
Флаг -n дополнительно удаляет конфигурационные файлы пакета. Используй, когда пакет больше не понадобится совсем. Комбинация -Rns самая частая в повседневной работе.
Удалять можно сразу несколько пакетов одной командой:
sudo pacman -Rns vlc firefox
pacman спросит подтверждение и покажет, какие зависимости будут удалены вместе с пакетами.
sudo pacman -Rdd имя
Флаг -dd пропускает проверку зависимостей. pacman удалит пакет, даже если от него зависят другие. Применяй только когда точно понимаешь, что делаешь, иначе сломаешь систему.
Пакеты, которые стали не нужны после удаления зависимостей, называются сиротами. Найти и удалить их одной командой:
sudo pacman -Qtdq | sudo pacman -Rns -
-Qtdq выводит список пакетов, не нужных никому как зависимость, а -Rns - удаляет их из списка. Тире в конце означает «читать список из stdin». Запускай эту команду время от времени, кэш сирот разрастается незаметно.
Перед удалением просмотри список, который выводит -Qtdq. Иногда там оказываются пакеты, которые нужны, но помечены как зависимости по ошибке. В таком случае пометь их явно через pacman -D --asexplicit, и они выпадут из списка сирот.
У pacman два режима поиска: по репозиториям и по установленным пакетам. Первый нужен, чтобы найти и поставить новый пакет, второй чтобы разобраться в том, что уже стоит. Команды отличаются одной буквой: -Ss ищет в репозиториях, -Qs среди установленных.
pacman -Ss firefox
Ищет по имени и описанию во всех подключённых репозиториях. Вывод показывает имя пакета, версию и короткое описание.
pacman -Qs firefox
Ищет только среди установленных пакетов. Удобно, когда нужно вспомнить, стоит ли пакет и какая у него версия.
pacman -Sg gnome
Показывает состав группы. Установить группу целиком:
sudo pacman -S gnome
Группы вроде base-devel и gnome объединяют связанные пакеты. При установке pacman спросит, какие пакеты группы нужны.
pacman -Si firefox # информация из репозитория
pacman -Qi firefox # информация об установленном пакете
Показывают зависимости, размер, описание, лицензию. -Qi дополнительно показывает, установлен ли пакет явно или как зависимость.
pacman -Qo /usr/bin/firefox
Показывает, какой установленный пакет владеет файлом. Полезно, когда не знаешь, откуда взялся файл.
pacman -Fl firefox # файлы пакета в репозитории
pacman -Ql firefox # файлы установленного пакета
-Fl работает по базе файлов репозитория, -Ql по установленному пакету.
pacman -Qe # пакеты, установленные явно, а не как зависимости
pacman -Qm # пакеты из AUR и локальные
-Qm показывает пакеты, которых нет в официальных репозиториях. Их обновляет не pacman, а AUR-хелпер вроде yay.
Сначала загрузи базу файлов:
sudo pacman -Fy
Потом ищи, какой пакет предоставляет файл:
pacman -F /usr/bin/ffmpeg
В отличие от -Qo, -F работает и для неустановленных пакетов. База файлов занимает место, но окупается, когда нужно быстро найти пакет по бинарнику.
База файлов обновляется отдельно от основных баз. Если pacman -F не находит файл, который точно есть в репозитории, выполни sudo pacman -Fy ещё раз и повтори поиск.
Проверка всех установленных пакетов:
sudo pacman -Qkk
Проверка одного пакета:
sudo pacman -Qkk firefox
-Qkk сверяет контрольные суммы файлов с базой. Если pacman ругается на изменённые файлы, а ты их не трогал, переустанови пакет через pacman -S firefox.
Проверка всех пакетов занимает время, поэтому запускай -Qkk без аргументов нечасто. Для быстрой проверки одного подозрительного пакета достаточно pacman -Qkk имя.
sudo pacman -D --asdeps firefox
Полезно, когда пакет поставили явно, а он нужен только как зависимость. Обратная операция pacman -D --asexplicit. Так ты управляешь списком pacman -Qe и чисткой сирот.
Размер установленного пакета показывает pacman -Qi имя в поле Installed Size. Общий размер кэша оценивается так:
du -sh /var/cache/pacman/pkg
Список всех установленных пакетов выводит pacman -Q. Обычно его фильтруют через grep:
pacman -Q | grep ffmpeg
Если нужно найти самые тяжёлые пакеты, используй expac -H M '%m %n' | sort -rn | head -20. expac ставится из официальных репозиториев обычным pacman -S expac.
Все скачанные пакеты лежат в /var/cache/pacman/pkg. Со временем там накапливаются старые версии, и кэш разрастается на гигабайты.
Оставить только последнюю версию каждого пакета:
sudo paccache -rk1
paccache входит в пакет pacman-contrib. Полная очистка кэша:
sudo pacman -Sc
Удаляет все пакеты из кэша, кроме установленных в системе сейчас. Если нужно указать другой кэш, используй флаг --cachedir:
sudo pacman -S --cachedir /mnt/var/cache/pacman/pkg firefox
Очистка кэша и старых ядер подробно разобрана в статье «Чистка старых ядер и initramfs».
Основные настройки в /etc/pacman.conf:
IgnorePkg: список пакетов, которые pacman не будет обновлять. Например, IgnorePkg = linux linux-headers.HoldPkg: пакеты, которые нельзя удалить без явного подтверждения. По умолчанию там pacman glibc.Color: цветной вывод.ParallelDownloads: параллельная загрузка пакетов.Список зеркал в /etc/pacman.d/mirrorlist. Чем выше зеркало в списке, тем быстрее pacman его использует. Настройка зеркал разобрана в статье «Настройка mirrorlist».
Синтаксис простой: каждая опция на отдельной строке, значения через пробел или знак равенства. После правки конфига перезапускать ничего не нужно, pacman читает его при каждом запуске.
В /etc/pacman.conf репозитории подключаются блоками. Например, тестовый репозиторий:
[testing]
Include = /etc/pacman.d/mirrorlist
После добавления репозитория обнови базы: sudo pacman -Syy. Пакеты из testing ставятся обычным pacman -S, но будь осторожен: они могут быть нестабильными. Точно так же подключаются сторонние репозитории вроде chaotic-aur.
Все операции записываются в /var/log/pacman.log. Если нужно узнать, когда и какой пакет был установлен или удалён:
grep 'firefox' /var/log/pacman.log
При загрузке с live-USB и arch-chroot pacman работает как обычно, но с указанием корня:
arch-chroot /mnt
pacman -Syu
Если нужно выполнить команду без входа в chroot:
pacman -r /mnt --config /mnt/etc/pacman.conf -Syu
Флаг -r задаёт корень, --config указывает файл конфигурации. Так можно ставить и обновлять пакеты в сломанной системе прямо с live-USB. Это стандартный приём при восстановлении после поломки.
Перед работой в chroot убедись, что смонтированы /proc, /sys, /dev и /run, иначе pacman может не найти нужные файлы. arch-chroot делает это автоматически, а при ручном chroot придётся монтировать вручную.
Такой способ пригодится и при переносе системы на другой диск: смонтируй новый корень, установи туда пакеты через pacman -r и скопируй конфиги.
Повреждена база пакетов или скачанный пакет. Сначала попробуй sudo pacman -Syyu, чтобы перекачать базы. Если не помогло, удали повреждённые файлы из /var/cache/pacman/pkg и повтори. Ошибка invalid or corrupted package обычно лечится именно так.
Ошибка exists in filesystem значит, что файл уже занят другим пакетом или остался от удалённого. Не удаляй файл вслепую, сначала проверь, какому пакету он принадлежит, через pacman -Qo. Разбор ситуации в статье «exists on filesystem: конфликт».
Ошибка unknown public key лечится инициализацией ключей:
sudo pacman-key --init
sudo pacman-key --populate archlinux
После этого повтори установку. Если ключи не помогли, проверь дату и время системы, подписи зависят от точного времени.
Раз в несколько дней достаточно. Главное правило: обновляйся целиком через -Syu, а не частично. Перед обновлением полезно прочитать новости на archlinux.org, там предупреждают о ручных действиях. Если система работает и тебя всё устраивает, можно обновляться реже, но не откладывай надолго: чем больше разрыв, тем выше шанс проблем.
Прямого отката в pacman нет. Старые версии пакетов лежат в кэше, если ты его не чистил. Можно переустановить старую версию через pacman -U /var/cache/pacman/pkg/имя-версия.pkg.tar.zst, но зависимости могут не совпасть. Проще восстановить систему из снапшота, если используешь btrfs.
Десять команд покрывают всю повседневную работу с pacman: -Syu для обновления, -S для установки, -Rns для удаления, -Ss и -Qs для поиска, -Qtdq | pacman -Rns - для чистки сирот. Главное правило одно: никогда не запускай -Sy отдельно, только полное -Syu. Остальное pacman сделает сам. Если команда не сработала, читай вывод pacman: он почти всегда подсказывает, что именно пошло не так.
Задай вопрос в чате — отвечаем быстро, по делу и без воды.
Комментарии