Актуальность доков

Добрый день.
Что хочу сделать:

  1. подключить сетевые диски при подключению к домену и
  2. подключать те же сетевые диски если комп в домен не входит.
    Как сделать файл шаблона вроде понятно, но куда его положить и как подключить - полный туман.
    С доками по утилитам calculate ознакомился, но они, похоже, не совсем свежие и от этого еще больше путаница. В результате так и не сообразил “за что дергать”.
    Буду признателен за помощь.

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

/usr/share/calculate/xdm/login.d/
/usr/share/calculate/xdm/logout.d/

P.S. По поводу документации, указывайте страницы, используйте Ctrl+Enter (см. внизу страницы).

Но, насколько я понимаю, в этих файлах нельзя использовать встроенные переменные системы типа #ur_login# ?
Хотя, конечно, можно обойтись и без них…

Встроенные переменные можно, но что касается #ur_login#, то логин в данном случае будет root, т.к. Вы будете применять этот шаблон с правами root-а. Используйте в этом скрипте переменную окружения $USER, для получения логина текущего пользователя вошедшего в сеанс.

Спасибо за ответ, Александр.
Написал скрипт входа, Положил его по указанному пути(/usr/share/calculate/xdm/login.d/).
Проверил - при входе локального пользователя все работает.
Далее, создаю в директории на сервере /var/calculate/remote/templates файлы: desktop/usr/share/calculate/xdm/login.d/30maps и desktop/usr/share/calculate/xdm/logout.d/30maps и .calculate_directory

файл
/var/calculate/remote/templates/desktop/usr/share/calculate/xdm/login.d/30maps :

#Calculate append=replace force
#! /bin/sh

env-update
source /etc/profile
source /usr/share/calculate/xdm/functions

mount_dir() {
     # отмонтируем и удалим директории и линки
    umount /mnt/$1 && 
    rm -r /mnt/$1 && 
    rm /home/$2/Desktop/$1
} 

 # default
mount_dir ${USER}
mount_dir "exchange" ${USER}


for grp in `id -Gn ${USER} `
do
    if [ ${grp}x == "admin"x ]; then
        mount_dir ${grp} ${USER}
    fi
done

exit 0

файл /var/calculate/remote/templates/desktop/.calculate_directory

 # Calculate append=skip cl_name==calculate-desktop&&cl_ver>=2.2.1

запускаю из-под рута на клиенте

calculate desktop # cl-template -l remote
* Пакет calculate-desktop-2.2.8 изменил файлы:
*      /etc/NetworkManager/dispatcher.d/if-up.sh
*      /usr/share/calculate/xdm/login.d/30maps
*      /usr/share/calculate/xdm/logout.d/30maps

но файлов по указаному пути не появилось. Так же не отрабатывает и простое подключение клиента к серверу - по идее, шаблон должен поместить файл в директорию /usr/share/calculate/xdm/login.d/ и выполнить…
Что я делаю не правильно?

Извините за задержку с ответом. Посмотрите внимательно, у Вас должны создаться файлы по указанным путям.

Я смотрю по адресу /usr/share/calculate/xdm/logout.d/ и /usr/share/calculate/xdm/login.d/
там нет никаких файлов 30maps.

.calculate_directory должен быть в /var/calculate/remote/templates/desktop

Может просто запакуете и приложите сюда содержимое /var/calculate/remote/templates если не получится?

Наверное, что-то не заметил в преддверии праздника :slight_smile:
теперь пишет следующее

calculate uninstall # cl-template -l remote

* Нет условий проверки значения переменной ‘cl-name’
* Пропущенные директории:
* /var/calculate/remote/templates/desktop
*
* Заголовки шаблонов директорий и файлов первого уровня должны включать в себя переменную ‘cl-name’
* Пример:
* # Calculate cl_name==calculate-install

файл /var/calculate/remote/templates/desktop/.calculate_directory
содержит запись :

 # Calculate append=skip cl_name==calculate-desktop&&cl_ver>=2.2.1

