Все компоненты alterator используют особые переменные среды для определения местоположения основных рабочих каталогов:
Для обоих переменных допустимо перечисление нескольких каталогов через двоеточие – в этом случае поиск производится последовательно в порядке указания имён. Например, если ALTERATOR_DATADIR="/a:/b", то файл ui.scm будет искаться сначала по адресу /a/ui.scm, а потом /b/ui.scm.
Для удобства использования у утилит командной строки alterator существует ключ '-l', который добавляет текущий каталог в начало списка каталогов в ALTERATOR_LIBDIR и ALTERATOR_DATADIR.
Таким образом, находясь в модуле, можно отлаживать и запускать его не устанавливая в систему.
Во втором случае демон configd не будет отцепляться от терминала и будет работать с локальными бакендами и файлами шаблонов. Для старой системы шаблонов (template-*), дополнительно существует переменная ALTERATOR_HTMLDIR, которая модифицируется при использовании '-l' аналогично остальным переменным.
Замечание: на данный момент поиск локальных desktop-файлов работает только при использовании standalone.layout. Во всех остальных случаях придётся установить desktop-файл в систему. Причина – пока не очень понятно как сделать алгоритм объединяющий все desktop-файлы максимально оптимальным при использовании нескольких каталогов.
Внешние бакенды альтератора (backend3) общаются с ядром через stdin/stdout. С одной стороны – это очень хорошо, с другой – частенько порождает сложно понимаемые ошибки. Список перечисленных ниже известных проблем является одновременно и пожеланием к будущим внешним бакендам (backend4).
1. «Паразитный вывод от утилит» – некоторые утилиты могут неожиданно для автора бакенда произвести печать чего-нибудь на stdout. В результате альтератор воспримет это как ответ. В результате может быть выдано сообщение об неподдерживаемой команде или, что ещё хуже, alterator просто зависнет. Последнее может происходить в случае, когда утилита выдала на stdout кавычку, и alterator начинает ожидать завершения строки.
2. «Отсутствие ответа» – можно ошибиться и какая-нибудь из утилит (например grep), будет висеть и в месте с ней будет висеть и весь alterator.
3. «Два ответа вместо одного» – alterator не сбрасывает буфер чтения перед началом чтения очередного ответа от бакенда, поэтому если бакенд ответил два раза, ядро и бакенд начинают работать в «противофазе» выдавая неожиданные ответы в неожиданных местах. Внешне всё выглядит как будто модуль то работает, а то не работает.
4. «Неверный формат вывода списка» – давным давно alterator стал использовать для вывода списков странную систему, в которой в отличие от остальных случаев первым идёт строка с именем. Пользователи не читают документацию, поэтому часто вместо '(«a» param “pam-pam”) выводят '(name “a” param “pam-pam”) ... в результате бакенд не работает.
Отлаживать модули в alterator пока не так просто и удобно как хотелось бы.
Следующие способы возможно облегчал жизнь: