Применимо к редакции: МСВСфера 9 (ФСТЭК)

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. Настройка зеркала

Для зеркалирования рекомендуется использовать специальный скрипт. Он позволит выполнять синхронизацию только в том случае, если появились новые обновления.

  1. В приведённом ниже скрипте замените путь в переменной _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
    
  2. Затем сохраните его в удобное место, например, в /usr/local/bin/msvsphere-sync.sh.

  3. Добавьте его в задачу в планировщик cron, например, в файл /etc/cron.d/msvsphere-sync.

    */5 * * * * root /usr/local/bin/msvsphere-sync.sh
    
  4. Далее переключите зеркало на локальный сервер. Для этого в файлах /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-носитель, на который необходимо скопировать содержимое следующих репозиториев:

  1. Скопируйте содержимое указанных выше репозиториев на доверенный 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/
    
  2. Создайте в файловой системе следующие каталоги:

    $ sudo mkdir -p /mnt/usb /mnt/repos/os/OS /mnt/repos/updates/Updates
    
  3. Подключите ваш доверенный USB-носитель к компьютеру с ОС МСВСфера Сертифицированная (ФСТЭК), находящемуся в изолированной среде. Например, если USB-носитель определился как /dev/sdd1, то выполните следующую команду:

    $ sudo mount /dev/sdd1 /mnt/usb
    

    Для определения устройства вы можете использовать утилиту lsblk.

  4. Для доступа к репозиториям подключите каталоги следующим образом:

    $ sudo mount /mnt/usb/OS /mnt/repos/os/OS -o bind
    
    $ sudo mount /mnt/usb/Updates /mnt/repos/updates/Updates -o bind
    
  5. Отключите все репозитории, так как из-за их недоступности могут выводиться ошибки подключения:

    $ sudo dnf config-manager --set-disabled '*'
    
  6. Для обновления выполните следующую команду:

    $ sudo dnf --disablerepo=os --disablerepo=updates \
          --enablerepo=os-local --enablerepo=updates-local update