3 Управление пакетами

3.1 Введение и основные понятия

МСВСфера 8 Сервер представляет собой комплексную систему, которая обеспечивает стабильную и безопасную работу для пользователей.

Так как МСВСфера 8 Сервер собрана на базе ядра Linux, то в ней несколько приложений могут использовать одни и те же библиотеки или, например, одно приложение может использовать другое. С одной стороны это даёт возможность освободить место, занимаемое приложением, и снизить потребление ресурсов, а с другой стороны возникает необходимость обеспечения целостности системы.

Информация о всех необходимых приложению бинарных и конфигурационных файлах, о том, как их следует разместить в файловой системе, а также данные о зависимостях хранится в архиве специального формата, называемом пакетом.

В МСВСфера 8 Сервер форматом пакета является RPM (рекурсивный акроним RPM Package Manager, ранее Red Hat Package Manager), а сами файлы, содержащие пакеты, имеют расширение .rpm.

Как было упомянуто выше, приложения могут совместно использовать одни и те же библиотеки или даже целые программы, и здесь возникает понятие зависимости: в приложении может не хватать чего-то для работы, и ему для этого нужно другое приложение или библиотека. То есть один пакет начинает зависеть от другого. И удалив, например, одну библиотеку можно нарушить работу сразу нескольких приложений.

Для работы с пакетами и обеспечения целостности системы используются программы, называемые пакетными менеджерами. Они управляют пакетами: устанавливают, удаляют, обновляют, ведут учёт, выводят информацию, отслеживают версии и зависимости и пр.

В МСВСфера 8 Сервер пакетным менеджером является DNF.

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

Дистрибутив МСВСфера 8 Сервер имеет набор собственных репозиториев для всех поддерживаемых выпусков и архитектур, в которых содержится огромное количество приложений и программ.

Обычно некоторые пакеты, которые часто используют вместе, объединены в группы. Посмотреть список доступных групп поможет пакетный менеджер 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.el8_9.inferit appstream   107 M

Установка зависимостей:
 sphere-indexhtml  noarch     8-9.el8                  appstream   33 k

Результат транзакции
==========================================================================
Установка  2 Пакета

Объем загрузки: 107 M
Объем изменений: 276 M
Продолжить? [д/Н]: д
Загрузка пакетов:
(1/2): sphere-indexhtml-8-9.el8.noarch.rpm          170 kB/s |  33 kB     00:00
(2/2): firefox-102.14.0-2.el8_9.inferit.x86_64.rpm  7.7 MB/s | 107 MB     00:13
--------------------------------------------------------------------------
Общий размер                                        7.6 MB/s | 107 MB     00:14
Проверка транзакции
Проверка транзакции успешно завершена.
Идет проверка транзакции
Тест транзакции проведен успешно.
Выполнение транзакции
 Подготовка       :                                           1/1
 Установка        : sphere-indexhtml-8-9.el8.noarch           1/2
 Установка        : firefox-102.14.0-2.el8_9.inferit.x86_64   2/2
 Запуск скриптлета: firefox-102.14.0-2.el8_9.inferit.x86_64   2/2
 Проверка         : firefox-102.14.0-2.el8_9.inferit.x86_64   1/2
 Проверка         : sphere-indexhtml-8-9.el8.noarch           2/2

Установлен:
 firefox-102.14.0-2.el8_9.inferit.x86_64  sphere-indexhtml-8-9.el8.noarch

Выполнено!

3.2.3 Обновить установленные пакеты

Для проверки наличия обновлений выполните следующую команду:

dnf check-upgrade

Пример работы команды:

[user@msvsphere test]$ dnf check-upgrade

MSVSphere 8 - AppStream          7.2 MB/s | 9.6 MB     00:01
MSVSphere 8 - BaseOS             4.2 MB/s | 3.6 MB     00:00
MSVSphere 8 - CRB                3.0 MB/s | 2.7 MB     00:00
MSVSphere 8 - Extras             1.8 MB/s | 989 kB     00:00

