Автоматическое затирание конфигов

После перехода на Calculate Utilities 3 я стал замечать, что он время от времени затирает конфиги, которые я правлю на те, которые по умолчанию. В частности, он иногда затирает /etc/sudoers, из-за чего у меня пропадает возможность пользоваться sudo из-под локального пользователя, приходится перепрописывать. Вчера на моем ноутбуке опять появился файл /etc/init.d/net.wlan0, из-за чего он опять стал подключаться к вай-фаю самостоятельно через DHCP, минуя Wicd и все его настройки. Я его удалял некоторое время назад как раз из-за таких фокусов, а он опять самостоятельно появился.
В общем, мне это не нравится. Можно ли сделать так, чтобы он перед правкой конфигов хотя бы спрашивал меня об этом? До Calculate 12 довольно часто подавал голос dispatch-conf, и это была отличная вещь, надо сказать. Всегда можно было отказаться от правки того или иного конфига. В Calculate 12 его отключили что ли?

Это временно. Из двух зол мы выбираем меньшее, настраивая конфиги в уже установленной системе. В большинстве случаев проблем не доставляет, т.к. шаблоны не заменяют файлы, а только правят настройки файлов. С sudoers сложнее, там формат сложный, поэтому файл переписывается.

Решить проблему можно написав свой шаблон. Самый простой вариант - просто сделать копию в файл /etc/sudoers.clt В этом случае настройки будут закреплены за пакетом, даже если Вы захотите установить новую или другую версию системы.

По поводу бэкапа, его пока нет. Сделаем в утилитах 3.1.

А как быть с файлом /etc/init.d/net.wlan0, который иногда появляется и мне приходится его удалять, чтобы все настройки для подключения к вай-фаю были в соответствии с настройками Wicd?
Я правильно понял, dispatch-conf появится в 3.1?

Кстати, у меня вопрос как к Петру, так и к Александру:
Есть такая директория как /etc/sudoers.d/
Если я правильно понимаю логику вещей - в нее помещается файлы аналогичного с /etc/sudoers формата, и при этом они абсолютно не будут конфликтовать друг с другом.
Почему бы не использовать её, оставляя основной конфиг в оригинальном состоянии, либо изменяя/обнуляя его по желанию?

Прекрасная идея Михаил.

С wlan0 сложнее, ссылка создается для корректной настройки сетевого интерфейса. Опять же можно сделать шаблон, который удалит этот файл при обновлении.

2 Александр
Кстати, к вопросу о корректной настройке сетевых интерфейсов.
С третьими утилитами появилась возможность создавать собственные переменные, почему бы не сделать набор переменных по типу:
os_rc_net_config_eth0
os_rc_net_bridge_br0
os_rc_net_rc_need_br0
os_rc_net_brctl_br0
os_rc_net_config_ppp0
os_rc_net_pppd_ppp0
os_rc_net_chat_ppp0
И шаблон с exec=/bin/bash фильтрующий шаблоны по маске os_rc_net_* и
# переносящий их один в один в /etc/conf.d/net
# при наличии os_rc_net_config_<interface_name> создающий
/etc/init.d/net.<interface_name>

Кстати, кроме возможности вынести настройки ppp и bridge-ей в шаблоны, это даст возможность для разных интерфейсов использовать для настройки как openrc, так и networkmanager, так и wicd (а это иногда бывает полезно).

Для NetworkManager примерный путь таков - другим аналогичным шаблоном-скриптом :
# Вынести настройки интерфейсов для nm в /etc/NetworkManager/system-connections/
# отключить настройку openrc-шных устройств (тех, для которых есть os_rc_net_config_<interface_name>) через NetworkManager
man NetworkManager.conf
найти unmanaged-devices=
# добавить именованные настройки новых подключений, в т.ч. и на одном и том же интерфейсе(привет автору этого вопроса) чем нибудь вроде cnetworkmanager-а (если умеет)

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

Ну это наверное должна быть отдельная тема. :slight_smile:

PS
для openrc похоже придется предусмотреть модульность настроек, как минимум оставить возможность добавить модуль настройки wpa_supplicant, hostapd, или еще чего угодно.

