В анонсе Calculate Linux 10.9 среди возможностей написано:
- Автонастройка конфигурационных файлов новых версий пакетов в процессе установки с возможностью автозамены.
Давайте попробуем разобраться, каким образом мы можем сохранить свои настройки в текущей системе, а также использовать их при установке образа с обновлением.
В статье Будущий Calculate Linux 10.11 я вкратце упомянул, что за обновление настроек отвечают утилиты Calculate 2. Причем делают это таким образом, что вновь созданные конфигурационные файлы и директории также начинают принадлежать устанавливаемому пакету. Изменив значение переменной cl_autoupdate_set
, можно применять новые файлы настроек непосредственно во время установки пакетов.
Для начала посмотрим, какие файлы были изменены утилитами в вашей системе в директории /etc, выполнив команду:
grep -r "Calculate-" /etc
Для примера откроем файл /etc/conf.d/splash
. Ниже приведена часть конфигурационного файла:
#------------------------------------------------------------------------------
# Modified Calculate-install 2.2.0.0
# Processed template files:
# /usr/share/calculate/templates/install/merge/splashutils/conf.d/splash
#------------------------------------------------------------------------------
# Config file for splashutils.
# Boot/reboot/shutdown message overrides.
# SPLASH_BOOT_MESSAGE="Booting the system (\$progress%)"
# SPLASH_REBOOT_MESSAGE="Rebooting the system (\$progress%)"
# SPLASH_SHUTDOWN_MESSAGE="Shutting the system down (\$progress%)"
# Should we drop to verbose mode on initscript errors? (yes/no)
SPLASH_VERBOSE_ON_ERRORS="no"
# Which special effects should be used?
# This should be a comma separated list. Valid items: fadein, fadeout
SPLASH_EFFECTS="fadein,fadeout"
...
В заголовке файла приведена ссылка на шаблон, при помощи которого были выполнены настройки. Просмотрим его, выполнив
cat /usr/share/calculate/templates/install/merge/splashutils/conf.d/splash
:
# Calculate format=procmail
SPLASH_VERBOSE_ON_ERRORS="no"
Как видите, целью шаблона было убрать отключение заставки во время загрузки при выводе предупреждающего сообщения. Выбрав подходящий формат конфигурационного файла, можно изменять только необходимые параметры, не копируя весь файл настроек целиком.
Теперь давайте проверим, как будет работать функция генерации и автообновления настроек.
Изменим содержимое файла /etc/conf.d/splash
так, чтобы emerge сгенерировал для него новый конфигурационный файл. Как вариант, вернем оригинальное значение переменной SPLASH_VERBOSE_ON_ERRORS
:
SPLASH_VERBOSE_ON_ERRORS="yes"
Теперь посмотрим, какому пакету принадлежит файл и пересоберем его:
# equery b /etc/conf.d/splash
[ Searching for file(s) /etc/conf.d/splash in *... ]
media-gfx/splashutils-1.5.4.3-r3 (/etc/conf.d/splash)
# emerge splashutils
Затем выполним dispatch-conf
:
# dispatch-conf
--- /etc/conf.d/splash 2010-10-18 11:41:16.005000312 +0400
+++ /etc/conf.d/._cfg0000_splash 2010-10-18 11:43:27.000000000 +0400
@@ -11,7 +11,7 @@
# SPLASH_SHUTDOWN_MESSAGE="Shutting the system down (\$progress%)"
# Should we drop to verbose mode on initscript errors? (yes/no)
-SPLASH_VERBOSE_ON_ERRORS="yes"
+SPLASH_VERBOSE_ON_ERRORS="no"
# Which special effects should be used?
# This should be a comma separated list. Valid items: fadein, fadeout
>> (1 of 1) -- /etc/conf.d/splash
>> q quit, h help, n next, e edit-new, z zap-new, u use-new
m merge, t toggle-merge, l look-merge:
Как видите, определив что файл настроек изменен, утилита emerge сгенерировала файл с новыми настройками /etc/conf.d/._cfg0000_splash
. Нажмем "u"
для использования нового файла настроек. Повторное выполнение dispatch-conf
обновлений уже не выявит.
Теперь давайте проверим, как работает функция автозамены. Изменим значение переменной на cl_autoupdate_set
на on
в файле /etc/calculate/calculate2.env
. Также изменим SPLASH_VERBOSE_ON_ERRORS на значение yes
в файле /etc/conf.d/splash
. И выполним переустановку пакета командой emerge splashutils
.
Выполнение команды dispatch-conf
уже не покажет обновлений. Открыв файл /etc/conf.d/splash
вы увидите, что ваше изменение в настройках заменено утилитами:
SPLASH_VERBOSE_ON_ERRORS="no"
Каким образом следует изменять настройки в системе? При помощи ваших шаблонов. Для шаблонов вы можете использовать директорию /var/calculate/templates
, как это было описано в первой части статьи. Здесь же я опишу более удобный способ, используя шаблоны ‘clt’.
Шаблоны ‘clt’ призваны упростить настройку системы, т.к. они размещаются непосредственно в файловой системе вместе с оригинальными файлами настроек, отличаясь от них только расширением ‘.clt’. Шаблоны ‘clt’ отличаются от прочих предустановленным значением параметра name
, который равен имени шаблона без расширения ‘clt’. Также по умолчанию такой шаблон будет обрабатываться пакетом calculate-install
, со своим набором переменных.
Создадим файл /etc/conf.d/splash.clt
, взяв за основу оригинальный шаблон:
cp /usr/share/calculate/templates/install/merge/splashutils/conf.d/splash /etc/conf.d/splash.clt
Исправим значение переменной SPLASH_VERBOSE_ON_ERRORS
на yes
после чего переустановим пакет выполнив emerge splashutils
.
Поскольку значение переменной cl_autoupdate_set
по прежнему в значении on
, выполнение команды dispatch-conf
не даст результата. Открыв файл /etc/conf.d/splash
убедимся что значение SPLASH_VERBOSE_ON_ERRORS
установлено в yes
!
При обновлении системы из ISO образа шаблоны ‘clt’ будут участвовать в её настройке. Они будут также перенесены в новую систему программой установки.