我有一个带有指令的 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文件?
答案1
!
不能在路径中使用。但是,您可以使用该label()
函数来选择该节点:
augtool> print /files/etc/mysql/my.cnf/*[label()="!includedir"]
/files/etc/mysql/my.cnf/!includedir = "/etc/mysql/conf.d/"
路径表达式在 Augeas wiki 上有记录。
答案2
这是一个常见问题,mysql 使用 .ini 之类的配置文件,每个工具都试图这样处理它。我没有找到正常的解决方案,但你总是可以分叉/重写当前的 .ini 解析方法。这不是一件好事。
最后我通过我的网站解决了这个问题,就像你可以同时拥有 2 个 my.cnf 文件 /etc/my.cnf 和 ~/.my.cnf 我试图将我的客户端绑定移动到这两个文件。(好吧,当它们是服务器配置选项时,我不知道该怎么做,期待 hackety-hack。):(