NetworkManager.x86_64            1:1.42.2-6.el8_9.inferit  baseos
NetworkManager-adsl.x86_64       1:1.42.2-6.el8_9.inferit  baseos
NetworkManager-bluetooth.x86_64  1:1.42.2-6.el8_9.inferit  baseos
NetworkManager-libnm.x86_64      1:1.42.2-6.el8_9.inferit  baseos
NetworkManager-team.x86_64       1:1.42.2-6.el8_9.inferit  baseos
NetworkManager-tui.x86_64        1:1.42.2-6.el8_9.inferit  baseos
NetworkManager-wifi.x86_64       1:1.42.2-6.el8_9.inferit  baseos
NetworkManager-wwan.x86_64       1:1.42.2-6.el8_9.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.8.0-9.el8_9.inferit.3  @appstream   276 M
Удаление
неиспользуемых
зависимостей:
sphere-indexhtml     noarch        8-9.el8                   @appstream   35 k

Результат транзакции
=================================================================================
Удаление  2 Пакета

Освобожденное место: 276 M
Продолжить? [д/Н]: д
Проверка транзакции
Проверка транзакции успешно завершена.
Идет проверка транзакции
Тест транзакции проведен успешно.
Выполнение транзакции
 Подготовка       :                                             1/1
 Запуск скриптлета: firefox-102.8.0-9.el8_1.inferit.3.x86_64    1/2
 Удаление         : firefox-102.8.0-9.el8_1.inferit.3.x86_64    1/2
 Запуск скриптлета: firefox-102.8.0-9.el8_1.inferit.3.x86_64    1/2
 Удаление         : sphere-indexhtml-8-9.el8.noarch             2/2
 Запуск скриптлета: sphere-indexhtml-8-9.el8.noarch             2/2
 Проверка         : firefox-102.8.0-9.el8_1.inferit.3.x86_64    1/2
 Проверка         : sphere-indexhtml-8-9.el8.noarch             2/2

Удален:
 firefox-102.8.0-9.el8_1.inferit.3.x86_64   sphere-indexhtml-8-9.el8.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.el8_9.inferit
Архитектура  : x86_64
Размер       : 276 M
Источник     : firefox-102.14.0-2.el8_9.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 Описание репозиториев МСВСфера 8 Сервер

Рассмотрим репозитории МСВСфера 8 Сервер.

  • MSVSphere 8 - AppStream — приложения общего назначения.

  • MSVSphere 8 - BaseOS — базовый набор пакетов операционной системы.

  • MSVSphere 8 - CRB — дополнительные пакеты для разработчиков.

  • MSVSphere 8 - Extras — набор дополнительных приложений.

  • MSVSphere 8 - HighAvailability — пакеты для создания кластеров высокой доступности.

  • MSVSphere 8 - NFV — компоненты для виртуализации сетевых служб.

  • MSVSphere 8 - ResilientStorage — пакеты для создания кластерных хранилищ.

  • MSVSphere 8 - 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 8 - BaseOS
Статус репозитория         : включено
Версия репозитория         : 8.9
Метки дистрибутива         : [cpe:/o:ncsd:msvsphere:8]:  , 8, M, S, S, V, e, e, h, p, r
Репозиторий обновлен       : Пт 25 авг 2023 15:33:16
Пакеты репозитория         : 1164
Пакеты-в-репозитории       : 1164
Размер-репозитория         : 1.2 G
Зеркала-репозитория        : https://mirrors.inferitos.ru/mirrorlist/8/baseos
Базовый-URL-репозитория    : https://repo1.msvsphere-os.ru/msvsphere/8/isos/x86_64/ (0 more)
Истечение срока репозитория: 86400 секунд(а) (осталось: Пт 25 авг 2023 16:05:43)
Имя файла репозитория      : /etc/yum.repos.d/msvsphere-baseos.repo
Всего пакетов              : 1164

Здесь мы видим, что репозиторий включен, количество пакетов в репозитории и его размер, а также другие важные параметры.

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

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_el8-9.x86_64.rpm:

rpm --checksig VirtualBox-7.0-7.0.10_158379_el8-9.x86_64.rpm

Результат работы команды:

[user@msvsphere Загрузки]$ rpm --checksig  VirtualBox-7.0-7.0.10_158379_el8-9.x86_64.rpm
VirtualBox-7.0-7.0.10_158379_el8-9.x86_64.rpm: rsa sha1 (md5) pgp md5 ОК

Вы можете также использовать опцию -v для вывода более полной информации о проверке.