3. УПРАВЛЕНИЕ ПАКЕТАМИ
3.1. Введение и основные понятия
ОС МСВСфера представляет собой комплексную систему, которая обеспечивает стабильную и безопасную работу для пользователей.
Так как ОС МСВСфера собрана на базе ядра Linux, то в ней несколько приложений могут использовать одни и те же библиотеки или, например, одно приложение может использовать другое. С одной стороны это даёт возможность освободить место, занимаемое приложением, и снизить потребление ресурсов, а с другой стороны возникает необходимость обеспечения целостности системы.
Информация о всех необходимых приложению бинарных и конфигурационных файлах, о том, как их следует разместить в файловой системе, а также данные о зависимостях хранится в архиве специального формата, называемом пакетом.
В ОС МСВСфера форматом пакета является RPM (рекурсивный акроним RPM Package Manager, ранее Red Hat Package Manager), а сами файлы, содержащие пакеты, имеют расширение .rpm.
Как было сказано выше, приложения могут совместно использовать одни и те же библиотеки или даже целые программы, и здесь возникает понятие зависимости: в приложении может не хватать чего-то для работы, и ему для этого нужно другое приложение или библиотека. То есть один пакет начинает зависеть от другого. И удалив, например, одну библиотеку можно нарушить работу сразу нескольких приложений.
Для работы с пакетами и обеспечения целостности системы используются программы, называемые пакетными менеджерами. Они управляют пакетами: устанавливают, удаляют, обновляют, ведут учёт, выводят информацию, отслеживают версии и зависимости и пр.
В ОС МСВСфера пакетным менеджером является DNF.
Так как пакеты зависят друг от друга, то зачастую недостаточно установить только один пакет — нужно устанавливать сразу несколько, поэтому разработчики создают и поддерживают специальные централизованные серверы, называемые репозиториями, где хранятся различные пакеты. Пакетный менеджер видит зависимости каждого пакета, сам находит подходящие пакеты в репозитории и предлагает их установить.
Дистрибутив МСВСфера (очередное обновление - 9.6) имеет набор собственных репозиториев для всех поддерживаемых выпусков и архитектур, в которых содержатся приложения и программы.
Обычно некоторые пакеты, которые часто используют вместе, объединены в группы. Посмотреть список доступных групп поможет пакетный менеджер 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.6)
Рассмотрим репозитории ОС МСВСфера.
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
Вы также можете включать и отключать репозиторий из «Центра приложений».
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-носитель, а затем с него на компьютеры в локальной сети.
Обновление системы с поставляемого iso-образа.
В этом случае все обновления уже включены в состав iso-образа, вам нужно только записать его на USB-носитель, а затем загрузится с него на компьютер в локальной сети.
3.5.2. Создание локального зеркала репозитория ОС МСВСфера
3.5.2.1. Требования
Для создания локального зеркала требуется:
50 Гбайт свободного пространства памяти на жёстком диске;
настроенный HTTP-сервер.
Основное зеркало ОС МСВСфера (очередное обновление - 9.6): 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-носитель к компьютеру с ОС МСВСфера (очередное обновление - 9.6), находящемуся в изолированной среде. Например, если 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
3.5.4. Обновление системы с поставляемого iso-образа
Для обновления системы с поставляемого iso-образа выполните следующие шаги.
Запишите iso-образ с обновлениями на USB-носитель (см. «2.2. Создание загрузочного USB-носителя и запись iso-образа дистрибутива»).
Подключите USB-носитель с iso-образом в систему, например в каталог
/mnt/updates(см. «3.5.3. Создание доверенного USB-носителя»).Затем подключите iso-образ в
/mnt/repos/updatesс помощью команды:$ sudo mount /mnt/updates/ /mnt/repos/updates -o loop
Выполните обновление.
3.6. Графический интерфейс к менеджеру пакетов DNF dnfdragora
3.6.1. Введение
dnfdragora — это удобный графический интерфейс к менеджеру пакетов DNF. Он объединяет надёжность командных инструментов с наглядностью современного приложения, позволяя управлять программами и обновлениями в несколько кликов — без необходимости запоминать команды и параметры.
Этот инструмент подходит как для новичка, так и для опытного администратора: первый получает простую и безопасную навигацию по пакетам, второй — быстрые операции и полный контроль над тем, что и как будет установлено.
С помощью dnfdragora вы можете:
находить и изучать пакеты по названию, описанию и группам;
устанавливать, обновлять и удалять приложения и компоненты системы;
видеть заранее, какие зависимости будут затронуты и какой объём данных потребуется;
гибко фильтровать результаты (по статусу, репозиториям и т.д.);
управлять источниками пакетов (репозиториями) и просматривать историю действий.
3.6.2. Установка
Для установки dnfdragora выполните в «Терминале» следующую команду:
$ sudo dnf install -y dnfdragora
3.6.3. Использование
После установки dnfdragora появится в Arc menu:
При запуске приложение будет анализировать репозитории, которые подключены к ОС, что может занять какое-то время. Как только списки всех пакетов в репозиториях будут сформированы, dnfdragora будет иметь следующий вид:
dnfdragora автоматически группирует приложения в «Категории». Это упрощает навигацию по пакетам.
Выбрав нужный пакет можно посмотреть его зависимости, список файлов внутри исполняемого файла, журнал изменений, описание пакета и даже ссылку на сайт разработчика.
По стандарту dnfdragora выводит архитектуры: i686, x86_64, noarch.
Чтобы отображать в списках только x86_64 и noarch нажмите на «Все», а после выберите «Показывать только x86_64 и noarch».
Чтобы dnfdragora показывал только обновления, в графическом интерфейсе переключитесь только на обновления. Для этого выберите пункт «Обновление».
Выбрав «Обновление» на экране будут только пакеты, которые можно обновить:
Чтобы установить выбранный пакет из списка, отметьте его. Теперь пакет считается помеченным на то или иное действие — в данном случае на обновление. Далее нажмите кнопку «Применить».
dnfdragora покажет полный список изменений в пакетах. Ознакомьтесь и нажмите «Ok». Подтвердив обновление пакета, приложение запросит пароль учётной записи пользователя, а после завершения обновления выведет информацию об успешном или не успешном обновлении пакета.
Также приложение предоставляет возможность в удобном формате просматривать историю обновления/установки/удаления пакетов. Чтобы посмотреть историю перейдите в «Информация» → «История»: