Новая утилита cl-config

Совсем с неожиданной стороны мы подошли к решению проблемы обновления PostgreSQL сервера. Известно, что для перехода от одной мажорной версии сервера к другой, следует выполнять миграцию настроек. Поэтому, если SQL-сервер используется, во время обновления системы старую версию пакета утилите обновления удалять не следует. Как это сделать и как понять что PostgreSQL используется?

Решить эту проблему можно разными способами, мы выбрали наиболее интересное на наш взгляд решение добавляющее новый функционал утилитам. Во время настройки PostgreSQL сервера, при выполнении emerge --config =dev-db/postgresql-12.1 будет вызываться новая утилита cl-config с установленной переменной события ac_install_config. В новой ветке шаблонов обработки этого события будет реализована логика записи в world-файл пакета dev-db/postgresql:12 (с указанием слота). После этого, используемая версия PostgreSQL во время чистки пакетов удаляться уже не будет.

Идея добавить новую утилиту назрела давно, только для других целей. При помощи неё можно будет в будущем реализовать настройку различных служб, таких как openvpn, sharewall, postgresql, letsencrypt, dante-sock и др., требующих указания дополнительных параметров настройки. Изменения появятся в новой версии пакета sys-apps/calculate-utils 3.6.7.

Для PHP по аналогии не помешала-бы похожая поддержка…, т.к. после обновления приходилось всё перенастраивать.

Станет сложно удалять старую версию php, т.к. станет неочевидно какие пакеты её держат по зависимостям и точно ли держат. Потом php не нуждается в настройке, поэтому аналогичным образом не получится, никто не будет выполнять emerge --config php только ради того, чтобы пакет с сетом прописался в world.