Как я могу заставить augtool (augeas) или аналогичный распространенный инструмент для работы с freetds.conf, чтобы я мог автоматизировать некоторую настройку в сценарии установки bash?
Кажется, это не работает:
augtool print "/files/etc/freetds/freetds.conf"
Однако это работает (но по какой-то причине он использует линзу inifile вместо линзы odbc):
augtool print "/files/etc/odbcinst.ini"
Я также следил эти инструкции чтобы попытаться связать линзу odbc с freetds.conf:
$ augtool --noload
augtool> set /augeas/load/odbc/lens odbc.lns
augtool> set /augeas/load/odbc/incl /etc/freetds/freetds.conf
augtool> load
augtool> print /files/etc/freetds/freetds.conf
augtool>
Я пробовал то же самое с inifile
и IniFile
в различных комбинациях, но load
потерпел неудачу с error: Lens not found
Can not find lens IniFile.lns
или Can not find lens inifile.lns
.
Ошибки: Кажется, нет никаких ошибок с упоминанием freetds или odbc:
$ augtool print "/augeas//error" | grep freetds
$ augtool print "/augeas//error" | grep -i 'freetds\|odbc'
$
Версии: Я использую Ubuntu 14.04. augtool --version
показывает augtool 1.2.0
Вы можете увидеть мой freetds.conf по адресу http://pastebin.com/Lt6GiXAJ
Это freetds.conf по умолчанию, за исключением того, что я добавил следующие строки в [global]
раздел:
tds version = 8.0
client charset = UTF-8
Такие записи, как «версия tds» и «кодировка клиента» не поддерживаются линзой ODBC, поскольку они содержат пробелы. Как вы видели, вы не можете использовать IniFile.lns, поскольку он содержит только примитивы. Но вы можете поискать другой объектив на основе Ini. Следующее будет хорошей отправной точкой:
grep IniFile /usr/share/augeas/lenses/dist/* | grep --perl-regexp "\blet\s+entry\b"
То есть вам следует искать линзу, которая переопределяет «вход», чтобы разрешить пробелы. Похоже, что линза rsyncd делает это, поэтому вы можете попробовать:
augtool --noautoload --transform "rsyncd.lns incl /etc/freetds/freetds.conf" print /files/etc/freetds/freetds.conf