сделал cl-template -v -l remote и вижу, что переменная cl_name=calculate-install (а не cl-name, как было написано в выводе )
Откуда берется само значение этой переменной? оно где-то присваивается или берется из названия шаблона?

P.S.
методом проб и ошибок, положил файл .calculate_directory (того же содержания) в директорию /var/calculate/remote/templates/ - все заработало
Вопрос про имя шаблона остался.

Не сразу заметишь эту ошибку, спасибо. Правильно конечно cl_name, т.к. разделителем в переменных выступает именно знак подчеркивания.

Вы затронули как раз не раскрытую в документации тему использования шаблонов. В ближайшее время мы её задокументируем. Пока объясню вкратце.

В 10.4 и более ранних версиях системы шаблоны накладывались при помощи утилиты calculate командой calculate -P all. Она выполнялась при установке системы, её можно было вызвать чтобы восстановить сброшенный при обновлении пакета конфиг. Помимо этого, начиная с версии 9.0 утилиты пакета calculate-server настраивали сервисы при помощи новых шаблонов Calculate 2. Из-за многочисленных отличий пути к шаблонам используются разные. Только в 11.0 версии дистрибутива мы полностью отказались от утилиты calculate первой версии. Так как с обновлением 10.9 сервер не вышел, продолжая использовать старый установщик. Получается что только с конца января мы можем вычеркнуть страницы описания морально устаревшей утилиты calculate с её форматом шаблонов.

Что же особенного в шаблонах Calculate 2.2. В первую очередь они привязаны к событиям. И главное событие, которое может заинтересовать - это установка пакета. Шаблоны Calculate 2.2 используют один общий путь для хранения, который также разделен по расположению - шаблоны локальные: в /etc/, в /var/calculate/ и /var/calculate/remote/ и шаблоны системные (/usr/share/calculate/templates/). Все шаблоны 2.2 вынесены в один пакет - calculate-templates. К слову calculate-server пока ещё использует шаблоны 2.0.

Теперь про события. Во время установки пакета вызывается наложение шаблонов пакетов утилит. Каких именно - перечислено в переменной cl_merges в файле /etc/calculate/calculate2.env. Дело в том, что разные пакеты утилит имеют свои, уникальные наборы переменных. Например при установке пакета kdm, его может настроить как calculate-install, так и calculate-client, а firefox будет настраивать только calculate-desktop. Основные переменные например пакета calculate-install можно посмотреть выполнив:

cl-install -v

Все переменные доступные пакету:

cl-install -v -v

Теперь про пути. Поскольку путь к шаблонам единый, были введены вспомогательные переменные для того, чтобы определить, какой пакет утилит в данный момент работает и какое действие выполняет. Как раз переменная cl-name и содержит имя пакета. Пример:

cat /usr/share/calculate/templates/install/.calculate_directory
 # Calculate append=skip cl_name==calculate-install&&cl_ver>=2.2.1

Ведь если Вы не добавите эту проверку, Ваш шаблон будет применяться по множеству раз. Поэтому мы ввели эту проверку наличия условия в шаблоне.

Всего мне здесь не раскрыть. Но я прекрасно представляю себе необходимость подобного руководства.

Да, тема очень насущная. Имхо, это основная “фишка” системы. Будем ждать.
Вы упомянули события при установке пакета. В файле /etc/calculate/calculate2.env у переменной cl_merges как раз эти три значения: calculate-install, calculate-client, calculate-desktop. Когда какие срабатывают?

При установке пакета поочерёдно срабатывает каждый.

Возможно, в продолжение темы.
Читаю про управление обновлениями на клиенте - установка пакетов и прочих скриптов. Похоже, что там тоже информация по предыдущим версиям. Скачал бинарный пакет, хочу установить его на клиенте(клиентах). Какая команда для этого используется в CLDG-11?

Да, начиная с 10.9 пути к пакетам находятся в /var/calculate/remote/packages/ и /var/calculate/remote/distfiles/. Директория /var/calculate/remote монтируется с сервера при вводе CLD в домен. Устанавливаются программы также через emerge. Смена путей выполнена через переменные в профиле.