У меня есть файл конфигурации MySQL с !includedir
директива. Директива, кажется, отображается правильно, когда линза исследует файл:
$ sudo augtool print /files/etc/my.cnf | fgrep includedir
/files/etc/my.cnf/!includedir = "/etc/mysql/conf.d/"
Однако пока augtool распечатывает путь при изучении /etc/my.cnf, он продолжает жаловаться на недопустимое выражение пути, если я пытаюсь распечатать или исследовать фактический узел. Например:
$ sudo augtool
augtool> print /files/etc/my.cnf/!includedir
error: Invalid path expression
error: empty name
/files/etc/my.cnf/|=|!includedir
Как я могу использовать Augeas 1.0.0 для управления !includedir
директива в /etc/my.cnf файл?
!
нельзя использовать в путях. Однако вы можете использовать label()
функция для выбора этого узла:
augtool> print /files/etc/mysql/my.cnf/*[label()="!includedir"]
/files/etc/mysql/my.cnf/!includedir = "/etc/mysql/conf.d/"
Выражения пути задокументированы в вики Augeas.
Это обычная проблема, mysql использует .ini как файлы конфигурации, и каждый инструмент пытается справиться с этим таким образом. Я не нашел нормального решения для этого, но вы всегда можете разветвить / переписать текущий метод синтаксического анализа .ini. И это не очень хорошо.
В конце концов, я решил эту проблему на своем сайте, как будто у вас может быть 2 файла my.cnf одновременно /etc/my.cnf и ~ / .my.cnf. Я попытался переместить свои привязки клиента к этим двум файлам. (хорошо, когда это параметры конфигурации сервера, я понятия не имею, что делать, ожидайте взлома.) :(