Менеджер пакетов Arch Linux Pacman

Опубликовано admin - вт, 08/02/2022 - 10:29

Менеджер пакетов Pacman сочетает в себе простой формат бинарного пакета с простой в использовании системой сборки для легкого управления пакетами.

Команды менеджера пакетов Arch Linux pacman

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

Как и другие менеджеры пакетов, Pacman может синхронизировать списки пакетов с репозиториями программного обеспечения, чтобы пользователь мог загружать и устанавливать пакеты с помощью простой команды, разрешая все необходимые зависимости.

Содержание

Синтаксис

pacman <действие> [...]

Опции

pacman {-D --database}
<параметры> <пакет(ы)>
pacman {-F --files}
[параметры] [файл(ы)]
pacman {-Q --query}
[параметры] [пакет(ы)]
pacman {-R --remove}
параметры] <пакет(ы)>
pacman {-S --sync}
[параметры] [пакет(ы)]
pacman {-T --deptest}
[параметры] [пакет(ы)]
pacman {-U --upgrade}
[параметры] <файл(ы)>

Использование Arch Linux Pacman с примерами

Обновление пакетов

Pacman предоставляет простой способ обновления дистрибутива Arch Linux. Все установленные пакеты можно обновить всего одной командой. Это может занять некоторое время в зависимости от того, насколько актуальна система.

Следующая команда синхронизирует базы данных репозитория и обновляет системные пакеты, исключая локальные пакеты, которых нет в настроенных репозиториях:

