-l режим отладки (добавление ./ к директориям, ALTERATOR_DATADIR, ALTERATOR_LIBDIR, не-демонизирование в layout'е configd)
Кроме того, сделаны скрипты типа alterator-cmdline, alterator-standalone, acc, configd и т.д., просто вызывающие alterator -c <соответствующий layout>.
Для поиска файлов Альтератор использует две директории: ALTERATOR_DATADIR и ALTERATOR_LIBDIR. В соответствующие переменные окружения можно записывать несколько директорий через “:". Если переменные пусты – устанавливаются значения по умолчанию (/usr/share/alterator и /usr/lib/alterator), если дан ключ -l, к ним спереди добавляется ".". Исключение — поиск desktop-файлов – только в /usr/share/alterator. См. также текст про отладку модулей.
Кроме того, configd.layout использует переменную окружения ALTERATOR_HTMLDIR (или по умолчанию /var/www) — для поддержки старых модулей с template-* backend'ами, шаблоны которых лежат в /var/www... И еще кое-где жестко прописана директория /var/www
список Layout'ов
см. /usr/share/alterator/layouts/
configd — HTML интерфейс с выбором модулей через меню
acc — QT-интерфейс с выбором модулей через меню
wizard — QT-интерфейс с последовательностью модулей и кнопками вперед-назад
standalone — QT-интерфейс для показа одного модуля
cmdline — общение с модулями через command line
autoinstall
configd-cmdline — дать команду работающему configd, напечатать ответ (для перезапуска ahttpd из-под alterator-ahttpd)
fbi-stdin — для alterator-ovz
attach
Шина woo-bus, из чего состоит шина для разных Layout'ов
Каждый layout собирает несколько модулей на шину woo-bus (см tеlegraph.scm)
Шина строится в виде цепочки функций, каждая из которых получает два аргумента – команду и «следующую функцию». Функция как-то реагирует на команду, вызывает следующую функцию, получает от нее ответ и отдает свой ответ в предыдущую функцию... Следующая функция – на самом деле не следующая функция из цепочки, а специальная обертка для нее — telegraph-run, которая знает про всю оставшуюся цепочку...Первая функция в цепочке должна висеть все необходимое время, остальные – сразу возвращать значение...
Команды, передаваемые по шине: (объект параметр1 значение1 параметр2 значение2...) уточнить!!!
(pipe-in «/usr/bin/qtbrowser») — gate to qtbrowser
(client-socket) — gate to other alterator
qtbrowser, alterator-browser-qt, alterator-browser-x11 — одно и тоже :)
alterator-browser-qt принимает параметр – каталог, куда засунется его сокет. Это важно в wizard.layout, поскольку в процессе chroot'а при инсталляции нужно этот каталог не потерять.
Таким образом, на шине встречаются следующие штуки:
(ensign) — общение с бекэндами. Через ensign/backend3.scm — работа с backend3, через ensign/midshipman.scm — работа с backend2
(lookout) — работа с qt-frontend'ами
(configd) — заполнение html-шаблонов и обработка запросов от ahttpd
(server-socket <socket name> <user> <group>) — создать сокет (по умолчанию /tmp/alterator-sock) и слушать его (transport/server-socket.scm)
(client-socket <socket name>) — кинуть команду в socket
(pipe-in <prog> <prog args>) — запуск программы и общение с ней через pipe
(cmdline-in (option-ref options '() '()))
(std-in #t)
(logfile <log file>) — запись проходящих команд в log-файл
atlas.scm – это способ искать разные файлы по правилам, указанным в специальных файлов («картах»). Так, в разных acc.layout, wizard.layout, stanalone.layout шина woo-bus строится совершенно одинаково, но запускается с использованием разных карт... В результате вместо std/frame используется, например, standalone/frame и т.д...
Основное назначение alterator'а – управлять модулями настройки системы, показывать их граф.интерфейс и т.п... То есть, под разные задачи пишутся разные модули, а alterator обеспечивает их работу.
Модуль состоит из следующих частей:
backend — программы со специальным интерфейсом, производящие собственно конфигурацию системы. Существует два стандарта бекэндов: backend2 — написанные на scheme, и backend3 — написанные на произвольном языке. Команды бекэндам передаются с шины woo-bus через ensign. Адресация: <backend>/<объект внутри бакенда>, например «net-eth/eth0». Ищутся в директориях $ALTERATOR_LIBDIR/backend2 и $ALTERATOR_LIBDIR/backend3
desktop — файлы с разной информацией о модуле (нужные в основном для построения граф.интерфейсов). Лежат в директории $ALTERATOR_DATADIR/applications, имеют расширение .desktop.
templates — html-шаблоны. Используются configd для построения html-интерфейса.
design — css, js, используемые в html-шаблонах
ui — описание QT-интерфейса для lookout.
help — html-файл справки. Используется для qt и html-интерфейса