1. Что такое Application Streams?

Application Streams — это механизм в RHEL 8, который позволяет разделять пользовательское ПО (приложения, языки программирования, базы данных и т.д.) на независимые модульные потоки. Каждый поток представляет определённую версию программы, которая может быть установлена и использована параллельно с другими версиями того же ПО. Это решает проблему, когда разные приложения требуют разных версий одной и той же зависимости.

  • Пример: В RHEL 8 можно установить Python 3.6, 3.8 или 3.9 одновременно, в зависимости от требований конкретного проекта.
  • Цель: Обеспечить гибкость в выборе версий ПО, не привязываясь к единственной версии, зафиксированной в основном репозитории, как это было в CentOS 7.

2. Основные характеристики AppStreams

  • Модули и потоки:
  • Модуль: Это логическая группа пакетов, связанных с конкретным приложением или компонентом (например, PostgreSQL, Node.js).
  • Поток (Stream): Конкретная версия модуля (например, PostgreSQL 10, PostgreSQL 12). Каждый поток имеет свой жизненный цикл и обновления.
  • Пользователь может включить один поток для модуля, чтобы установить нужную версию, или переключиться на другой поток позже.
  • Профили:
  • Каждый модуль может иметь несколько профилей, определяющих, какие пакеты из модуля будут установлены. Например, для PostgreSQL профиль может быть «сервер» или «клиент».
  • Пример: dnf module install postgresql:13/server устанавливает серверную версию PostgreSQL 13.
  • Параллельная установка:
  • Разные потоки одного модуля могут сосуществовать на одной системе, если они не конфликтуют. Например, можно установить Node.js 14 и Node.js 16 одновременно.
  • Независимость от ОС:
  • AppStreams изолированы от основного жизненного цикла RHEL 8, что позволяет обновлять версии приложений независимо от операционной системы. Например, новый поток Python может появиться без необходимости обновления всей ОС.

3. Как это работает?

AppStreams интегрированы с менеджером пакетов DNF (Dandified Yum) в RHEL 8. Для управления модулями используются команды dnf module. Основные действия:

  • Просмотр доступных модулей:
  dnf module list

Выводит список всех модулей и их потоков (например, python36:3.6, python38:3.8, postgresql:10, postgresql:13).

  • Включение потока:
  dnf module enable postgresql:13

Активирует поток PostgreSQL 13, делая его пакеты доступными для установки.

  • Установка модуля:
  dnf module install postgresql:13/server

Устанавливает сервер PostgreSQL версии 13.

  • Переключение между потоками:

Если нужно сменить версию (например, с PostgreSQL 10 на 13), можно отключить текущий поток и включить новый, после чего обновить пакеты.

4. Примеры модулей в RHEL 8

Вот несколько популярных модулей, доступных в RHEL 8:

  • Python: Потоки для версий 3.6, 3.8, 3.9, 3.11 (в зависимости от обновлений).
  • PostgreSQL: Потоки для версий 9.6, 10, 12, 13, 15.
  • Node.js: Потоки для версий 10, 12, 14, 16, 18.
  • Ruby: Потоки для версий 2.5, 2.7, 3.0.
  • PHP: Потоки для версий 7.2, 7.4, 8.0.

Каждый поток обновляется в рамках своего жизненного цикла, который может быть короче или длиннее, чем у RHEL 8.

5. Сравнение с CentOS 7

В CentOS 7 отсутствует концепция модульности, и управление версиями ПО происходит иначе:

  • Фиксированные версии:
  • В CentOS 7 репозитории содержат только одну версию каждого пакета (например, Python 2.7 или PostgreSQL 9.2). Для установки другой версии нужно подключать сторонние репозитории (например, EPEL или Software Collections, SCL).
  • Это усложняет управление зависимостями, особенно если разные приложения требуют разных версий одного ПО.
  • Software Collections (SCL):
  • CentOS 7 использует SCL для предоставления альтернативных версий ПО (например, Python 3.6 или PostgreSQL 9.6). Однако SCL:
  • Требует сложной настройки (например, активации через scl enable).
  • Не поддерживает параллельную установку без дополнительных манипуляций.
  • Менее интегрирован с системой, чем AppStreams.
  • Ограниченная гибкость:
  • В CentOS 7 нет встроенного механизма для переключения между версиями ПО без удаления и переустановки пакетов.
  • Обновления ПО в CentOS 7 обычно ограничены минорными патчами, а новые мажорные версии не добавляются в стандартные репозитории.
  • Пример:
  • В CentOS 7 установка Python 3.6 требует подключения SCL и выполнения команды вроде:
    yum install centos-release-scl
    yum install rh-python36
    scl enable rh-python36 bash

Это менее удобно, чем dnf module install python36 в RHEL 8, где всё интегрировано в DNF.

6. Преимущества AppStreams в RHEL 8

  • Гибкость: Пользователи могут выбирать нужную версию ПО без подключения сторонних репозиториев.
  • Параллельная установка: Поддержка нескольких версий одного приложения на одной системе.
  • Упрощённое управление: Интеграция с DNF делает процесс установки и переключения между версиями интуитивным.
  • Долгосрочная поддержка: Потоки имеют чётко определённые жизненные циклы, что гарантирует стабильность и обновления.
  • Изоляция: Потоки минимизируют конфликты между зависимостями.

7. Ограничения AppStreams

  • Ограниченный выбор потоков: Не все приложения имеют несколько потоков, и выбор версий зависит от того, что Red Hat включила в репозитории.
  • Сложность для новичков: Концепция модулей может быть непривычной для пользователей, привыкших к традиционному подходу CentOS 7.
  • Совместимость: Некоторые устаревшие приложения могут не работать с новыми потоками (например, если они требуют Python 2, который в RHEL 8 доступен только как неподдерживаемый поток).

8. Итог

Модульность в RHEL 8 (AppStreams) — это значительный шаг вперёд по сравнению с CentOS 7, где управление версиями ПО было менее гибким и требовало сторонних решений, таких как SCL. AppStreams упрощают установку, управление и обновление разных версий приложений, делая RHEL 8 более подходящей для современных DevOps-подходов, контейнеризации и работы с микросервисами. CentOS 7, напротив, ориентирована на стабильность и legacy-приложения, но её подход к управлению ПО устарел и менее удобен.

Если вы планируете переход с CentOS 7 на RHEL 8 (или её аналоги, такие как Rocky Linux 8 или AlmaLinux 8), изучение работы с AppStreams станет важным шагом для эффективного управления системой.

[file-name 000165_2025-07-01_12-22-18.txt]