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 имя_пакета
В имени пакета вы можете использовать шаблоны, а также указывать только те буквы из названия, которые помните.
Пример: найдём пакет по первым буквам:
$ dnf search *fox
Результат работы команды:
$ dnf search *fox
==== Имя совпадение: *fox =================
firefox.x86_64 : Mozilla Firefox Web browser
3.2.2. Установить нужный пакет
Для установки пакета выполните следующую команду:
$ sudo dnf install имя_пакета
DNF проверит все зависимости и при обнаружении нужных, но ещё не установленных пакетов, установит их, пользуясь всеми доступными репозиториями.
Пример: установим пакет firefox.x86_64
:
$ sudo dnf install firefox.x86_64
Зависимости разрешены.
=================================================================
Пакет Архитектура Версия Репозиторий Размер
=================================================================
Установка:
firefox x86_64 128.6.0-1.el9_5.inferit os 123 M
Результат транзакции
=================================================================
Установка 1 Пакета
Объем загрузки: 123 M
Объем изменений: 313 M
Продолжить? [д/Н]: д
Загрузка пакетов:
firefox-128.6.0-1.el9_5.inferit.x86_64.rpm 8.1 MB/s | 123 MB 00:15
---------------------------------------------------------------------
Общий размер 7.9 MB/s | 123 MB 00:14
...
...
Проверка транзакции
Проверка транзакции успешно завершена.
Идет проверка транзакции
Тест транзакции проведен успешно.
Выполнение транзакции
Подготовка : 1
Установка : firefox-128.6.0-1.el9_5.inferit.x86_64 1
Запуск скриптлета: firefox-128.6.0-1.el9_5.inferit.x86_64 1
Проверка : firefox-128.6.0-1.el9_5.inferit.x86_64 1
Установлен:
firefox-128.6.0-1.el9_5.inferit.x86_64
Выполнено!
3.2.3. Обновить установленные пакеты
Для проверки наличия обновлений выполните следующую команду:
$ dnf check-upgrade
MSVSphere 9 - OS 1.0 MB/s | 4.2 MB 00:04
MSVSphere 9 - Updates 4.1 MB/s | 1.4 MB 00:00
Для обновления всей системы выполните следующую команду:
$ sudo dnf upgrade
Для обновления определённого пакета (и его зависимостей) выполните следующую команду:
$ sudo dnf upgrade имя_пакета
3.2.4. Удалить установленный пакет
Для удаления пакета выполните следующую команду:
$ dnf remove имя_пакета
Пример: удалим пакет firefox.x86_64
:
$ sudo dnf remove firefox.x86_64
Зависимости разрешены.
==================================================================
Пакет Архитектура Версия Репозиторий Размер
==================================================================
Удаление:
firefox x86_64 128.6.0-1.el9_5.inferit.x86_64 @os 313 M
Результат транзакции
==================================================================
Удаление 1 Пакет
Освобожденное место: 313 M
Продолжить? [д/Н]: д
Проверка транзакции
Проверка транзакции успешно завершена.
Идет проверка транзакции
Тест транзакции проведен успешно.
Выполнение транзакции
Подготовка : 1/1
Запуск скриптлета: firefox-128.6.0-1.el9_5.inferit.x86_64 1/1
Удаление : firefox-128.6.0-1.el9_5.inferit.x86_64 1/1
Запуск скриптлета: firefox-128.6.0-1.el9_5.inferit.x86_64 1/1
Проверка : firefox-128.6.0-1.el9_5.inferit.x86_64 1/1
Удален:
firefox-102.9.0-3.el9_1.inferit.3.x86_64
Также будут удалены все пакеты, которые зависят от удаляемого (при их наличии).
3.2.5. Проверить целостность пакета
Для проверки целостности rpm-пакета выполните следующую команду:
$ rpm -V имя_rpm_пакета
В результате работы команды будет указана следующая информация:
размер пакета
полномочия
тип
владелец
группа
MD5-сумма
дата последнего изменения пакета
3.2.6. Получить информацию об установленном пакете
Для получения подробной информации об установленном пакете выполните следующую команду:
$ dnf info имя_пакета
Пример работы команды для пакета firefox.x86_64
:
$ dnf info firefox.x86_64
Установленные пакеты
Имя : firefox
Версия : 128.6.0
Выпуск : 1.el9_5.inferit
Архитектура : x86_64
Размер : 313 M
Источник : firefox-128.6.0-1.el9_5.inferit.src.rpm
Репозиторий : @System
Из репозитор : os
Краткое опис : 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.3. Описание репозиториев ОС МСВСфера 9 Сертифицировання (ФСТЭК)
Рассмотрим репозитории МСВСфера 9.
MSVSphere 9 - OS — содержит базовый набор пакетов, которые прошли сертификацию и изначально поставляются на ISO-образе. По умолчанию включён.
MSVSphere 9 - Updates — содержит пакеты, выпущенные для исправления уязвимостей или ошибок. По умолчанию выключен. Необходимо включить его для получения обновлений.
MSVSphere 9 - OS Local — содержит базовый набор пакетов, которые прошли сертификацию и изначально поставляются на ISO-образе для изолированной среды (без подключения к Интернету). По умолчанию выключен.
MSVSphere 9 - Updates Local — содержит пакеты, выпущенные для исправления уязвимостей или ошибок для изолированной среды (без подключения к Интернету). По умолчанию выключен.
MSVSphere 9 - Testing — содержит пакеты с обновлениями, которые ещё не попали в репозиторий «Updates».
3.3.1. Посмотреть список включённых и доступных репозиториев
Для просмотра списка включённых репозиториев выполните следующую команду:
$ dnf repolist
Для просмотра списка включённых и отключённых репозиториев выполните следующую команду:
$ dnf repolist all
Для вывода подробного описания для каждого включённого репозитория выполните следующую команду:
$ dnf repolist -v
Для вывода списка отключённых репозиториев выполните следующую команду:
$ dnf repolist disabled
Для получения подробной информации о конкретном репозитории выполните следующую команду:
$ dnf repolist название репозитория -v
Пример: вывести подробную информацию о репозитории OS:
$ dnf repolist os -v
...
...
ИД репозитория : os
Имя репозитория : MSVSphere 9 - OS
Статус репозитория : включено
Версия репозитория : 9.5
Метки дистрибутива : [cpe:/o:ncsd:msvsphere:9]: , 9, M, S, S, V, e, e, h, p, r
Репозиторий обновлен : Чт 23 янв 2023 18:50:55
Пакеты репозитория : 3 357
Пакеты-в-репозитории : 3 357
Размер-репозитория : 3.8 G
Зеркала-репозитория : https://mirrors.inferitos.ru/mirrorlist/9/os
Базовый-URL-репозитория : https://repo1.msvsphere-os.ru/certified/msvsphere/9/isos/x86_64/ (0 more)
Истечение срока репозитория: 86 400 секунд(а) (осталось: Ch 29 нв 2025 15:59:28)
Имя файла репозитория : /etc/yum.repos.d/msvsphere-baseos.repo
Всего пакетов : 3 357
Здесь мы видим, что репозиторий включён, количество пакетов в репозитории и его размер, а также другие важные параметры.
Зеркала репозитория — это серверы, дублирующие содержимое этого репозитория. Они позволяют снизить нагрузку с основных серверов.
3.3.2. Включить или отключить репозиторий
Вы можете по необходимости включать и отключать репозитории, чтобы установить приложение из конкретного репозитория. При этом репозиторий не будет удалён.
Команда включения репозитория:
$ sudo dnf config-manager --set-enabled имя_репозитория
Команда отключения репозитория:
$ sudo dnf config-manager --set-disabled имя_репозитория
При необходимости вы можете вывести справку по команде config-manager
:
$ dnf config-manager --help-cmd
Вы также можете включать и отключать репозиторий из «Центра приложений» (см. «application-center»).
3.4. Включение автоматического обновления пакетов
Если вы хотите получать систематические обновления ОС МСВСфера Сертифицированная (ФСТЭК), вам необходимо включить доступ к репозиторию Updates
.
Для этого выполните следующую команду:
$ sudo dnf config-manager --set-enabled updates
Для обновления установленной системы выполните следующую команду:
$ sudo dnf update --refresh
Для получения автоматических обновлений через «Центр приложений» необходимо выполнить следующие команды:
$ gsettings set org.gnome.software allow-updates true
$ gsettings set org.gnome.software download-updates true
3.5. Обновление системы и приложений в изолированной среде
3.5.1. Введение
Если согласно политикам информационной безопасности вашей компании, все компьютеры находятся в изолированной среде (без подключения к Интернету), то вы всё также можете обновлять систему и приложения, и получать все пакеты, выпущенные для исправления уязвимостей или ошибок.
Рассмотрим два варианта обновления системы и приложений в изолированной среде.
Создание локального зеркала репозитория ОС МСВСфера.
В этом случае локальное зеркало будет синхронизироваться с официальными репозиториями ОС МСВСфера, а компьютеры в локальной сети будут получать обновления с него.
Создание доверенного USB-носителя.
В этом случае все обновления будут загружаться вами вручную на доверенный USB-носитель, а затем с него на компьютеры в локальной сети.
3.5.2. Создание локального зеркала репозитория ОС МСВСфера
3.5.2.1. Требования
Для создания локального зеркала требуется:
50 Гбайт свободного пространства памяти на жёстком диске;
настроенный HTTP-сервер.
Основное зеркало ОС МСВСфера Сертифицированная (ФСТЭК): rsync://rsync.msvsphere-os.ru/msvsphere-certified
.
3.5.2.2. Настройка зеркала
Для зеркалирования рекомендуется использовать специальный скрипт. Он позволит выполнять синхронизацию только в том случае, если появились новые обновления.
В приведённом ниже скрипте замените путь в переменной
_msvsphere_path
на локальный путь до вашего зеркала.#!/bin/sh # - msvsphere-sync.sh # Timestamp file to check available updates _timestamp="TIME" _tempfile="/tmp/sync-$RANDOM" _date="$(date +%s)" # Destination path _msvsphere_path="локальный_путь_до_вашего_зеркала" _module="msvsphere-certified/msvsphere/" if [ -f /tmp/.msvsphere-sync ]; then exit 0 fi rsync -d -avSH --timeout=30 rsync://rsync.msvsphere-os.ru/msvsphere-full/$_timestamp $_tempfile if [ "$(diff -u $_tempfile $_msvsphere_path/$_timestamp | wc -l)" = "0" ]; then exit 0 fi rm -f $_tempfile touch /tmp/.msvsphere-sync false while [ $? -ne 0 ]; do /usr/bin/rsync -d -avSH \ -f 'R .~tmp~' \ --timeout=120 \ --delete-delay \ --delay-updates \ rsync://rsync.msvsphere-os.ru/$_module/ \ $_msvsphere_path/ >> /var/log/msvsphere-sync-$_date.log done rm -f /tmp/.msvsphere-sync
Затем сохраните его в удобное место, например, в
/usr/local/bin/msvsphere-sync.sh
.Добавьте его в задачу в планировщик
cron
, например, в файл/etc/cron.d/msvsphere-sync
.*/5 * * * * root /usr/local/bin/msvsphere-sync.sh
Далее переключите зеркало на локальный сервер. Для этого в файлах
/etc/yum.repos.d/msvsphere-os.repo
и/etc/yum.repos.d/msvsphere-updates.repo
закомментируйте строкуmirrorlist
и раскомментируйте строкуbaseurl
:[os] name=MSVSphere $releasever - OS # mirrorlist=https://mirrors.inferitos.ru/mirrorlist/$releasever/os baseurl=https://localserver/path/$releasever/OS/$basearch/os/ enabled=1 gpgcheck=1 countme=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-MSVSphere-Certified-9 metadata_expire=86400 enabled_metadata=1
[updates] name=MSVSphere $releasever - Updates # mirrorlist=https://mirrors.inferitos.ru/mirrorlist/$releasever/updates baseurl=https://localserver/path/$releasever/Updates/$basearch/os/ enabled=0 gpgcheck=1 countme=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-MSVSphere-Certified-9 metadata_expire=86400 enabled_metadata=1
3.5.3. Создание доверенного USB-носителя
Вам потребуется доверенный USB-носитель, на который необходимо скопировать содержимое следующих репозиториев:
https://repo1.msvsphere-os.ru/certified/msvsphere/9/OS/x86_64/os/
https://repo1.msvsphere-os.ru/certified/msvsphere/9/Updates/x86_64/os/
Скопируйте содержимое указанных выше репозиториев на доверенный USB-носитель с помощью утилиты
rsync
:$ rsync -rlDHP --exclude=EFI/ --exclude=images/ --exclude=isolinux/ \ rsync-msvsphere.inferitos.ru::msvsphere-certified/msvsphere/9/OS/x86_64/os/ \ /точка монтирования usb-stick/OS/ $ rsync -rlDHP \ rsync-msvsphere.inferitos.ru::msvsphere-certified/msvsphere/9/Updates/x86_64/os/ \ /точка монтирования usb-stick/Updates/
Создайте в файловой системе следующие каталоги:
$ sudo mkdir -p /mnt/usb /mnt/repos/os/OS /mnt/repos/updates/Updates
Подключите ваш доверенный USB-носитель к компьютеру с ОС МСВСфера Сертифицированная (ФСТЭК), находящемуся в изолированной среде. Например, если USB-носитель определился как
/dev/sdd1
, то выполните следующую команду:$ sudo mount /dev/sdd1 /mnt/usb
Для определения устройства вы можете использовать утилиту
lsblk
.Для доступа к репозиториям подключите каталоги следующим образом:
$ sudo mount /mnt/usb/OS /mnt/repos/os/OS -o bind $ sudo mount /mnt/usb/Updates /mnt/repos/updates/Updates -o bind
Отключите все репозитории, так как из-за их недоступности могут выводиться ошибки подключения:
$ sudo dnf config-manager --set-disabled '*'
Для обновления выполните следующую команду:
$ sudo dnf --disablerepo=os --disablerepo=updates \ --enablerepo=os-local --enablerepo=updates-local update