Все об Arch Linux

Arch Linux будет тем, что вы из него сделаете!

pacman от А до Я: все команды, которые нужны

Сразу к делу: pacman это менеджер пакетов Arch Linux, и для повседневной работы хватает десятка команд. Обновление системы делает pacman -Syu, установка пакета pacman -S имя, удаление вместе с конфигами и зависимостями pacman -Rns имя, поиск pacman -Ss запрос. Ниже разобраны все команды, которые реально нужны, с примерами и подводными камнями. Статья построена как шпаргалка: читай по разделам или ищи нужную операцию по заголовку.

Как обновить систему через pacman -Syu?

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

sudo pacman -Syu

Флаг -S означает синхронизацию с репозиториями, -y обновление баз пакетов, -u обновление установленных пакетов. Вместе они дают полное обновление системы. Эту команду стоит запускать регулярно, раз в несколько дней.

Почему нельзя запускать pacman -Sy отдельно?

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.

Как удалить пакет?

Удаление бывает четырёх уровней, от мягкого до жёсткого.

pacman -R: просто удалить

sudo pacman -R vlc

Удаляет сам пакет. Конфигурационные файлы и зависимости остаются на месте.

pacman -Rs: удалить с зависимостями

sudo pacman -Rs vlc

Флаг -s убирает ещё и зависимости, которые не нужны другим пакетам. Это стандартный способ удаления.

pacman -Rns: удалить с конфигами

sudo pacman -Rns vlc

Флаг -n дополнительно удаляет конфигурационные файлы пакета. Используй, когда пакет больше не понадобится совсем. Комбинация -Rns самая частая в повседневной работе.

Удалять можно сразу несколько пакетов одной командой:

sudo pacman -Rns vlc firefox

pacman спросит подтверждение и покажет, какие зависимости будут удалены вместе с пакетами.

pacman -Rdd: опасный вариант

sudo pacman -Rdd имя

Флаг -dd пропускает проверку зависимостей. pacman удалит пакет, даже если от него зависят другие. Применяй только когда точно понимаешь, что делаешь, иначе сломаешь систему.

Как удалить все осиротевшие пакеты?

Пакеты, которые стали не нужны после удаления зависимостей, называются сиротами. Найти и удалить их одной командой:

sudo pacman -Qtdq | sudo pacman -Rns -

-Qtdq выводит список пакетов, не нужных никому как зависимость, а -Rns - удаляет их из списка. Тире в конце означает «читать список из stdin». Запускай эту команду время от времени, кэш сирот разрастается незаметно.

Перед удалением просмотри список, который выводит -Qtdq. Иногда там оказываются пакеты, которые нужны, но помечены как зависимости по ошибке. В таком случае пометь их явно через pacman -D --asexplicit, и они выпадут из списка сирот.

Как искать пакеты?

У pacman два режима поиска: по репозиториям и по установленным пакетам. Первый нужен, чтобы найти и поставить новый пакет, второй чтобы разобраться в том, что уже стоит. Команды отличаются одной буквой: -Ss ищет в репозиториях, -Qs среди установленных.

Поиск в репозиториях: pacman -Ss

pacman -Ss firefox

Ищет по имени и описанию во всех подключённых репозиториях. Вывод показывает имя пакета, версию и короткое описание.

Поиск среди установленных: pacman -Qs

pacman -Qs firefox

Ищет только среди установленных пакетов. Удобно, когда нужно вспомнить, стоит ли пакет и какая у него версия.

Группы пакетов: pacman -Sg

pacman -Sg gnome

Показывает состав группы. Установить группу целиком:

sudo pacman -S gnome

Группы вроде base-devel и gnome объединяют связанные пакеты. При установке pacman спросит, какие пакеты группы нужны.

Информация о пакете: pacman -Si и pacman -Qi

pacman -Si firefox    # информация из репозитория
pacman -Qi firefox    # информация об установленном пакете

