Обзор структуры и особенностей RPM-пакетов в отечественных ОС: ОС ALT, РЭД ОС и Rosa Linux
Автор: Авдеева Т.С., Паршинцева А.Г.
Журнал: Теория и практика современной науки @modern-j
Рубрика: Математика, информатика и инженерия
Статья в выпуске: 12 (114), 2024 года.
Бесплатный доступ
В статье представлен обзор структуры и особенностей RPM-пакетов, которые используются в отечественных операционных системах (ОС) на примере ОС ALT, РЭД ОС и Rosa Linux. Особое внимание уделено инструментам, используемым для работы с rpm в представленных ОС, особенностям сборки, установки и удаления пакетов, структуре spec-файлов. В результате анализа выявлены ключевые различия и сходства между пакетами и представлены в виде таблицы. Работа подчёркивает важность стандартизированных подходов к управлению пакетами и необходимость дальнейших исследований для оптимизации процесса установки и обновления программного обеспечения. Статья будет полезна специалистам в области разработки и сопровождения программного обеспечения, а также исследователям, интересующимся особенностями работы с RPM-пакетами в отечественных ОС.
Rpm-пакет, операционная система, управление пакетами, spec-файл
Короткий адрес: https://sciup.org/140308892
IDR: 140308892
Текст научной статьи Обзор структуры и особенностей RPM-пакетов в отечественных ОС: ОС ALT, РЭД ОС и Rosa Linux
Последние десятилетия в нашей стране наблюдается активное развитие рынка IT в направлении импортозамещения – особенно ощутима необходимость нахождения собственных решений вследствие введения санкций и ограничений на использование некоторых зарубежных программных продуктов в России. Этот процесс является длительным и сложным, однако уже появляются достойные разработки-альтернативы глобальным программным пакетам для использования в критически-важных областях. Linux – семейство ОС с открытым исходным кодом [2]. Благодаря доступности для изменений существует несколько различных версий-редакций ОС, именуемые дистрибутивами и включающие различные варианты программного обеспечения. К основным российским решениям можно отнести: Alt Linux, РЭД ОС, Rosa.
Все из названных ОС используют rpm-пакеты, что позволяет им легко интегрироваться с существующими системами и упрощает процесс установки и обновления ПО, соответствуя принципам простоты и удобства в управлении собственными системами. Эти характеристики делают их привлекательными для пользователей, которые ищут надёжные и функциональные решения, однако методы достижения целей в зависимости от выбранного ОС могут различаться.
Менеджер пакетов
В общем случае для управления программами и поддержания целостности системы используются менеджеры пакетов: с его точки зрения ПО представляет собой набор компонентов — программных пакетов, включающих в себя набор исполняемых программ и вспомогательных файлов, необходимых для корректной работы.
Благодаря подобранному набору программных средств, пользователь Linux не должен обращаться к установочным процедурам отдельных программ или непосредственно работать с каталогами, где установлены исполняемые файлы или компоненты программ [5, C.93].
RPM – один из низкоуровневых менеджеров пакетов, использующийся всех для сборки, проверки, установки, обновления и удаления пакетов с одноимённым названием: они содержат архив с файлами и метаданные, используемые для установки и удаления файлов архива. Метаданные включают сценарии, атрибуты файлов и информацию с описанием конкретного пакета [6].
RPM-пакет представляет собой архив cpio, включающий в себя скомпилированные исполняемые файлы в виде библиотек и данных, а также заголовок, который содержит в себе метаданные о пакете (название, версия, группа и т.п.), используемые для определения зависимостей и локализации файлов.
Различают два вида пакетов RPM [7]:
-
• Пакет с исходным кодом — SRPM-пакет (.src.rpm), содержащий один или несколько архивов с исходными кодами, spec-файл, а также различные патчи и дополнения. Такие пакеты используются разработчиками для создания двоичных пакетов и не предназначены для установки.
Структура RPM-пакета Red Hat приведена на Рисунке 1:
rpmbuild/ |— BUILD |— RPMS |— SOURCES |--- SPECS
1-- SRPMS
Рисунок 1 – Структура каталогов rpm RH
Пакет является крайне гибким, потому его можно пересобрать в любом другом дистрибутиве на основе RPM и в любой другой архитектуре.
Spec-файл в данном случае можно рассматривать как ключевой элемент, определяющий «правила», написанные в специальном текстовом формате и использующиеся для фактической сборки RPM-пакета: он определяет все действия, которые должны быть выполнены при управлении пакетами. Синтаксические определения внутри spec-файла имеют значения, задающие порядок сборки, номер версии, информацию о зависимостях и вообще всю информацию о пакете, которая может быть впоследствии запрошена из БД RPM. Пример типового файла spec представлен на Рисунке 2.

