# update system
# sudo pacman -Syu
-S - Synchronize: Install or update packages
-y - Refresh package database (download the latest package lists)
-u - Upgrade all installed packages to the latest version
# Refresh package list (not upgrade):
sudo pacman -Sy
# Remove
sudo pacman -Rns budgie-desktop gnome xfce4 xfce4-goodies
-R - remove a packager
-n - remove configuration files and mark dependencies as unused
-s - remove unused dependencies that were installed with the package
sudo pacman -Rdd linux-firmware
-R - удалить пакет
-d - игнорировать зависимости (один -d)
-dd - игнорировать зависимости дважды (то есть вообще никакие зависимости):
- не проверят, что от пакета кто-то зависит (обратные зависимости);
- не проверять, что сам пакет зависит от чего-то.
# Найти пакет в репозитории:
pacman -Ss strawberry
# Вывести подробную информацию об этом пакете:
pacman -Si strawberry
# Найти пакет среди установленных в системе:
pacman -Q sway
# Найти пакет среди установленных в системе:
pacman -Qs sway
# Вывести подробную информацию о нём:
pacman -Qi sway
# Найти в репозитории пакеты, принадлежащие группе plasma:
pacman -Sg plasma
# Найти среди установленных пакетов пакеты из группы plasma:
pacman -Qg plasma
# Список всех пакетов в репозитории multilib:
pacman -Sl multilib
# Список всех пакетов во всех доступных репозиториях:
pacman -Sl
# Обновляем список зеркал:
sudo pacman -S reflector
# reflector – программа для работы с зеркалами
# Затем:
sudo reflector --country Estonia,Germany,Finland --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
Логи пишутся в /var/log/pacman.log. Если во время установки пакета произошла какая-то ошибка и мы хотим посмотреть подробности, просто смотрим в этот лог и ищем "ERROR":
tail -n 50 /var/log/pacman.log
# Очистить кэш pacman:
sudo pacman -Sc
# Удаляет старые версии пакетов из /var/cache/pacman/pkg/
# но оставляет последнюю скачанную версию каждого пакета
# (чтобы можно было переустановить без интернета).
# Также удаляет неиспользуемые репозитории из /var/lib/pacman/sync/
# То есть если я удалю из /etc/pacman.conf:
# [multilib]
# Include = /etc/pacman.d/mirrorlist
# а потом запущу команду "sudo pacman -Sc" -
# тогда pacman удалит копию репозитория /var/lib/pacman/sync/multilib.db
sudo pacman -Scc
# удаляет вообще всё из /var/cache/pacman/pkg/ (и старые, и последние версии).
# pacman даже предупреждает:
# "Удаление всех пакетов может привести к невозможности переустановки без скачивания заново".
# Чистит только /var/cache/pacman/pkg/ и /var/lib/pacman/
#
# Папку ~/.cache/ не очищает
# ~/.cache/yay/ - кэш yay
# yay -Sc - делает не только очистку своего кэша, но ещё и проксирует вызов в pacman -Sc.
yay -Sc # очистка обоих кэшей - и yay, и pacman
yay -Sc --yay # почистить только кэш yay, без затрагивания pacman
yay -Sc --pacman # почистить pacman, не затрагивая yay
yay -Scc # очистка обоих кэшей - и yay, и pacman
yay -Scc --yay # почистить только кэш yay, без pacman
yay -Scc --pacman # почистить только кэш pacman, без yay
# ~/.cache/paru/ - кэш paru
paru -Sc # очитска обоих кэшей - и paru, и pacman
paru -Sc --paru # очистить только кэш paru
paru -Sc --pacman # очистить только кэш pacman
paru -Scc # очистить оба кэша - и paru, и pacman
paru -Scc --paru # очистть только кэш paru
paru -Scc --pacman # очистить только кэш pacman
# Скачать пакет в домашнюю папку:
sudo pacman -Sw vim --cachedir="/home/mark"
# А так пакет скачается в /var/cache/pacman/pkg/
sudo pacman -Sw vim
# Скачаются два файла:
# filename.pkg.tar.zst,
# filename.pkg.tar.zst.sig
# Устанавливаем пакет из текущей директории:
sudo pacman -U paru-2.1.0-1-x86_64.pkg.tar.zst
# Если я ранее скачал пакет в /var/cache/pacman/pkg, то ...
# при последующей установке можно не писать путь к нему целиком.
sudo pacman -U filename.pkg.tar.zst
# и pacman найдёт его в /var/cache/pacman/pkg и установит
# (если в текущей папке нет пакета с таким же названием).
pacman -Qo /usr/bin/package-name
# Узнать, какому пакету принадлежит v4l2-ctl:
pacman -Qo v4l2-ctl
# /usr/bin/v4l2-ctl принадлежит v4l-utils 1.32.0-1
# Узнать, какому пакету принадлежит gio:
pacman -Qo gio
# /usr/bin/gio принадлежит glib2 2.86.1-1
Или, если попытаться перефразировать, я, например, хочу знать, какие файлы и куда раскидывает их по системе пакет, который я ставлю.
# На примере archlinux-keyring:
pacman -Ql archlinux-keyring
# Например, я хочу установить утилиту netstat.
# Но я не знаю, какой ставить пакет, чтобы я смог ей воспользоваться.
pacman -F netstat
# Теперь я знаю, что утилита netstat ...
# находится в пакете net-tools и просто ставлю этот пакет:
sudo pacman -S net-tools
# Чтобы осуществлять поиск (pacman -F), нужно предварительно ...
# скачать базу данных файлов себе в локальное хранилище (/var/lib/pacman/sync):
sudo pacman -Fy
Базы данных core.db, extra.db, multilib.db содержат список пакетов, их версии, зависимости и описания. Но они не содержат полный список файлов внутри пакетов. Поэтому есть дополнительные базы: core.files, extra.files, multilib.files. Все эти базы данных находятся в /var/lib/pacman/sync/.
Ключи хранятся в папке /etc/pacman.d/gnupg.
# Обновить пакет archlinux-keyring
# Это самое важное — без этого новые ключи не появятся:
sudo pacman -Sy archlinux-keyring
# Если ключи сломались сильно — ставят принудительно:
sudo pacman -S --needed archlinux-keyring
# Обновить сам keyring в pacman-key:
sudo pacman-key --refresh-keys
# Это перезапросит ключи с ключевых серверов.
# Если --refresh-keys выдаёт ошибки из-за сервера, можно попробовать:
sudo pacman-key --refresh-keys --keyserver hkps://keyserver.ubuntu.com
# Полная перезагрузка ключей (если всё сломано)
sudo pacman-key --init
sudo pacman-key --populate archlinux
# только если pacman больше не принимает подписи.
Внутри пакета archlinux-keyring содержатся публичные ключи всех официальных мейнтейнеров Arch, сертификаты доверия, информация о том, какие ключи отозваны или устарели. То есть это просто набор файлов с ключами.
что делает pacman-key --init:
Т.е., грубо говоря — готовит пустую базу для ключей.
А что делает pacman-key --populate archlinux:
# Посмотреть зависимости sway
pactree sway
# т.е. мы увидим, что нужно sway, чтобы работать
# Посмотреть обратные зависимости:
pactree -r sway
# т.е. програмы, которые зависят от sway
Всю инструкцию по подключению можно найти на официальной страничке.
sudo pacman-key --recv-key 3056513887B78AEB --keyserver keyserver.ubuntu.com
sudo pacman-key --lsign-key 3056513887B78AEB
sudo pacman -U https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst
sudo pacman -U https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst
На этом этапе публичный ключ загружен. Но ему ещё не доверяют. Это выглядит так: «Я знаю этот паспорт, но не уверен, что он настоящий». Поэтому далее надо выполнить локальное подписание ключа.
Тут я подписываю ключ своим ключом pacman. Это не отправляется в интернет – только у меня. То есть я как бы говорю: «Я лично доверяю этому ключу на этом компьютере». Без этого шага pacman откажется устанавливать пакеты.
Добавляем в /etc/pacman.conf в самый низ:
[chaotic-aur]
Include = /etc/pacman.d/chaotic-mirrorlist
Обновляем базы:
sudo pacman -Sy
sudo pacman -Syu
sudo pacman --sync --refresh --sysupgrade
sudo pacman -Rns
sudo pacman --remove --nosave --recursive
sudo pacman -Sw vim --cachedir="/home/mark"
sudo pacman --sync --downloadonly vim --cachedir="/home/mark"
sudo pacman -U package.pkg.tar.zst
sudo pacman --upgrade package.pkg.tar.zst
sudo pacman -Fy
sudo pacman --files --refresh
pacman -Qo v4l2-ctl
pacman --query --owns v4l2-ctl
pacman -Sl multilib
pacman --sync --list multilib
pacman -Scc
pacman --sync --clean --clean
pacman -Dk
pacman --database --check
pacman -Dkk
pacman --database --check --check