Вернуться назад

Pacman


# 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/ не очищает
	

То есть:

Для AUR ситуация схожа:


   # ~/.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
	

Установить собранный ранее пакет (.pkg.tar.zst):


# Устанавливаем пакет из текущей директории:
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:

pactree

# Посмотреть зависимости sway
pactree sway
   # т.е. мы увидим, что нужно sway, чтобы работать

# Посмотреть обратные зависимости:
pactree -r sway
   # т.е. програмы, которые зависят от sway
  

Подключаем Chaotic AUR

Всю инструкцию по подключению можно найти на официальной страничке.

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