如何使用 Augeas 管理 MySQL 的 `!includedir` 指令?

如何使用 Augeas 管理 MySQL 的 `!includedir` 指令?

我有一个带有指令的 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。):(

相关内容