Pacman

Материал из Wiki SteamOS
Версия от 10:44, 19 марта 2026; NOOK (обсуждение | вклад) (Новая страница: «'''Pacman''' (от ''package manager'') — официальный менеджер пакетов в операционной системе Arch Linux и её производных (Manjaro, EndeavourOS, Parabola и других). Разработан основателем Arch Linux Джаддом Винетом на языке программирования Си (язык программирования...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Pacman (от package manager) — официальный менеджер пакетов в операционной системе Arch Linux и её производных (Manjaro, EndeavourOS, Parabola и других). Разработан основателем Arch Linux Джаддом Винетом на языке программирования C и распространяется на условиях лицензии GPL [citation:6].

Pacman сочетает в себе простой бинарный формат пакетов с удобной системой сборки из исходных кодов (Arch Build System). Главная цель Pacman — максимально упростить управление программным обеспечением: от установки и обновления до удаления пакетов [citation:3][citation:6].

История

Pacman был создан канадским программистом Джаддом Винетом одновременно с началом разработки Arch Linux в 2001 году. Первый релиз состоялся в феврале 2002 года. Винет разработал Pacman под влиянием других менеджеров пакетов, но стремясь к большей простоте и минимализму [citation:6].

В 2007 году, когда Винет отошёл от активной разработки Arch Linux, проект Pacman перешёл к команде разработчиков (Pacman Development Team). С тех пор менеджер пакетов продолжает развиваться, сохраняя базовые принципы, но обрастая новыми возможностями и улучшениями [citation:6].

Технические особенности

Архитектура

Pacman написан на языке C и использует формат архивов `tar` для упаковки файлов (сжатие осуществляется с помощью gzip, bzip2, xz или zstd). Пакеты представляют собой архивы с расширением `.pkg.tar.zst` (по умолчанию с 2021 года) и содержат скомпилированные файлы приложения, метаданные (название, версию, зависимости) и сценарии установки [citation:3][citation:6].

Модель работы

Pacman работает по клиент-серверной модели: клиент (Pacman на машине пользователя) синхронизируется с удалёнными репозиториями, загружает актуальные списки пакетов и сами пакеты. При установке Pacman автоматически разрешает и устанавливает все необходимые зависимости [citation:6][citation:10].

Основные репозитории

Конфигурация репозиториев задаётся в файле `/etc/pacman.conf`, а список зеркал — в `/etc/pacman.d/mirrorlist` [citation:8][citation:9]. Основные официальные репозитории Arch Linux:

  • core — базовые пакеты, необходимые для функционирования системы
  • extra — дополнительные пакеты, включая графические окружения и приложения
  • multilib — 32-битные библиотеки и программы для 64-битных систем

Использование

Pacman управляется через командную строку. Ниже приведены основные операции [citation:1][citation:3][citation:4].

Основные команды Pacman
Операция Команда Описание
Синхронизация и обновление `sudo pacman -Syu` Синхронизирует базы данных репозиториев и обновляет все пакеты системы [citation:1][citation:2][citation:3]
Установка пакета `sudo pacman -S имя_пакета` Устанавливает один или несколько пакетов вместе с зависимостями [citation:1][citation:2][citation:3]
Установка из конкретного репозитория `sudo pacman -S репозиторий/имя_пакета` Устанавливает пакет из указанного репозитория (например, `extra/имя_пакета`) [citation:3][citation:5]
Поиск пакетов `pacman -Ss ключевое_слово` Ищет пакеты в удалённых репозиториях по имени или описанию [citation:1][citation:2][citation:3]
Поиск среди установленных пакетов `pacman -Qs ключевое_слово` Ищет только среди уже установленных пакетов [citation:5][citation:7]
Информация о пакете `pacman -Si имя_пакета` Показывает подробную информацию о пакете из репозитория [citation:1][citation:7]
Информация об установленном пакете `pacman -Qi имя_пакета` Показывает информацию об уже установленном пакете [citation:5][citation:9]
Список файлов пакета `pacman -Ql имя_пакета` Отображает все файлы, установленные данным пакетом [citation:1][citation:5]
Какому пакету принадлежит файл `pacman -Qo /путь/к/файлу` Определяет, какой установленный пакет владеет указанным файлом [citation:5][citation:7]
Удаление пакета `sudo pacman -R имя_пакета` Удаляет пакет, оставляя его зависимости [citation:1][citation:2][citation:3]
Удаление с зависимостями `sudo pacman -Rs имя_пакета` Удаляет пакет и те его зависимости, которые не нужны другим пакетам [citation:3][citation:4][citation:7]
Поиск сирот (ненужных зависимостей) `pacman -Qdt` Показывает пакеты, которые были установлены как зависимости, но больше не требуются [citation:6][citation:7][citation:9]
Очистка кэша `sudo pacman -Sc` Удаляет из кэша (`/var/cache/pacman/pkg/`) старые версии пакетов, оставляя только текущие [citation:1][citation:7][citation:9]
Полная очистка кэша `sudo pacman -Scc` Удаляет все пакеты из кэша (требуется осторожность) [citation:6][citation:7][citation:8]

Важные предупреждения

Разработчики Arch Linux настоятельно рекомендуют избегать частичных обновлений. Не следует выполнять команду `pacman -Sy имя_пакета` (синхронизация баз и установка без полного обновления), так как это может привести к конфликтам версий и нарушению зависимостей [citation:3][citation:4][citation:5]. Правильный подход: всегда выполнять `pacman -Syu` перед установкой новых пакетов или для полноценного обновления системы.

Пакеты и система сборки

Формат PKGBUILD

Пакеты для Pacman собираются с помощью скриптов PKGBUILD — сценариев на языке Bash, описывающих, как скачать исходный код, скомпилировать программу и упаковать её в формат, понятный Pacman. Утилита makepkg (входящая в пакет pacman) автоматизирует этот процесс [citation:6].

Пример простого PKGBUILD [citation:6]:

pkgname=patch
pkgver=2.5.4
pkgrel=3
pkgdesc="Утилита для применения файлов исправлений (patches) к исходным кодам"
arch=('i686' 'x86_64')
url="http://www.gnu.org/software/patch/patch.html"
license=('GPL')
depends=('glibc' 'ed')
source=(ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz)
md5sums=('ee5ae84d115f051d87fcaaef3b4ae782')

build() {
cd "$srcdir/$pkgname-$pkgver"
./configure --prefix=/usr
make
}

package() {
cd "$srcdir/$pkgname-$pkgver"
make prefix="$pkgdir/usr" install
}

AUR (Arch User Repository)

Пользовательский репозиторий Arch (AUR) содержит тысячи PKGBUILD-скриптов, написанных сообществом. Они позволяют устанавливать программы, отсутствующие в официальных репозиториях, автоматизируя сборку из исходников или загрузку готовых бинарных пакетов [citation:7][citation:8].

Конфигурация

Основной файл конфигурации — `/etc/pacman.conf`. В нём задаются [citation:7][citation:8]:

  • Общие опции (например, `Color` для цветного вывода, `ILoveCandy` для забавной анимации прогресса)
  • Репозитории (их порядок определяет приоритет при поиске пакетов)
  • Дополнительные параметры (например, пропуск обновления определённых пакетов)

Файл `/etc/pacman.d/mirrorlist` содержит список зеркал (mirrors), с которых Pacman загружает пакеты. Порядок записей влияет на скорость загрузки; рекомендуется размещать наиболее быстрые и актуальные зеркала в начале [citation:8][citation:9].

Производные и графические интерфейсы

Использование в других дистрибутивах

Pacman является основным менеджером пакетов для всех производных Arch Linux:

Графические фронтенды

Хотя официальный Pacman работает только из командной строки, сообществом созданы графические интерфейсы [citation:8][citation:10]:

  • Pamac — фронтенд для Manjaro (поддерживает AUR и Flatpak)
  • Octopi — графическая обёртка на Qt
  • PacmanXG4 — простой GUI, работающий напрямую с X11
  • PkgBrowser — утилита для просмотра информации о пакетах

Дополнительные утилиты

В пакет pacman-contrib (ранее входивший в основной пакет) включены полезные инструменты [citation:3][citation:4][citation:10]:

  • pactree — отображает дерево зависимостей пакета
  • checkupdates — проверяет доступные обновления без изменения системы
  • paccache — гибко управляет кэшем пакетов (удаляет старые версии, сохраняя последние N)
  • vercmp — сравнивает версии пакетов

Ссылки