Пакетный менеджер
Мы познакомились со встроенными командами Bash и со стандартным набором GNU-утилит. Эти утилиты устанавливаются в Unix-окружение по умолчанию. Их возможностей может оказаться недостаточно для решения вашей задачи. Эта проблема решается установкой дополнительных программ и утилит.
Подходы к установке программ в Windows и Unix-окружение отличаются. Рассмотрим, как правильно устанавливать и обновлять ПО в любом Unix-окружении или Linux дистрибутиве.
Репозиторий
ПО устанавливается в Unix-окружение из репозитория (software repository). Репозиторием называется сервер-хранилище всех доступных приложений. Эти приложения собираются мейнтейнерами из исходного кода открытого ПО. Большинство мейнтейнеров — это добровольцы и энтузиасты свободного ПО.
Каждое приложение в репозитории хранится в виде файла. Эти файлы имеют специальный формат. Например, deb, RPM, zst и т.д. Разные Linux-дистрибутивы используют разные форматы. Файл с приложением называется пакетом (package). Пакет — это модуль для установки ПО в систему.
Репозиторий хранит пакеты с приложениями и библиотеками. Кроме этого в репозитории есть метаинформация обо всех пакетах. Она хранится в одном или нескольких файлах. Эта метаинформация называется индексом пакетов.
Устанавливать пакеты в Unix-окружение можно сразу из нескольких репозиториев. Например, один репозиторий предлагает новые версии пакетов, а другой их специальные сборки. В зависимости от требований можно выбрать из какого репозитория устанавливать пакет.
Работа с пакетами
Для работы с репозиторием Unix-окружение предлагает специальную программу. Она называется пакетным менеджером (package manager).
Зачем нужен пакетный менеджер? Для примера в Windows его нет. Пользователи этой ОС вручную загружают программы из интернета и устанавливают их.
Пакетный менеджер устанавливает и удаляет пакеты в Unix-окружении. При этом его главная задача — отслеживать зависимости пакетов. Предположим, что программа из одного пакета использует возможности программы или библиотеки из другого. Тогда говорят, что первый пакет зависит от второго.
Зависимость пакетов предотвращает многократную установку одного и того же приложения или библиотеки в систему. Вместо этого нужные пакеты устанавливаются однократно. Все зависящие от них программы знают место их установки на диске и используют их совместно.
Устанавливайте приложения в Unix-окружение или ОС Linux только через пакетный менеджер. Единственное исключение из этого правила — проприетарные программы. Их приходится устанавливать вручную. Обычно такие программы распространяются в одном пакете. Он включает все необходимые зависимости (библиотеки и приложения). В таких случаях отслеживать зависимости не нужно и без пакетного менеджера можно обойтись.
Алгоритм установки пакета из репозитория выглядит так:
- Загрузить из репозитория индекс пакетов.
- Найти нужное приложение или библиотеку в индексе пакетов.
- Загрузить на локальный компьютер пакет с приложением или библиотекой из репозитория.
- Установить загруженный пакет.
Пакетный менеджер выполняет все эти шаги. Вам нужно только знать его интерфейс и вызывать с правильными параметрами.
Окружение 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.
| Команда | 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 |