Alexander Tratsevskiy wrote:

Ну это наверное должна быть отдельная тема. :slight_smile:

Хорошо, где лучше тему завести?
форум? блог? задачи?

задачи

Создал задачи о:
sudoers
и
настройка сетевых интерфейсов

Alexander Tratsevskiy wrote:

С wlan0 сложнее, ссылка создается для корректной настройки сетевого интерфейса. Опять же можно сделать шаблон, который удалит этот файл при обновлении.

Подскажите пожалуйста, как будет выглядеть шаблон в этом случае?

Подскажите пожалуйста, как будет выглядеть шаблон в этом случае?

Создайте файл /var/calculate/templates/net.wimax0 со следующим содержимым:

 # Calculate cl_name==calculate-install&&belong(openrc)!=&&pkg(sys-apps/openrc)!= 
path=/etc/init.d append=remove

Проверить работу можно выполнив:

cl-core-setup --pkg-name openrc

Описание шаблонов можно почитать здесь.

Будут вопросы - пишите.

Спасибо, получилось!
Но все же, как мне кажется, иной раз проще вписать лишнюю строчку в конфиг, чем создавать шаблон, который иногда бывает не очень интуитивно понятный (хотя, это может на первый взгляд). Надеюсь, вы в утилитах 3.1 прикрутите возможность выбора с помощью dispatch-conf, затирать ли имеющийся конфиг или нет.

Но все же, как мне кажется, иной раз проще вписать лишнюю строчку в конфиг, чем создавать шаблон

Если формат конфигурационного файла поддерживается шаблоном, он перепишет только те настройки, которые настраиваются утилитами. Но при обновлении пакета, в случае если Вы что-либо меняли, создастся новый конфиг и Вам все равно придется его как-то его объединять либо удалять. В случае с шаблонами, Вы можете зафиксировать свои настройки в файле шаблона. Он будет формироваться путём объединения дефолтного файла, шаблона утилит и вашего шаблона. Сформированный таким образом конфиг портежи будут считать оригинальным, следовательно не будет создаваться его копия (не смотря на внесенные вами изменения в шаблоне), следовательно не будет необходимости выполнять dispatch-conf.

который иногда бывает не очень интуитивно понятный

Да, шаблоны не всегда понятны, но очень удобны и функциональны. Например файл шаблона можно для удобства назвать “remove_wireless”, дописав в заголовке настоящее имя строчкой ‘name=net.wimax0’. Можно поместить его в директорию, указав в её свойствах, чтобы она не создавалась. Можно использовать внутренние переменные утилит в условных выражениях и для подстановки значений. В 3.1 переменные можно будет не только отображать, но и менять их значения.

Alexander Tratsevskiy wrote:

Подскажите пожалуйста, как будет выглядеть шаблон в этом случае?

Создайте файл /var/calculate/templates/net.wimax0 со следующим содержимым:

[…]

Проверить работу можно выполнив:

[…]

Ура! Первая подвижка к туториалу по шаблонам на конкретном примере!
# Теперь известно, что шаблоны располагаются в /var/calculate/templates/
# Вопрос: почему он должен называться именно net.wimax0, а не как-то иначе (в правилах именования не совсем понятно - та длинная строчка в примере, это имя файла)?

Пожалуйста, при возможности включите в документацию раздел типа “Практическое применение шаблонов для начинающих” вот хотя бы на примере правки дефолтных шаблонов “под себя”.

FAQ, HOWTO и EXAMPLES лучше писать по живым примерам. Пока нет wiki, можно копить примеры на форуме или в блоге.

Условные выражения в именах шаблонов наследовались с первой версии утилиты Calculate и сейчас уже нигде не используются. Вместо этого есть опция ‘name=…’ в заголовке шаблона, используя которую утилиты переименовывают шаблон. Если name не указан, используется имя шаблона. В примере я не стал использовать какое-то другое имя для шаблона, выбрав net.wimax0.

Примеры использования шаблонов можно посмотреть в блоге.

Спасибо!