После завершения этого раздела вы сможете:
объяснить, как можно устанавливать определенные версии программного обеспечения с помощью модулей;
отобразить, включить и переключить потоки модулей;
установить и обновить пакеты из модуля.
В Red Hat Enterprise Linux 8.0 появилась концепция потоков приложений ― Application Stream. Различные версии компонентов пользовательского пространства, поставляемых с дистрибутивом, теперь предоставляются одновременно. Они могут обновляться чаще, чем основные пакеты операционной системы. Это дает больше возможностей для настройки Red Hat Enterprise Linux и не влияет на базовую стабильность платформы и конкретных развертываний.
Традиционно управление альтернативными версиями программного пакета приложения и связанных с ним пакетов означало ведение разных репозиториев для каждой отдельной версии. Это создавало значительные трудности для разработчиков, которым требовалась последняя версия приложения, и администраторов, которым требовалась наиболее стабильная версия приложения. В Red Hat Enterprise Linux 8 этот процесс упрощен с помощью новой технологии ― модульность (Modularity). Модульность позволяет разместить в одном репозитории несколько версий пакета приложения и его зависимостей.
Содержимое Red Hat Enterprise Linux 8 распространяется через два основных репозитория программного обеспечения: BaseOS и Application Stream (AppStream).
BaseOS
Репозиторий BaseOS предоставляет основное содержимое операционной системы для Red Hat Enterprise Linux в виде пакетов RPM. Компоненты BaseOS имеют жизненный цикл, идентичный жизненному циклу предыдущих выпусков Red Hat Enterprise Linux.
Application Stream
Репозиторий Application Stream предоставляет содержимое с различными жизненными циклами в виде модулей и традиционных пакетов. Application Stream содержит необходимые части системы, а также широкий спектр приложений, которые ранее были доступны в составе Red Hat Software Collections и других продуктов и программ.
И BaseOS и AppStream являются необходимой частью системы Red Hat Enterprise Linux 8.
В репозитории Application Stream представлено два типа содержимого: модули и традиционные пакеты RPM. Модуль описывает набор пакетов RPM, которые связаны друг с другом. Модули могут содержать несколько потоков, чтобы сделать несколько версий приложений доступными для установки. Включение потока модуля дает системе доступ к пакетам RPM в этом потоке модуля.
Модуль — это набор связанных друг с другом пакетов RPM. Как правило, модуль выстроен вокруг определенной версии приложения или языка программирования. Типичный модуль может содержать пакеты с приложением, пакеты с конкретными библиотеками зависимостей приложения, пакеты с документацией для приложения и пакеты со вспомогательными утилитами.
Потоки модуля
У каждого модуля может быть один или несколько потоков, в которых размещаются разные версии содержимого. Каждый поток получает обновления независимо. Поток модуля можно представить как виртуальный репозиторий в физическом репозитории Application Stream.
Для каждого модуля можно включить только один из его потоков, из которого извлекаются пакеты.
Профили модуля
У каждого модуля может быть один или несколько профилей. Профиль — это список определенных пакетов, которые должны быть установлены вместе для определенного сценария использования, например для сервера, клиента, разработки, минимальной установки и т. д.
Установка определенного профиля модуля просто приводит к установке определенного набора пакетов из потока модуля. Впоследствии вы можете устанавливать и удалять пакеты обычным образом. Если не указать профиль, модуль установит профиль по умолчанию.
В Yum 4 (это новая версия в Red Hat Enterprise Linux 8) добавлена поддержка новых модульных функций Application Stream.
Для работы с модульным содержимым была добавлена команда yum module. В остальном утилита yum работает с модулями как с обычными пакетами.
Отображение списка модулей
Для отображения списка доступных модулей используйте команду yum module list.
[user@host ~]$ yum module list Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs) Name Stream Profiles Summary 389-ds 1.4 default 389 Directory Server (base) ant 1.10 [d] common [d] Java build tool container-tools 1.0 [d] common [d] Common tools and dependencies for container runtimes ...output omitted... Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
[user@host ~]$
yum module list
Используйте подсказку (Hint) в конце вывода, чтобы определить, какие потоки и профили включены, отключены и установлены, а также какие из них применяются по умолчанию.
Чтобы отобразить список потоков для определенного модуля и получить их состояние, используйте следующую команду:
[user@host ~]$ yum module list perl Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs) Name Stream Profiles Summary perl 5.24 common [d], minimal Practical Extraction and Report Language perl 5.26 [d] common [d], minimal Practical Extraction and Report Language
yum module list perl
Чтобы отобразить сведения о модуле, используйте следующую команду:
[user@host ~]$ yum module info perl Name : perl Stream : 5.24 Version : 820190207164249 Context : ee766497 Profiles : common [d], minimal Default profiles : common Repo : rhel-8-for-x86_64-appstream-rpms Summary : Practical Extraction and Report Language ...output omitted... Artifacts : perl-4:5.24.4-403.module+el8+2770+c759b41a.x86_64 : perl-Algorithm-Diff-0:1.1903-9.module+el8+2464+d274aed1.noarch : perl-Archive-Tar-0:2.30-1.module+el8+2464+d274aed1.noarch ...output omitted...
yum module info perl
Если не указать поток модуля, команда yum module info покажет список пакетов, установленных стандартным профилем модуля из потока по умолчанию. Используйте формат имя-модуля:поток для просмотра конкретного потока модуля. Добавьте опцию --profile для отображения информации о пакетах, установленных каждым из профилей модуля. Пример:
yum module info
имя-модуля:поток
--profile
[user@host ~]$ yum module info --profile perl:5.24
yum module info --profile perl:5.24
Включение потоков модулей и установка модулей
Чтобы установить модуль, необходимо включить потоки модуля. Для упрощения этого процесса во время установки модуль включает соответствующий поток. Потоки модуля можно включить вручную с помощью команды yum module enable, указав имя соответствующего потока.
Для конкретного модуля можно включить только один поток. Включение дополнительного потока приведет к отключению исходного потока.
Чтобы установить модуль с использованием профилей и потока по умолчанию, выполните следующую команду.
[user@host ~]$ sudo yum module install perl Dependencies resolved. ================================================================================ Package Arch Version Repository Size ================================================================================ Installing group/module packages: perl x86_64 4:5.26.3-416.el8 rhel-8-for-x86_64-appstream-htb-rpms 72 k Installing dependencies: ...output omitted... Running transaction Preparing : 1/1 Installing : perl-Exporter-5.72-396.el8.noarch 1/155 Installing : perl-Carp-1.42-396.el8.noarch 2/155 ...output omitted... Installed: perl-4:5.26.3-416.el8.x86_64 perl-Encode-Locale-1.05-9.el8.noarch ...output omitted... Complete!
sudo yum module install perl
Те же результаты можно получить, выполнив команду yum install @perl. Нотация @ указывает команде yum, что аргумент является именем модуля, а не именем пакета.
yum install @perl
Чтобы проверить состояние потока модуля и установленного профиля, выполните следующую команду.
[user@host ~]$ yum module list perl Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs) Name Stream Profiles Summary perl 5.24 common, minimal Practical Extraction and Report Language perl 5.26 [d][e] common [i], minimal Practical Extraction and Report Language Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Удаление модулей и отключение потоков модуля
При удалении модуля удаляются все пакеты, установленные профилями текущего включенного потока, а также все дополнительные пакеты и модули, которые от них зависят. Пакеты, установленные из этого потока и не указанные ни в одном из его профилей, остаются установленными в системе, и их можно удалить вручную.
Удалять модули и переключать их потоки может быть немного сложно. Переключение потока, включенного в модуле, эквивалентно сбросу текущего потока и включению нового потока. Переключение не приводит к автоматическому изменению установленных пакетов. Это следует делать вручную.
Напрямую устанавливать поток модуля, отличный от уже установленного, не рекомендуется, поскольку во время установки могут выполняться сценарии обновления, а это может привести к сбоям в исходном потоке модуля. Результатом может стать потеря данных или возникновение других проблем с конфигурацией.
Действуйте осторожно.
Чтобы удалить установленный модуль, выполните следующую команду.
[user@host ~]$ sudo yum module remove perl Dependencies resolved. ================================================================================ Package ArchVersion Repository Size ================================================================================ Removing: perl x86_644:5.26.3-416.el8 @rhel-8.0-for-x86_64-appstream-rpms 0 Removing unused dependencies: ...output omitted... Running transaction Preparing : 1/1 Erasing : perl-4:5.26.3-416.el8.x86_64 1/155 Erasing : perl-CPAN-2.18-397.el8.noarch 2/155 ...output omitted... Removed: perl-4:5.26.3-416.el8.x86_64 dwz-0.12-9.el8.x86_64 ...output omitted... Complete!
sudo yum module remove perl
После удаления модуля его поток все еще включен. Чтобы убедиться, что поток модуля все еще включен, выполните следующую команду.
[user@host ~]$ yum module list perl Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs) Name Stream Profiles Summary perl 5.24 common [d], minimal Practical Extraction and Report Language perl 5.26 [d][e] common [d], minimal Practical Extraction and Report Language Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
[e]
Чтобы отключить поток модуля, выполните следующую команду.
[user@host ~]$ sudo yum module disable perl ...output omitted... Dependencies resolved. ================================================================================= Package Arch Version Repository Size ================================================================================= Disabling module streams: perl 5.26 Is this ok [y/N]: y Complete!
sudo yum module disable perl
y
Переключение потоков модуля
Для переключения потоков модуля обычно необходимо понизить или повысить версию содержимого.
Чтобы переключение прошло без проблем, сначала удалите модули, предоставленные потоком модулей. Будут удалены все пакеты, установленные профилями модуля, и все модули и пакеты, от которых зависят эти пакеты.
Выполните следующую команду для отображения списка пакетов, установленных из модуля. В приведенном ниже примере установлен модуль postgresql:9.6.
[user@host ~]$ sudo yum module info postgresql | grep module+el8 | \ sed 's/.*: //g;s/\n/ /g' | xargs yum list installed Installed Packages postgresql.x86_64 9.6.10-1.module+el8+2470+d1bafa0e @rhel-8.0-for-x86_64-appstream-rpms postgresql-server.x86_64 9.6.10-1.module+el8+2470+d1bafa0e @rhel-8.0-for-x86_64-appstream-rpms
sudo yum module info postgresql | grep module+el8 | \
sed 's/.*: //g;s/\n/ /g' | xargs yum list installed
Удалите пакеты, перечисленные предыдущей командой. Отметьте профили модуля, которые нужно удалить.
[user@host ~]$ sudo yum module remove postgresql ...output omitted... Is this ok [y/N]: y ...output omitted... Removed: postgresql-server-9.6.10-1.module+el8+2470+d1bafa0e.x86_64 libpq-10.5-1.el8.x86_64 postgresql-9.6.10-1.module+el8+2470+d1bafa0e.x86_64 Complete
sudo yum module remove postgresql
После удаления профилей модуля выполните сброс потока модуля. Используйте команду yum module reset для сброса потока модуля.
[user@host ~]$ sudo yum module reset postgresql ================================================================= Package Arch Version Repository Size ================================================================= Resetting module streams: postgresql 9.6 Transaction Summary ================================================================= Is this ok [y/N]: y Complete!
sudo yum module reset postgresql
Чтобы включить другой поток модуля и установить модуль, выполните следующую команду.
[user@host ~]$ sudo yum module install postgresql:10
sudo yum module install postgresql:10
Новый поток модуля будет включен, а текущий ― отключен. Может потребоваться повысить или понизить версию пакетов из предыдущего потока, которые не указаны в новом профиле. Используйте команду yum distro-sync, чтобы выполнить эту задачу, если потребуется. В системе могут остаться пакеты, установленные из предыдущего потока модуля. Удалите их с помощью команды yum remove.
Дополнительные сведения см. в главе Using AppStream руководства Red Hat Enterprise Linux 8 Installing, managing, and removing user space components: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/installing_managing_and_removing_user-space_components/index#using-appstream_using-appstream
Модульность