Показывают зависимости, размер, описание, лицензию. -Qi дополнительно показывает, установлен ли пакет явно или как зависимость.

Какому пакету принадлежит файл: pacman -Qo

pacman -Qo /usr/bin/firefox

Показывает, какой установленный пакет владеет файлом. Полезно, когда не знаешь, откуда взялся файл.

Какие файлы в пакете: pacman -Fl и pacman -Ql

pacman -Fl firefox    # файлы пакета в репозитории
pacman -Ql firefox    # файлы установленного пакета

-Fl работает по базе файлов репозитория, -Ql по установленному пакету.

Явно установленные и из AUR: pacman -Qe и pacman -Qm

pacman -Qe    # пакеты, установленные явно, а не как зависимости
pacman -Qm    # пакеты из AUR и локальные

-Qm показывает пакеты, которых нет в официальных репозиториях. Их обновляет не pacman, а AUR-хелпер вроде yay.

Как найти пакет по файлу: pacman -F

Сначала загрузи базу файлов:

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».

Как настроить pacman?

Файл /etc/pacman.conf

Основные настройки в /etc/pacman.conf:

  • IgnorePkg: список пакетов, которые pacman не будет обновлять. Например, IgnorePkg = linux linux-headers.
  • HoldPkg: пакеты, которые нельзя удалить без явного подтверждения. По умолчанию там pacman glibc.
  • Color: цветной вывод.
  • ParallelDownloads: параллельная загрузка пакетов.

Зеркала: /etc/pacman.d/mirrorlist

Список зеркал в /etc/pacman.d/mirrorlist. Чем выше зеркало в списке, тем быстрее pacman его использует. Настройка зеркал разобрана в статье «Настройка mirrorlist».

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

Подключение дополнительных репозиториев

В /etc/pacman.conf репозитории подключаются блоками. Например, тестовый репозиторий:

[testing]
Include = /etc/pacman.d/mirrorlist

После добавления репозитория обнови базы: sudo pacman -Syy. Пакеты из testing ставятся обычным pacman -S, но будь осторожен: они могут быть нестабильными. Точно так же подключаются сторонние репозитории вроде chaotic-aur.

Журнал pacman

Все операции записываются в /var/log/pacman.log. Если нужно узнать, когда и какой пакет был установлен или удалён:

grep 'firefox' /var/log/pacman.log

Как использовать pacman при восстановлении системы?

При загрузке с 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 и скопируй конфиги.

Частые вопросы

Что делать, если pacman пишет «failed to commit transaction»?

Повреждена база пакетов или скачанный пакет. Сначала попробуй sudo pacman -Syyu, чтобы перекачать базы. Если не помогло, удали повреждённые файлы из /var/cache/pacman/pkg и повтори. Ошибка invalid or corrupted package обычно лечится именно так.

Что делать, если pacman ругается на конфликт файлов?

Ошибка exists in filesystem значит, что файл уже занят другим пакетом или остался от удалённого. Не удаляй файл вслепую, сначала проверь, какому пакету он принадлежит, через pacman -Qo. Разбор ситуации в статье «exists on filesystem: конфликт».

Что делать, если pacman не может проверить подпись пакета?

Ошибка unknown public key лечится инициализацией ключей:

sudo pacman-key --init
sudo pacman-key --populate archlinux

После этого повтори установку. Если ключи не помогли, проверь дату и время системы, подписи зависят от точного времени.

Как часто нужно обновлять Arch Linux?

Раз в несколько дней достаточно. Главное правило: обновляйся целиком через -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: он почти всегда подсказывает, что именно пошло не так.



Не получилось? Поможем настроить

Задай вопрос в чате — отвечаем быстро, по делу и без воды.

Читайте также

Комментарии

Загрузка…

Откроется GitHub: создайте новый issue с вашим комментарием (кнопка «Submit new issue»). После отправки обновите эту страницу — комментарий появится ниже.

Telegram Max