Пакетный менеджер

Мы познакомились со встроенными командами Bash и со стандартным набором GNU-утилит. Эти утилиты устанавливаются в Unix-окружение по умолчанию. Их возможностей может оказаться недостаточно для решения вашей задачи. Эта проблема решается установкой дополнительных программ и утилит.

Подходы к установке программ в Windows и Unix-окружение отличаются. Рассмотрим, как правильно устанавливать и обновлять ПО в любом Unix-окружении или Linux дистрибутиве.

Репозиторий

ПО устанавливается в Unix-окружение из репозитория (software repository). Репозиторием называется сервер-хранилище всех доступных приложений. Эти приложения собираются мейнтейнерами из исходного кода открытого ПО. Большинство мейнтейнеров — это добровольцы и энтузиасты свободного ПО.

Каждое приложение в репозитории хранится в виде файла. Эти файлы имеют специальный формат. Например, deb, RPM, zst и т.д. Разные Linux-дистрибутивы используют разные форматы. Файл с приложением называется пакетом (package). Пакет — это модуль для установки ПО в систему.

Репозиторий хранит пакеты с приложениями и библиотеками. Кроме этого в репозитории есть метаинформация обо всех пакетах. Она хранится в одном или нескольких файлах. Эта метаинформация называется индексом пакетов.

Устанавливать пакеты в Unix-окружение можно сразу из нескольких репозиториев. Например, один репозиторий предлагает новые версии пакетов, а другой их специальные сборки. В зависимости от требований можно выбрать из какого репозитория устанавливать пакет.

Работа с пакетами

Для работы с репозиторием Unix-окружение предлагает специальную программу. Она называется пакетным менеджером (package manager).

Зачем нужен пакетный менеджер? Для примера в Windows его нет. Пользователи этой ОС вручную загружают программы из интернета и устанавливают их.

Пакетный менеджер устанавливает и удаляет пакеты в Unix-окружении. При этом его главная задача — отслеживать зависимости пакетов. Предположим, что программа из одного пакета использует возможности программы или библиотеки из другого. Тогда говорят, что первый пакет зависит от второго.

Зависимость пакетов предотвращает многократную установку одного и того же приложения или библиотеки в систему. Вместо этого нужные пакеты устанавливаются однократно. Все зависящие от них программы знают место их установки на диске и используют их совместно.

Устанавливайте приложения в Unix-окружение или ОС Linux только через пакетный менеджер. Единственное исключение из этого правила — проприетарные программы. Их приходится устанавливать вручную. Обычно такие программы распространяются в одном пакете. Он включает все необходимые зависимости (библиотеки и приложения). В таких случаях отслеживать зависимости не нужно и без пакетного менеджера можно обойтись.

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

  1. Загрузить из репозитория индекс пакетов.
  2. Найти нужное приложение или библиотеку в индексе пакетов.
  3. Загрузить на локальный компьютер пакет с приложением или библиотекой из репозитория.
  4. Установить загруженный пакет.

Пакетный менеджер выполняет все эти шаги. Вам нужно только знать его интерфейс и вызывать с правильными параметрами.

Окружение MSYS2 использует пакетный менеджер pacman. Он создавался для дистрибутива Arch Linux. Менеджер pacman работает с пакетами простого формата. Чтобы собирать приложения и библиотеки в такие пакеты, специальные навыки и опыт не нужны.

Рассмотрим команды для работы с репозиторием на примере менеджера pacman.

Чтобы загрузить из репозитория индекс пакетов, выполните команду:

pacman -Syy

Следующая команда найдёт пакет в загруженном индексе по ключевому слову:

pacman -Ss КЛЮЧЕВОЕ_СЛОВО

Предположим, вы ищете утилиту для работы с документами MS Word. Тогда следующая команда найдёт подходящий для этого пакет:

pacman -Ss word

В списке результатов будут два пакета:

  • mingw-w64-i686-antiword
  • mingw-w64-x86_64-antiword

Это сборки утилиты antiword для 32-разрядных и 64-разрядных систем. Утилита antiword конвертирует документы MS Word в текстовый формат.

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

pacman -S ИМЯ_ПАКЕТА

Чтобы установить утилиту antiword, выполните следующее:

pacman -S mingw-w64-x86_64-antiword

В результате pacman установит antiword и все пакеты, необходимые для его работы.

Теперь утилита запускается следующей командой:

antiword

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

pacman -Rs ИМЯ_ПАКЕТА

Чтобы удалить утилиту antiword, выполните команду:

pacman -Rs mingw-w64-x86_64-antiword

Предположи, вы установили в систему несколько пакетов. Через некоторое время в репозитории появятся их новые версии. Вы решаете обновить свои пакеты до новых версий. Для этого выполните команду:

pacman -Syu

В результате все установленные в систему пакеты обновятся до текущих версий в репозитории.

Мы рассмотрели основные команды pacman. Другие пакетные менеджеры работают по такому же принципу. Для установки и удаления пакетов они выполняют те же действия, что и pacman. Единственное их отличие в названии и параметрах командной строки.

Таблица 4-1 демонстрирует команды для работы с пакетами в различных дистрибутивах Linux.

Таблица 4-1. Команды для работы с пакетами
Команда MSYS2 и Arch Linux Ubuntu CentOS Fedora
Получить индекс пакетов pacman -Syy apt-get update yum check-update dnf check-update
         
Поиск пакета по ключевому слову pacman -Ss КЛЮЧЕВОЕ_СЛОВО apt-cache search КЛЮЧЕВОЕ_СЛОВО yum search КЛЮЧЕВОЕ_СЛОВО dnf search КЛЮЧЕВОЕ_СЛОВО
         
Установить пакет из репозитория pacman -S ИМЯ_ПАКЕТА apt-get install ИМЯ_ПАКЕТА yum install ИМЯ_ПАКЕТА dnf install ИМЯ_ПАКЕТА
         
Установить пакета из локального файла pacman -U ИМЯ_ФАЙЛА dpkg -i ИМЯ_ФАЙЛА yum install ИМЯ_ФАЙЛА dnf install ИМЯ_ФАЙЛА
         
Удалить установленный пакет pacman -Rs ИМЯ_ПАКЕТА apt-get remove ИМЯ_ПАКЕТА yum remove ИМЯ_ПАКЕТА dnf erase ИМЯ_ПАКЕТА
         
Обновить все установленные пакеты pacman -Syu apt-get upgrade yum update dnf upgrade