Что ставится на каждой ОС

Установщик не ветвится по названию дистрибутива — он определяет семейство и берёт строку из таблицы. Добавление ещё одного дистрибутива в известное семейство не требует правок в коде.

Docker

Семейство Как ставится

deb

Официальный репозиторий Docker: ключ в /etc/apt/keyrings/docker.asc, строка в /etc/apt/sources.list.d/docker.list, пакеты docker-ce docker-ce-cli containerd.io. Для Linux Mint берётся репозиторий родительского дистрибутива — своего у него нет.

astra

Пакет docker.io из репозитория дистрибутива.

alt

Пакет docker-engine, служба включается явно.

rhel

Файл /etc/yum.repos.d/docker-ce.repo забирается curl-ом, затем docker-ce docker-ce-cli containerd.io. На CentOS 7 дополнительно ставится container-selinux из extras — без него установка обрывается на зависимости. Для RedOS сторонний репозиторий не подключается: docker-ce есть в собственном.

Служба docker в семействах rhel и alt после установки пакета не запущена — установщик включает её явно.

PostgreSQL

Семейство Как ставится

deb

Репозиторий PGDG: ключ в /usr/share/postgresql-common/pgdg/, строка в /etc/apt/sources.list.d/pgdg.list, пакет postgresql-<версия>.

astra

Расширенный репозиторий Astra. Версия по умолчанию зависит от кодового имени: 17 для 1.7, 15 для 1.8.

alt

Пакет postgresql<версия>-server из репозитория дистрибутива.

rhel

Репозиторий PGDG: pgdg-redhat-repo-latest.noarch.rpm для нужной версии EL. На EL8 и новее штатный модуль postgresql отключается — иначе он перекроет пакеты PGDG. Для RedOS сторонний репозиторий не подключается.

Пути расходятся между семействами:

deb, astra rhel, alt

pg_ctl, psql, initdb

/usr/lib/postgresql/<версия>/bin/

/usr/pgsql-<версия>/bin/

Каталог кластера

/var/lib/postgresql/<версия>/<инстанс>

/var/lib/pgsql/<версия>/<инстанс>

Файл журнала

/var/log/postgresql/

Внутри каталога кластера

Локаль для initdb не зашита: берётся первая, которую система действительно знает, из C.UTF-8, en_US.UTF-8, C. В glibc CentOS 7 локали C.UTF-8 нет, и зашитое значение приводило бы к отказу создать кластер.

NFS

Семейство Пакет Служба Роль сервера

deb, astra

nfs-kernel-server

nfs-kernel-server

Поддержана

rhel

nfs-utils

nfs-server

Поддержана

alt, RedOS

nfs-utils

nfs-server

Не поддержана

Группа-владелец экспортируемых каталогов различается: в deb это nogroup, в rhel — nobody. Группы с чужим именем в системе просто нет, и chown с ней завершился бы ошибкой.

Служба включается до exportfs -a: в rhel после установки пакета она не запущена, а экспортировать без работающего сервера некуда.

SELinux

Актуален для семейства rhel, где по умолчанию включён режим enforcing. Затрагивает три места.

Тома контейнера

Bind-mount без метки недоступен процессу внутри контейнера. К каждому тому добавляется суффикс :z — итоговый вид :rslave,z.

Каталог кластера PostgreSQL

Кластер лежит не там, где его ждёт политика. Выполняются semanage fcontext -a -t postgresql_db_t и restorecon -R.

Порт PostgreSQL

Нестандартный порт нужно разрешить: semanage port -a -t postgresql_port_t -p tcp <порт>.

Дополнительно, при роли NFS-сервера, включается nfs_export_all_rw: без него каталоги отдаются, но клиент получает отказ при первой же записи.

Поведением управляет --selinux:

Значение Что делает

auto

Настраивать, если getenforce возвращает Enforcing. Умолчание.

configure

Настраивать и в режиме permissive — для машин, где enforcing включат после перезагрузки.

skip

Не трогать политику.

Даже configure не действует там, где SELinux выключен совсем: метка :z тогда не проставится, а docker откажется запускать контейнер.

semanage приходит отдельным пакетом, которого нет в minimal-установке. При --useapt=y установщик доставляет его сам: policycoreutils-python в EL7, policycoreutils-python-utils начиная с EL8.

firewalld

На CentOS активен по умолчанию и закроет порты платформы. Установщик не меняет правила молча: список портов попадает в план на экране подтверждения.

Открываются только те порты, которые установщику известны наверняка:

  • порт PostgreSQL — кроме случая --pgindockerport, когда наружу он не публикуется;

  • порты платформы, заданные ключами --erawshttpport, --erawshttpsport, --eraerlepmdport, --eradistports, --eranodesports;

  • службы nfs, mountd, rpc-bind при роли NFS-сервера.

Поведением управляет --firewall:

Значение Что делает

auto

Открывать, если firewalld активен. Умолчание.

open

Открывать всегда.

skip

Не менять правила, но перечислить закрытые порты в отчёте.

Порты, которые платформа открывает сама, установщику неизвестны. В сети host контейнер публикует их самостоятельно, и из ответов их не вывести. Если веб-интерфейс недоступен снаружи, откройте их вручную.

Особенности CentOS 7

CentOS 7 снят с поддержки, и это заметно при установке.

  • Базовые репозитории уехали с зеркал на vault.centos.org. Пока строки не поправлены, любой yum install завершится ошибкой. Установщик их не правит — это решение инженера, — но предупреждает об этом в предпроверках.

  • Пакетный менеджер — yum, а не dnf. Ветка выбирается автоматически.

  • Модулей пакетов нет, поэтому dnf module disable postgresql не выполняется.

  • bash 4.2.46 — ровно минимально необходимая версия.

  • Локали C.UTF-8 не существует; интерфейс переключится на английский.