如何在 OSX 上配置 RethinkDB 服务以使用某个配置文件?

How can I configure the RethinkDB service on OSX to use a certain configuration file?

我按照 the official instructions 通过自制程序在 OS X 上安装了 RethinkDB。但是,我需要 RethinkDB 守护进程使用特定的配置文件。

official RethinkDB docs 说要修改 homebrew 安装的 .plist 文件,以便使用 rethinkdb 守护程序的 --config-file 选项:

<key>ProgramArguments</key> <array> <string>/usr/local/bin/rethinkdb</string> <string>--config-file</string> <string>/etc/rethinkdb.conf</string> </array>

然而,此方法的缺点是您的更改将在下次升级 RethinkDB 安装时被覆盖。

是否有一些安全的方法让 rethinkdb 守护进程使用配置文件,该文件在 RethinkDB 的升级过程中保持不变?

请注意,~/Library/LaunchAgent 中的 .plist 文件通常是指向自制系统 f.ex 中真实文件的符号链接。 /usr/local/Cellar/rethinkdb/2.1.5-2/homebrew.mxcl.rethinkdb.plist。此外,.plist 文件很少更改。因此,我们可以安全地将原始 .plist 文件复制到某处,然后加载它。

因此,您可以手动将文件复制到 ~/Library/LaunchAgent,然后修改它,而不是符号链接。 Homebrew 不会更改 ~/Library/LaunchAgent 中的文件。升级时只会改变/usr/local/Cellar.

下的文件

我可以想到两个不同的选项:

  1. 与其尝试对抗 homebrew,不如使用它们的配置位置,默认为 /usr/local/etc/rethinkdb.conf(取决于您的 home-brew 配置)。我认为他们不会在更新时更改配置文件,我的有限测试似乎支持了这一点。

  2. 不要使用 homebrew 启动的 plist,而是在 /Library/LaunchDaemons 中创建您自己的 plist。反正我不喜欢 homebrews,因为你最终将它从 ~/Library/LaunchAgents 进行符号链接,所以它只在你的用户登录时运行。这适用于单用户系统,但让我作为一个系统管理员有点生气。这个解决方案有点奇怪,因为你将 运行 一个用户拥有的二进制文件作为 root ......但是如果你为此使用 homebrew 你已经在类似的水域中了。

如果是我,我会完全跳过 homebrew,而只使用网站上提供的 .pkg(完全公开:我在处理那个 .pkg)。您链接的文档包括如何为此设置 launchd plist,并且由于 .pkg 不包含该内容,因此您不必担心这会弄乱您的配置。