Рисунок 2 – spec-файл screenlib ОС ALT
Он содержит в себе преамбулу(заголовок) и тело спецификации, содержащая основную часть инструкций согласно общепринятому стандарту.
Собранный двоичный пакет — RPM-пакет (.rpm), содержащий файлы, полученные из исходников и патчей в соответствии со спецификацией, позволяющей системе RPM правильно установить и настроить приложение. По своей сути именно двоичные пакеты являются готовыми к установке приложениями, возникшие на базе SRPM-пакета. В результате пользователи получают полностью готовое к использованию программное обеспечение, которое можно легко установить и настроить без необходимости вручную собирать и настраивать компоненты.
RPM позволяет работать с репозиториями и получать сведения о количестве пакетов в системе. Для просмотра списка установленных пакетов можно использовать команду rpm -qa.
Основные команды менеджера RPM (Red Hat):
-
• Установка пакета: rpm install имя_пакета
-
• Обновления пакета:
-
a) С принудительной установкой: rpm -Uvh имя_пакета
-
b) Без принудительной установки: rpm -Fvh имя_пакета
-
• Обновление всех установленных пакетов : rpm -U или rpm -F
-
• Удаление пакета: rpm -e имя_пакета
Рассмотрим основные особенности работы с rpm-пакетами в отечественных ОС.
OC ALT — набор российских ОС, основанных на RPM, построенных поверх ядра Linux и репозитория Sisyphus [1].
-
1) обширный набор макросов для сборки пакетов различного назначения:
-
а) патчи для повышения безопасности могут закрывать выявленные уязвимости, что особенно актуально для систем, работающих в открытых сетях;
-
б) патчи улучшения производительности часто включают оптимизации кода, что позволяет использовать ресурсы системы более эффективно;
-
в) обеспечение совместимости: иногда новые версии библиотек могут нарушить работу старых приложений – патчи помогают поддерживать необходимую функциональность.
В настоящее время информация о них полностью описана исключительно в самих файлах с определениями макросов, которые можно найти в каталогах /usr/lib/rpm и /etc/rpm/macros.d.
-
2) отличающееся поведение сценария «по умолчанию»: позволяет упростить процесс создания конфигурационных файлов для сборки пакетов и уменьшить вероятность ошибок при создании spec-файлов прямо пропорционально количеству повторяющегося кода путём предоставления готовых шаблонов и настроек.
-
3) ОС ALT есть свои особенности в поведении самого rpm – при сборке SRPM-пакета через rpmbuild возникают очевидные сложности [4, C.23]: установка сборочных зависимостей вручную – на рабочей системе можно упустить необходимое и достаточное количество зависимостей и засорение системы.
Чтобы избежать этих сложностей, в Альт Платформа используется две технологии [9]: Hasher (для сборки в изолированном окружении), Gear (для сборки пакетов из репозитория).
Еще одной интересной особенностью и решением приведённых проблем всех ALT-систем является использование в качестве пакетного менеджера по умолчанию APT, что обеспечивает совместимость с Debian и всех основанных на нём ОС.
Apt предлагает простые команды для установки, обновления и удаления пакетов, что делает его интуитивно понятным. Так решение проблем с установлением зависимостей решается командой apt-get update.
Также данный менеджер пакетов позволяет управлять пакетами через один интерфейс, что упрощает администрирование системы: в управление же используются репозитории, что обеспечивает актуальность программного обеспечения.
Основные команды:
-
• Установка пакета: apt-get install имя_пакета
-
• Обновления уже установленного пакета или группы пакетов: apt-get install
-
• Обновление всех установленных пакетов : apt-get upgrade
-
• Удаление пакета: apt-get remove имя_пакета
РЕД ОС — ОС семейства Linux, построенная на пакетной базе RPM-формата и соответствующая требованиям POSIX и LSB 4.1 (Linux Standard Base) [8]. Для автоматизации процесса управления программными продуктами в РЕД ОС в большем количестве случаев применяется система управления пакетами DNF.
Фактически, DNF представляет из себя оболочку rpm, обеспечивающую работу с репозиториями, который умеет запрашивать информацию о пакетах, получать пакеты из репозиториев, устанавливать и удалять их, используя автоматическое разрешение зависимостей, а также обновлять целиком систему до последних версий пакетов, аналогично APT в ОС ALT.
В случае обновления уже установленного пакета или группы пакетов дополнительно проверяет, не обновилась ли версия пакета в репозитории по сравнению с установленным в системе. Dnf update используется для обновления отдельных пакетов в системе, а именно позволяет установить новые версии пакетов, заменить старые версии на более новые или обновить пакеты до последних доступных версий. Dnf upgrade выполняет более широкий спектр действий: не только обновляет отдельные пакеты, но ещё проверяет наличие доступных обновлений для всей системы в целом – если система может быть обновлена, команда выполнит это обновление.
С его помощью можно установить и отдельный бинарный rpm-пакет, не входящий ни в один из репозиториев (например, полученный из Интернет). Для того, чтобы не нарушать целостность системы, будут удалены и все пакеты, зависящие от удаляемого. [9]
Основные команды:
-
• Установка пакета выполняется командой: dnf install <имя_пакета>.
-
• Проверка наличия обновлений системы: dnf check-update
-
• Обновления отдельного пакета: dnf update <имя_пакета>
-
• Обновление всех установленных пакетов : apt-get upgrade
-
• Обновление всех системных пакетов: dnf update или dnf upgrade
-
• Обновление группы пакетов: dnf groupupdate
-
• Удаление пакета: dnf remove <имя_пакета>.
Rosa Linux — линейка дистрибутивов Linux (изначально основанных на Mandriva), разработку которых ведёт российская компания «НТЦ ИТ РОСА». На «ROSA Linux» основаны проекты Mag ОС Linux [3].
Управление программными пакетами осуществляется с помощью утилит командной строки rpm и dnf.
Стоит отметить, что в ROSA не рекомендуется явно указывать упаковщика и поставщика в спецификации – эти теги устанавливаются автоматически системой сборки ABF.
Так как нет специфического менеджера пакета (DNF рассмотрен ранее).
Сравнение
В Таблице 1 приведено сравнение особенностей rpm-пакетов и работы с ними в рассмотренных ОC.
ОС ALT |
РЭД ОС |
ROSA LINUX |
RED HAT |
|
Инструменты для работы с rpm пакетами |
|
|
1. RPM |
|
Структура каталогов |
~/rpm/BUILD — каталог для собранных исходников; ~/rpm/tmp — для временных файлов, которые создаются программой rpm во время сборки пакетов; 1 ~/rpm/RPMS — каталоги для различных архитектур, для которых планируется выполнять сборку (обычно это i586 или x86_64, но может быть также sparc, alpha или ppc). |
BUILD — содержит все файлы, появляющиеся при сборке пакета. RPMS — здесь появятся готовые бинарные пакеты (расширение .rpm). SOURCES — здесь должны находиться исходники, из которых и будут собираться RPM-пакеты. SPECS — папка для хранения spec-файла, который описывает |
%_topdir — каталог верхнего уровня, содержащий в себе стандартную иерархию каталогов RPM, в которой производится сборка пакета. По умолчанию значение этого макроса равно $HOME/RPM; %_sourcedir — макрос, указывающий на каталог с исходными кодами программы, собираемой в пакет. Значение по умолчанию — %_topdir/SOUR CES; |
~/rpm/BUILD для собранных исходников. ~/rpm/RPMS каталоги для разных архитектур, куда кладутся бинарные пакеты после сборки ~/rpm/RPMS/i 586 — каталог для хранения rpm-пакетов для процессоров i586; ~/rpm/RPMS/ x86_64 каталог для хранения rpm-пакетов для |
процесс сборки. SRPMS — здесь находятся пакеты с исходниками (расширение .src.rpm). |
%_specdir — каталог, содержащий spec-файл. Значение по умолчанию — %_topdir/SPEC S; 1 %_srcrpmdir — каталог, в котором будет содержаться собранный пакет с исходным кодом (src.rpm). Значение по умолчанию — %_topdir/SRPM S; 1 %_rpmdir/%_a rch — каталог, содержащий подкаталоги с именами различных архитектур (%_arch), для которых производится сборка пакета. Собранный бинарный пакет будет помещён в один из этих подкаталогов. Значение макроса %_rpmdir по умолчанию — %_topdir/RPMS. |
процессоров x86_64; ~/rpm/RPMS/ noarch — каталог для хранения rpm-пакетов, не зависящих от архитектуры процессора. ~/rpm/SOURC ES. файлы исходного кода. ~/rpm/SPECS. В этом каталоге хранятся спек-файлы. ~/rpm/SRPMS . Каталог src.rpm-пакетов. ~/rpm/tmp. Здесь находятся временные файлы. |
Сборка пакета |
|
Пакеты RPM создаются с помощью утилиты rpmbuild. |
1. Утилита rpmbuild 2. Автоматическа я система сборки ABF |
Утилита rpmbuild |
Права для сборки |
По умолчанию сборка rpm-пакетов запрещена суперпользователю (root) с целью повышения безопасности. Рекомендуется проводить сборку с правами непривилегированного пользователя, поскольку при сборке с правами root имеется высокая вероятность повреждения системы. |
|||
Ошибки при сборке |
В некоторых случаях сборка может быть автоматически прервана, и в результате могут быть удалены только те файлы, которые уже были созданы в процессе сборки, но не были установлены на систему. В других случаях могут быть удалены как созданные, так и установленные файлы. |
При неправильной инсталляции пакета, когда он ставится не во временный каталог есть вероятность, что часть файлов будет потеряна. Также при ошибке «Installed (but unpackaged) file(s) found» это может означать, что в новой версии пакета появились новые файлы, отсутствующие ранее, и rpmbuild не |
При ошибке сборки пакета RPM в Rosa все файлы, созданные командой rpmbuild, не удаляются — так же, как и при успешной сборке. Чтобы быстро удалять эти файлы, можно создать скрипт cleanup.sh и поместить его в папку ~/rpmbuild/SPE CS. |
Если пакет собран через rpm с ошибками, то все файлы, созданные командой rpmbuild, не удаляются — так же, как и при успешной сборке. |
знает, что с ними делать. Если эти файлы нужны, их необходимо добавить в секцию %files spec-файла. |
||||
Установка или обновление пакета |
Установка пакета с помощью APT выполняется с помощью утилиты apt-get, используется и для обновления уже установленного пакета или группы пакетов. В этом случае apt-get дополнительно проверяет, не обновилась ли версия пакета в репозитории по сравнению с установленным в системе. |
Установка пакета выполняется командой: dnf install <имя_пакета> DNF позволяет устанавливать в систему пакеты, требующие для работы другие, пока ещё не установленные. В этом случае они определяют, какие пакеты необходимо установить, и устанавливают их, пользуясь всеми доступными репозиториями. |
Осуществляетс я с помощью менеджера DNF командой sudo dnf install <имя_пакета> |
Установка пакета: rpm install имя_пакета Обновления пакета:
принудительн ой установкой: rpm -Uvh имя_пакета
принудительн ой установки: rpm -Fvh имя_пакета Обновление всех установленны х пакетов: rpm -U или rpm -F |
Необходимость удаления файлов предыдущей версии |
При сборке новой версии RPM- пакета в ОС ALT не обязательно удалять предыдущие файлы, так как для обновления можно использовать команду apt-get, которая проведёт сравнение системы с репозиторием и удалит устаревшие пакеты, установив новые версии. |
В большинстве случаев удалять предыдущие версии не требуется. Однако, при сборке пакета, зависящего от предыдущих версий программы, могут возникнуть конфликты версий и проблемы с установкой. В таких случаях может потребоваться удалить предыдущие версии перед установкой новой. |
При сборке новой версии RPM-пакета для Rosa Linux рекомендуется удалять предыдущие файлы. |
Удаление прошлых версий пакетов в RPM не обязательно, так как после обновления любого пакета программа автоматическ и сохранит резервную копию старой его версии. Однако принудительн ое удаление пакета без учёта зависимостей может поломать работу других пакетов в ОП. |
Удаление установленного пакета |
Для удаления пакета используется команда apt-get remove имя_ пакета. Для того чтобы не нарушать целостность системы, будут удалены и все пакеты, зависящие от удаляемого. В случае удаления пакета, который |
Для удаления пакета используется следующая команда: dnf remove <имя_пакета> Для того чтобы не нарушать целостность системы, будут удалены и все пакеты, |
Для удаления RPM-пакетов в Rosa Linux можно использовать инструмент urpme. Также для удаления пакетов в дистрибутиве ROSA платформы 2021.1 и новее можно |
Удаление пакета: rpm -e имя_пакета |
относится к базовым компонентам системы, apt-get потребует дополнительного подтверждения производимой операции с целью предотвратить возможную случайную ошибку. |
зависящие от удаляемого. |
использовать пакетный менеджер dnf. |
||
Внутри spec-файла |
||||
Name – базовое имя пакета |
Выбирается, исходя из названия главного бинарного пакета. |
Имя не должно содержать пробелов, табуляций и символов новой строки. Однако, допустимо использовать дефис. |
||
Version – номер версии программного обеспечения |
Версия upstream-кода. |
|||
Release |
Должно иметь вид в простых случаях — altN, а в сложных — altN[с уффикс]. |
Увеличивается с каждой новой сборкой пакета, которая может быть связана с применением дополнительны х патчей, изменениями внесёнными в spec-файл и даже тривиальным |
Как правило, при первой сборке конкретной версии пакета значение устанавливается равным 1 и увеличивается на единицу с каждой новой сборкой пакета. После цифры указывают суффикс макросом %{?dist} |
обновлением пиктограммы. |
||||
Summary – краткое описание пакета |
Значение тэга Summary должно начинаться с заглавной буквы. В конце Summary не должно быть точки |
Для задания национальны х описаний |
||
License |
Лицензия должна быть указана в точности так, как сформулировано в upstream-пакете |
Лицензия, под которой распространяется программа (обычно указано в самом пакете). Раньше в ходу был также тег Copyright, но сейчас он не используется. |
||
URL |
В тэге Url настоятельно рекомендуется указывать действующий URL домашней страницы проекта, либо если таковой нет — любого другого места, где можно получить архив с исходным кодом. |
|||
%description |
Произвольное количество строк и параграфов. Текст содержит полное описание программного обеспечения, которое помогает пользователю решить нужно ли устанавливать данный пакет или нет. |
|||
Source |
Если сборка производится без использования gea r, то в Source настоятел ьно рекомендуется указывать действующий. |
Исходные тексты, тарболы, просто файлы. Рекомендуется указывать. |
||
Раздел подготовки к сборке (prep) |
%prep %setup распаковывает исходный код перед компиляцией. |
%prep Команды для подготовки программного обеспечения к сборке, например, распаковка архива, указанного в Source или So urce0. |
%prep %setup -q -a 1 Это встроенный макрос, который выполняет следующие действия: переходит в дерево сборки; распаковыва ет исходный |
%prep %setup -q |
код (-q означает, что распаковка сопровожда ется минимальн ым выводом информации ); изменяет владельца и права доступа к файлам с исходным кодом. %patch0 -p1 Макрос, ответственный за применение патчей к исходникам. |
||||
Раздел сборки |
%build %configure %make_build |
%build %configure %make |
||
Команды установки/копир ования файлов из сборочного каталога в псевдо-корневую директорию |
%install |
%install %makeinstall |
||
%files |
Список файлов для каждого двоичного пакета (если их создаётся несколько по одной спецификации), которые будут установлены в системе конечного пользователя. |
Список файлов должен быть написан в spec-файле вручную. Он может быть создан из списка файлов, |
Список должен быть исчерпываю щим, чтобы утилита точно знала, что именно |
созданных программой rpm в дереве каталога сборки. |
пакет устанавливае т. |
||
Spec-cleaner удаляет устаревшие и ненужные декларации — buildroot; |
|||
а также изменяет оформление использования |
|||
макросов и переменных %{ const}, %{macro }. Такие |
|||
%clean |
автоматически очищает BuildRoot пакета (с помощью макроса %clean_buildroot). Таким образом, ручная очистка BuildRoot является ненужной |
изменения производятся только для макросов и переменных, определенных в самом rpm (а точнее, перечисленных непосредственн о в скрипте). Также Spec cleaner способен производить замену устаревших версий макросов на современные аналоги. |
%clean rm -rf $RPM_BUIL D_ROOT |
Список изменений, произошедших в пакете между сборками разных версий или релизов %changelog |
автоматически подставляет в начало каждой секции %files и в начало каждого файла, включаемого с помощью %files -f, директиву %defatt r со значением макроса %_defattr. Таким образом, ручное указание %defattr является излишним. |
В changelog'е вы указывает изменения в пакете по сравнению с предыдущей версией. Синтаксис его примерно следующий: %changelog * День недели Месяц День Год Имя <Почта> -2.4.8-4 - update desktop patch |
Заключение
В данной статье был представлен обзор особенностей и структуры RPM-пакетов в отечественных ОС — ОС ALT, РЭД ОС и Rosa Linux.
Все три дистрибутива используют RPM-пакеты как основной формат для распространения программного обеспечения, однако с различиями в подходах к сборке, установке и обслуживанию пакетов.
Ключевыми инструментами для работы с RPM-пакетами в рассматриваемых дистрибутивах являются системы управления пакетами, такие как APT и DNF. Они упрощают процесс управления программным обеспечением, позволяя автоматически разрешать зависимости, что значительно повышает удобство и безопасность установки и обновления пакетов. Spec-файлы, хотя и имеют схожую структуру, могут различаться в зависимости от особенностей работы с пакетами, используемых макросов. В целом, работа с RPM-пакетами в отечественных дистрибутивах Linux предполагает определенные сложности и нюансы, однако при правильном подходе и использовании современных инструментов управления пакетами это становится более управляемым процессом.
Список литературы Обзор структуры и особенностей RPM-пакетов в отечественных ОС: ОС ALT, РЭД ОС и Rosa Linux
- ALT Linux / [Электронный ресурс] // Википедия: [сайт]. - URL: https://en.wikipedia.org/wiki/ALT_Linux (дата обращения: 26.10.2024).
- Linux (стабильная версия, проверенная 25 октября 2024) / [Электронный ресурс] // Википедия: [сайт]. - URL: https://ru.wikipedia.org/wiki/Linux (дата обращения: 15.10.2024).
- Rosa Linux / [Электронный ресурс] // РУВИКИ: [сайт]. - URL: https://ru.ruwiki.ru/wiki/Rosa_Linux (дата обращения: 26.11.2024).
- АЛЬТ ПЛАТФОРМА Руководство пользователя Ред. 1.0 / [Электронный ресурс] // ООО "БАЗАЛЬТ СПО": [сайт]. - URL: https://www.basealt.ru/fileadmin/user_upload/manual/ALT_Platform_guide.pdf?ysclid=m3d4cssi9z186786882 (дата обращения: 1.11.2024).
- Д. Аленичев, А. Боковой, А. Бояршинов, В. Виниченко, А. Колотов, Г. Курячий, Д. Левин, К. Маслинский, М. Отставнов, А. Смирнов, М. Уэлш (M. Welsh) и др. ALT Linux изнутри [Текст] / Дмитрий Аленичев, Александр Боковой, Антон Бояршинов, Вадим Виниченко, Александр Колотов, Георгий Курячий, Дмитрий Левин, Кирилл Маслинский, Максим Отставнов, Алексей Смирнов, Мэтт Уэлш (Matt Welsh) и др. - в серии: Библиотека ALT Linux. - Москва: Издательский дом ДМК-пресс, 2006 - 410 c.
- Назначение RPM / [Электронный ресурс] // РЭДОС: [сайт]. - URL: https://redos.red-soft.ru/base/redos-7_3/7_3-base-consept/7_3-sys-dnf/7_3-manag-pack-rpm/7_3-rpm-view/?nocache=1729587239505 (дата обращения: 25.10.2024).
- Построение пакета RPM для Rosa Linux на практике / [Электронный ресурс] // ХАБР: [сайт]. - URL: https://habr.com/ru/articles/464993/(дата обращения: 28.11.2024).
- Работа с пакетами. RPM-пакет / [Электронный ресурс] // AltLinix: [сайт]. - URL: https://docs.altlinux.org/ru-RU/alt-platform/10.0/html/alt-platform/ch05.html (дата обращения: 25.10.2024).
- РЕД ОС / [Электронный ресурс] // РЕДОС: [сайт]. - URL: https://redos.red-soft.ru/product/red-os/?ysclid=m34ws4iu88855697294 (дата обращения: 26.10.2024). Уймин, А. Г. Демонстрационный экзамен базового уровня. Сетевое и системное администрирование: Практикум. Учебное пособие для вузов /А. Г. Уймин. - Санкт-Петербург: Издательство "Лань", 2024. - 116 с. - (Высшее образование). ISBN: 978-5-507-48647-2 EDN: BZJRIQ