Red Hat System Administration I 8.2

Управление потоками модулей пакетов

Задачи

После завершения этого раздела вы сможете:

  • объяснить, как можно устанавливать определенные версии программного обеспечения с помощью модулей;

  • отобразить, включить и переключить потоки модулей;

  • установить и обновить пакеты из модуля.

Введение в Application Stream

В 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

В 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
   

Примечание

Используйте подсказку (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
   

Чтобы отобразить сведения о модуле, используйте следующую команду:

[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 покажет список пакетов, установленных стандартным профилем модуля из потока по умолчанию. Используйте формат имя-модуля:поток для просмотра конкретного потока модуля. Добавьте опцию --profile для отображения информации о пакетах, установленных каждым из профилей модуля. Пример:

[user@host ~]$ 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!

Примечание

Те же результаты можно получить, выполнив команду yum install @perl. Нотация @ указывает команде yum, что аргумент является именем модуля, а не именем пакета.

Чтобы проверить состояние потока модуля и установленного профиля, выполните следующую команду.

[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!

После удаления модуля его поток все еще включен. Чтобы убедиться, что поток модуля все еще включен, выполните следующую команду.

[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
  

Чтобы отключить поток модуля, выполните следующую команду.

[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!
  

Переключение потоков модуля

Для переключения потоков модуля обычно необходимо понизить или повысить версию содержимого.

Чтобы переключение прошло без проблем, сначала удалите модули, предоставленные потоком модулей. Будут удалены все пакеты, установленные профилями модуля, и все модули и пакеты, от которых зависят эти пакеты.

Выполните следующую команду для отображения списка пакетов, установленных из модуля. В приведенном ниже примере установлен модуль 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

Удалите пакеты, перечисленные предыдущей командой. Отметьте профили модуля, которые нужно удалить.

[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

После удаления профилей модуля выполните сброс потока модуля. Используйте команду 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!

Чтобы включить другой поток модуля и установить модуль, выполните следующую команду.

[user@host ~]$ 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

Модульность