3 Управление пакетами
3.1 Введение и основные понятия
МСВСфера 9 Сервер представляет собой комплексную систему, которая обеспечивает стабильную и безопасную работу для пользователей.
Так как МСВСфера 9 Сервер собрана на базе ядра Linux, то в ней несколько приложений могут использовать одни и те же библиотеки или, например, одно приложение может использовать другое. С одной стороны это даёт возможность освободить место, занимаемое приложением, и снизить потребление ресурсов, а с другой стороны возникает необходимость обеспечения целостности системы.
Информация о всех необходимых приложению бинарных и конфигурационных файлах, о том, как их следует разместить в файловой системе, а также данные о зависимостях хранится в архиве специального формата, называемом пакетом.
В МСВСфера 9 Сервер форматом пакета является RPM (рекурсивный акроним RPM Package Manager, ранее Red Hat Package Manager), а сами файлы, содержащие пакеты, имеют расширение .rpm
.
Как было упомянуто выше, приложения могут совместно использовать одни и те же библиотеки или даже целые программы, и здесь возникает понятие зависимости: в приложении может не хватать чего-то для работы, и ему для этого нужно другое приложение или библиотека. То есть один пакет начинает зависеть от другого. И удалив, например, одну библиотеку можно нарушить работу сразу нескольких приложений.
Для работы с пакетами и обеспечения целостности системы используются программы, называемые пакетными менеджерами. Они управляют пакетами: устанавливают, удаляют, обновляют, ведут учёт, выводят информацию, отслеживают версии и зависимости и пр.
В МСВСфера 9 Сервер пакетным менеджером является DNF.
Так как пакеты зависят друг от друга, то зачастую недостаточно установить только один пакет — нужно устанавливать сразу несколько, поэтому разработчики создают и поддерживают специальные централизованные серверы, называемые репозиториями, где хранятся различные пакеты. Пакетный менеджер видит зависимости каждого пакета, сам находит подходящие пакеты в репозитории и предлагает их установить.
Дистрибутив МСВСфера 9 Сервер имеет набор собственных репозиториев для всех поддерживаемых выпусков и архитектур, в которых содержится огромное количество приложений и программ.
Обычно некоторые пакеты, которые часто используют вместе, объединены в группы. Посмотреть список доступных групп поможет пакетный менеджер DNF.
Кроме групп также есть модули, которые тоже содержат сразу несколько пакетов, но при этом пакеты в модуле связаны версиями.
3.2 Пакетный менеджер DNF
Рассмотрим основные операции с пакетами, которые может выполнить пакетный менеджер DNF.
3.2.1 Найти нужный пакет
Для поиска пакета (даже не зная его точного имени) выполните следующую команду:
dnf search имя_пакета
В имени пакета вы можете использовать шаблоны, а также указывать только те буквы из названия, которые помните.
Пример: найдём пакет по первым буквам (запустим от имени администратора — sudo
):
sudo dnf search *fox
Результат работы команды:
[user@msvsphere test]$ sudo dnf search *fox
==== Имя совпадение: *fox =================
firefox.x86_64 : Mozilla Firefox Web browser
3.2.2 Установить нужный пакет
Для установки пакета выполните следующую команду:
dnf install имя_пакета
DNF проверит все зависимости и при обнаружении нужных, но ещё не установленных пакетов, установит их, пользуясь всеми доступными репозиториями.
Пример: установим пакет firefox.x86_64
(запустим от имени администратора — sudo
):
sudo dnf install firefox.x86_64
Результат работы команды:
[user@msvsphere test]$ sudo dnf install firefox.x86_64
Зависимости разрешены.
==========================================================================
Пакет Архитектура Версия Репозиторий Размер
==========================================================================
Установка:
firefox x86_64 102.14.0-2.el9_2.inferit appstream 107 M
Установка зависимостей:
sphere-indexhtml noarch 9-3.el9 appstream 33 k
Результат транзакции
==========================================================================
Установка 2 Пакета
Объем загрузки: 107 M
Объем изменений: 276 M
Продолжить? [д/Н]: д
Загрузка пакетов:
(1/2): sphere-indexhtml-9-3.el9.noarch.rpm 170 kB/s | 33 kB 00:00
(2/2): firefox-102.14.0-2.el9_2.inferit.x86_64.rpm 7.7 MB/s | 107 MB 00:13
--------------------------------------------------------------------------
Общий размер 7.6 MB/s | 107 MB 00:14
Проверка транзакции
Проверка транзакции успешно завершена.
Идет проверка транзакции
Тест транзакции проведен успешно.
Выполнение транзакции
Подготовка : 1/1
Установка : sphere-indexhtml-9-3.el9.noarch 1/2
Установка : firefox-102.14.0-2.el9_2.inferit.x86_64 2/2
Запуск скриптлета: firefox-102.14.0-2.el9_2.inferit.x86_64 2/2
Проверка : firefox-102.14.0-2.el9_2.inferit.x86_64 1/2
Проверка : sphere-indexhtml-9-3.el9.noarch 2/2
Установлен:
firefox-102.14.0-2.el9_2.inferit.x86_64 sphere-indexhtml-9-3.el9.noarch
Выполнено!
3.2.3 Обновить установленные пакеты
Для проверки наличия обновлений выполните следующую команду:
dnf check-upgrade
Пример работы команды:
[user@msvsphere test]$ dnf check-upgrade
MSVSphere 9 - AppStream 7.2 MB/s | 9.6 MB 00:01
MSVSphere 9 - BaseOS 4.2 MB/s | 3.6 MB 00:00
MSVSphere 9 - CRB 3.0 MB/s | 2.7 MB 00:00
MSVSphere 9 - Extras 1.8 MB/s | 989 kB 00:00
NetworkManager.x86_64 1:1.42.2-6.el9_2.inferit baseos
NetworkManager-adsl.x86_64 1:1.42.2-6.el9_2.inferit baseos
NetworkManager-bluetooth.x86_64 1:1.42.2-6.el9_2.inferit baseos
NetworkManager-libnm.x86_64 1:1.42.2-6.el9_2.inferit baseos
NetworkManager-team.x86_64 1:1.42.2-6.el9_2.inferit baseos
NetworkManager-tui.x86_64 1:1.42.2-6.el9_2.inferit baseos
NetworkManager-wifi.x86_64 1:1.42.2-6.el9_2.inferit baseos
NetworkManager-wwan.x86_64 1:1.42.2-6.el9_2.inferit baseos
Для обновления всей системы выполните следующую команду от имени администратора — sudo
:
sudo dnf upgrade
Для обновления определённого пакета (и его зависимостей) выполните следующую команду от имени администратора — sudo
:
sudo dnf upgrade имя_пакета
3.2.4 Удалить установленный пакет
Для удаления пакета выполните следующую команду:
dnf remove имя_пакета
Пример: удалим пакет firefox.x86_64
(запустим от имени администратора — sudo
):
sudo dnf remove firefox.x86_64
Результат работы команды:
[user@msvsphere test]$ sudo dnf remove firefox.x86_64
Зависимости разрешены.
=================================================================================
Пакет Архитектура Версия Репозиторий Размер
=================================================================================
Удаление:
firefox x86_64 102.9.0-3.el9_1.inferit.3 @appstream 276 M
Удаление
неиспользуемых
зависимостей:
sphere-indexhtml noarch 9-3.el9 @appstream 35 k
Результат транзакции
=================================================================================
Удаление 2 Пакета
Освобожденное место: 276 M
Продолжить? [д/Н]: д
Проверка транзакции
Проверка транзакции успешно завершена.
Идет проверка транзакции
Тест транзакции проведен успешно.
Выполнение транзакции
Подготовка : 1/1
Запуск скриптлета: firefox-102.9.0-3.el9_1.inferit.3.x86_64 1/2
Удаление : firefox-102.9.0-3.el9_1.inferit.3.x86_64 1/2
Запуск скриптлета: firefox-102.9.0-3.el9_1.inferit.3.x86_64 1/2
Удаление : sphere-indexhtml-9-3.el9.noarch 2/2
Запуск скриптлета: sphere-indexhtml-9-3.el9.noarch 2/2
Проверка : firefox-102.9.0-3.el9_1.inferit.3.x86_64 1/2
Проверка : sphere-indexhtml-9-3.el9.noarch 2/2
Удален:
firefox-102.9.0-3.el9_1.inferit.3.x86_64 sphere-indexhtml-9-3.el9.noarch
Вы можете увидеть, что также были удалены все пакеты, которые зависят от удаляемого.
3.2.5 Проверить целостность пакета
Для проверки целостности rpm-пакета выполните следующую команду:
rpm -V имя_rpm_пакета
В результате работы команды будет указана следующая информация:
размер пакета
полномочия
тип
владелец
группа
MD5-сумма
дата последнего изменения пакета
3.2.6. Получить информацию об установленном пакете
Для получения подробной информации об установленном пакете выполните следующую команду:
dnf info имя_пакета
Пример работы команды для пакета firefox.x86_64
:
[user@msvsphere test]$ dnf info firefox.x86_64
Установленные пакеты
Имя : firefox
Версия : 102.14.0
Выпуск : 2.el9_2.inferit
Архитектура : x86_64
Размер : 276 M
Источник : firefox-102.14.0-2.el9_2.inferit.src.rpm
Репозиторий : @System
Из репозитор : appstream
Краткое опис : Mozilla Firefox Web browser
URL : https://www.mozilla.org/firefox/
Лицензия : MPLv1.1 or GPLv2+ or LGPLv2+
Описание : Mozilla Firefox is an open-source web browser, designed for standards
: compliance, performance and portability.
Рассмотрим основные операции с модулями.
3.2.7 Посмотреть список доступных модулей
Для просмотра списка доступных модулей выполните следующую команду:
dnf module list
3.2.8 Установить выбранный модуль
Для установки выбранного модуля выполните следующую команду (от имени администратора — sudo
):
sudo dnf module install имя_модуля:версия
Например, для установки модуля ruby:3.1
используйте следующую команду:
sudo dnf module install ruby:3.1
3.2.9 Удалить указанный модуль
Для удаления указанного модуля выполните следующую команду:
sudo dnf module remove имя_модуля:версия
Например, для удаления пакета ruby:3.1
используйте следующую команду:
sudo dnf module remove ruby:3.1
3.2.10 Описание репозиториев МСВСфера 9 Сервер
Рассмотрим репозитории МСВСфера 9 Сервер.
MSVSphere 9 - AppStream — приложения общего назначения.
MSVSphere 9 - BaseOS — базовый набор пакетов операционной системы.
MSVSphere 9 - CRB — дополнительные пакеты для разработчиков.
MSVSphere 9 - Extras — набор дополнительных приложений.
MSVSphere 9 - HighAvailability — пакеты для создания кластеров высокой доступности.
MSVSphere 9 - NFV — компоненты для виртуализации сетевых служб.
MSVSphere 9 - ResilientStorage — пакеты для создания кластерных хранилищ.
MSVSphere 9 - RT — набор пакетов для системы реального времени.
3.2.11 Посмотреть список включенных и доступных репозиториев
Для просмотра списка включенных репозиториев выполните следующую команду:
dnf repolist
Для просмотра списка включенных и отключенных репозиториев выполните следующую команду:
dnf repolist all
Для вывода подробного описания для каждого включенного репозитория выполните следующую команду:
dnf repolist -v
Для вывода списка отключенных репозиториев выполните следующую команду:
dnf repolist disabled
Для получения подробной информации о конкретном репозитории выполните следующую команду:
dnf repolist название репозитория -v
Пример: вывести подробную информацию о репозитории BaseOS:
dnf repolist BaseOS -v
ИД репозитория : baseos
Имя репозитория : MSVSphere 9 - BaseOS
Статус репозитория : включено
Версия репозитория : 9.3
Метки дистрибутива : [cpe:/o:ncsd:msvsphere:9]: , 9, M, S, S, V, e, e, h, p, r
Репозиторий обновлен : Пт 25 авг 2023 15:33:16
Пакеты репозитория : 1 164
Пакеты-в-репозитории : 1 164
Размер-репозитория : 1.2 G
Зеркала-репозитория : https://mirrors.inferitos.ru/mirrorlist/9/baseos
Базовый-URL-репозитория : https://repo1.msvsphere-os.ru/msvsphere/9/isos/x86_64/ (0 more)
Истечение срока репозитория: 86 400 секунд(а) (осталось: Пт 25 авг 2023 16:05:43)
Имя файла репозитория : /etc/yum.repos.d/msvsphere-baseos.repo
Всего пакетов : 1 164
Здесь мы видим, что репозиторий включен, количество пакетов в репозитории и его размер, а также другие важные параметры.
Зеркала репозитория — это серверы, дублирующие содержимое этого репозитория. Они позволяют снизить нагрузку с основных серверов.
3.2.12 Добавить в систему сторонний репозиторий
Иногда возникает необходимость установить приложение, которого нет в имеющихся репозиториях. В этом случае есть возможность добавить в систему сторонний репозиторий.
Важно
Рекомендуем быть предельно осторожными при подключении сторонних репозиториев и тщательно соблюдать меры безопасности.
Вы можете подключить сторонний репозиторий, если есть .repo
-файл, с помощью следующей команды:
dnf config-manager --add-repo путь_к_.repo_файлу
Пример подключения .repo
-файла docker.io:
dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
3.2.13 Включить или отключить репозиторий
Вы можете по необходимости временно включать и отключать репозитории, чтобы установить приложение из конкретного репозитория. При этом репозиторий не будет удалён.
Команда включения репозитория:
sudo dnf config-manager --set-enabled имя_репозитория
Команда отключения репозитория:
sudo dnf config-manager --set-disabled имя_репозитория
При необходимости вы можете вывести справку по команде config-manager
:
dnf config-manager --help-cmd
3.3 Безопасность
3.3.1 Использование сторонних репозиториев/пакетов
Так как сторонние репозитории и пакеты загружаются из Интернета, то при их скачивании и установке необходимо быть уверенными в безопасности устанавливаемых приложений. Важно быть уверенным, что никакая третья сторона не изменяла содержимое пакета при передаче его от автора к пользователю. Подписание пакета является способом защиты пакета для конечного пользователя. Поэтому репозитории и все пакеты в них подписываются специальным цифровым ключом.
Приватный ключ есть только у разработчиков. Публичный ключ может располагаться на сайте репозитория, либо распространяться вместе с операционной системой.
Разработчики подписывают пакеты приватным ключом, а с помощью публичного ключа конечный пользователь может убедиться, что это тот самый пакет и никакая третья сторона не изменяла его.
Ниже мы рассмотрим, как проверить цифровую подпись пакета.
3.3.2 Цифровые подписи пакетов и их проверка
Для проверки цифровой подписи пакета выполните следующую команду (находясь в папке с пакетом):
rpm --checksig имя_пакета.rpm
Пример: проверим цифровую подпись пакета VirtualBox-7.0-7.0.10_158379_el9-1.x86_64.rpm
:
rpm --checksig VirtualBox-7.0-7.0.10_158379_el9-1.x86_64.rpm
Результат работы команды:
[user@msvsphere Загрузки]$ rpm --checksig VirtualBox-7.0-7.0.10_158379_el9-1.x86_64.rpm
VirtualBox-7.0-7.0.10_158379_el9-1.x86_64.rpm: rsa sha1 (md5) pgp md5 ОК
Вы можете также использовать опцию -v
для вывода более полной информации о проверке.