oleg@mobile:~:$ sudo pacman -Syu
:: Обновление баз данных пакетов...
 core is up to date
 extra                                               1711,9 KiB   583 KiB/s 00:03 [###############################################] 100%
 community                                              6,7 MiB  1696 KiB/s 00:04 [###############################################] 100%
 multilib is up to date
:: Запускается полное обновление системы...
разрешение зависимостей...
проверка конфликтов...

Пакеты (14) cryptsetup-2.5.0-1  firefox-103.0.1-1  firefox-i18n-ru-103.0.1-1  harfbuzz-5.1.0-1  harfbuzz-icu-5.1.0-1
            imagemagick-7.1.0.45-1  iptables-1:1.8.8-2  lib32-harfbuzz-5.1.0-1  lib32-libtiff-4.4.0-3  libtiff-4.4.0-3
            linux-5.18.15.arch1-1  perl-libwww-6.67-1  wavpack-5.5.0-1  wine-staging-7.14-1

Будет загружено:    315,30 MiB
Будет установлено:  958,47 MiB
Изменение размера:    1,05 MiB

:: Приступить к установке? [Y/n] 


 По сути, речь идет о синхронизации с центральным репозиторием (база данных основных пакетов), обновлении локальной копии базы данных основных пакетов, а затем выполнении обновления системы (путем обновления всех пакетов, для которых доступна более новая версия).

Эта команда обязательно должна предварять команду, устанавливающую какой-либо программный пакет. Это крайне необходимо для сохранения устойчивости системы.

Установка пакетов

Вы можете с легкостью установить один или несколько пакетов с помощью команды pacman следующим образом:

oleg@mobile:~:$ sudo pacman -S inkscape
разрешение зависимостей...
проверка конфликтов...

Пакеты (10) cblas-3.10.1-1  graphicsmagick-1.3.38-3  gsl-2.7.1-1  gspell-1.10.0-2  gtest-1.12.1-1  lib2geom-1.2-1  python-lxml-4.9.1-1
            python-numpy-1.23.1-1  ragel-6.10-3  inkscape-1.2.1-1

Будет загружено:     34,60 MiB
Будет установлено:  228,47 MiB

:: Приступить к установке? [Y/n] 

Вам остаётся лишь решить: y или n.

-S означает синхронизацию, то есть менеджер сначала синхронизируется.

База данных менеджера разделяет установленные пакеты на две группы в зависимости от причины их установки:

Явно-установленные
Пакеты, которые были установлены общей командой pacman -S
-U зависимости
Пакеты, которые были установлены неявно, потому что требуются другим пакетом, который был установлен явно

Не устанавливайте программные пакеты без предварительного обновления системы, так как это может привести к нарушению её устойчивости.

Удаление установленного пакета

oleg@mobile:~:$ sudo pacman -R smplayer
проверка зависимостей...

Пакеты (1) smplayer-22.7.0-1

Будет освобождено:  15,25 MiB

:: Удалить эти пакеты? [Y/n]

Все зависимости остаются не удалёнными.

Для удаления пакета со всеми зависимостями команда выглядит так:

oleg@mobile:~:$ sudo pacman -Rs smplayer
проверка зависимостей...

Пакеты (5) mpv-1:0.34.1-5  mujs-1.2.0-2  rubberband-3.0.0-2  uchardet-0.0.7-1  smplayer-22.7.0-1

Будет освобождено:  26,79 MiB

:: Удалить эти пакеты? [Y/n] 

Поиск пакетов

Pacman запрашивает локальную базу данных пакетов с флагом -Q, базу данных синхронизации с флагом -S и базу данных файлов с флагом -F.

Менеджер может искать пакеты в базе данных, как по именам пакетов, так и по описаниям:

oleg@mobile:~:$ sudo pacman -Ss inkscape
extra/inkscape 1.2.1-1
    Professional vector graphics editor
oleg@mobile:~:$ 

Поиск уже установленных пакетов:

oleg@mobile:~:$ sudo pacman -Qs smplayer
local/smplayer 22.7.0-1
    Media player with built-in codecs that can play virtually all video and audio formats
oleg@mobile:~:$ 

Поиск имён файлов пакетов в удалённых пакетах:

$ sudo pacman -F name

Просмотр дерева зависимостей пакета:

oleg@mobile:~:$ pactree smplayer
smplayer
├─glibc
│ ├─linux-api-headers>=4.10
│ ├─tzdata
│ └─filesystem
│   └─iana-etc
├─qt5-base
│ ├─libjpeg-turbo
│ │ └─glibc
│ ├─xcb-util-keysyms
│ │ └─libxcb>=1.7
│ │   ├─xcb-proto
│ │   ├─libxdmcp
│ │   │ └─glibc
│ │   └─libxau
│ │     └─glibc
│ ├─xcb-util-renderutil
│ │ └─libxcb>=1.7
│ ├─libglvnd provides libgl
│ │ ├─libxext
│ │ │ └─libx11
│ │ │   ├─libxcb
│ │ │   └─xorgproto
│ │ ├─mesa
...
│ │ ├─libsamplerate provides libsamplerate.so=0-64
│ │ └─libsndfile provides libsndfile.so=1-64
│ ├─rubberband provides librubberband.so=2-64
│ ├─shaderc
│ ├─shaderc provides libshaderc_shared.so=1-64
│ ├─uchardet
│ │ └─gcc-libs
│ ├─vulkan-icd-loader
│ ├─wayland
│ ├─xdg-utils
│ └─zlib
├─libx11
├─zlib
├─gcc-libs
└─hicolor-icon-theme
oleg@mobile:~:$ 

Очистка кеша пакетов

Pacman хранит загруженные пакеты в /var/cache/pacman/pkg/ и не удаляет старые или неустановленные версии автоматически.

Это имеет некоторые преимущества:

  • позволяет понизить версию пакета без необходимости получать предыдущую версию из других источников.
  • пакет, который был удален, можно легко переустановить прямо из папки кеша.

Периодически очищайте кеш, чтобы папка не увеличивалась в размере.

Для удаления всех кешированных пакетов, которые в данный момент не установлены, и неиспользуемую базу данных синхронизации, выполните:

oleg@mobile:~:$ sudo pacman -Sc
Оставить пакеты:
  Все локально установленные пакеты

Каталог для кэша: /var/cache/pacman/pkg/
:: Удалить все остальные пакеты из кэша? [Y/n] y
удаление старых пакетов из кэша...

Каталог базы данных: /var/lib/pacman/
:: Удалить неиспользуемые репозитории? [Y/n] y
удаление неиспользуемых репозиториев...
oleg@mobile:~:$ 

Для удаления всех файлов из кеша, дважды используйте переключатель очистки, это самый агрессивный подход, который ничего не оставит в папке кеша:

$ sudo pacman -Scc

Хорошо подумайте перед тем, как выполнять эту команду. Выполнить откат вы вероятнее всего не сможете и в случае ошибки работа системы будет нарушена.

Установка локальных и сторонних пакетов

Установка пакета, которого нет в официальном репозитории:

$ sudo pacman -U http://www.example.com/repo/example.pkg.tar.xz

Итоги

Пакетный менеджер Pacman позволяет с легкостью работать с самым современным дистрибутивом Arch Linux. При разумном подходе он не менее устойчив остальных дистрибутивов Linux.

Поделиться с друзьями