【问题标题】:Should we use absolute paths or relative paths for file names in configuration files?我们应该在配置文件中使用绝对路径还是相对路径作为文件名?
【发布时间】:2012-01-31 01:15:39
【问题描述】:

我正在用 c++ 编写一组程序,我希望将其部署在多台机器上并分发给其他开发人员进行测试。如何在配置文件中指定文件路径以及如何在 cron 作业、命令行、示例 api 等中指定配置文件的位置?

我的意思是,我应该为我的应用程序使用 ROOT_DIR 并始终指定相对于该目录的文件路径吗?标准做法是什么?

我可以使用 autoconf 的配置脚本在我的应用程序配置文件中写入 ROOT_DIR 还是应该统计配置文件以找到它在机器中的位置?谢谢。

【问题讨论】:

    标签: linux configuration-files autoconf


    【解决方案1】:

    对于 Autoconf,我相信您通常使用 --prefix 选项将应用程序安装到非默认位置。默认是系统范围的。

    这里有一些Autoconf documentation

    这样,用户可以决定他们是需要系统范围还是特定用户(或其他)。

    您可能想要使用您的操作系统提供的包管理器。例如,在 Debian 上,您可能想要创建一个 deb 包 - 其他系统默认使用不同的包管理器。这将有助于解决您的应用程序的依赖关系。

    例如:如果您的应用程序需要库 Foo 的 X.Y 版本,包管理器可以确保您的用户在安装您的包之前拥有该版本。

    您也可以查看RPM Package Manager,它已经存在了一段时间。

    简而言之:没有一个答案。 Linux 中的常用比喻(:

    【讨论】:

    • 我正在使用 autoconf --prefix 选项让人们安装在他们喜欢的位置。但不确定我是否应该让 autoconf 在程序配置文件中写入该位置的绝对路径。目前将应用程序分发为 tar.gz。会考虑把它做成一个包。谢谢。
    【解决方案2】:
    What is the standard practice?
    

    您可能想查看Filesystem Hierarchy Standard 以澄清您对应该在哪里安装东西的想法。听起来您可能想在 /var/lib 而不是 HOME_DIR 中安装一些东西,但如果没有更多细节就很难说。

    【讨论】:

    • 感谢您的链接。对不起,虽然措辞不佳。我的意思是我的应用程序的 ROOT_DIR。已编辑问题。我希望人们将应用程序安装在 /opt/ 或他们选择的目录中。
    猜你喜欢
    • 2015-11-13
    • 1970-01-01
    • 2011-11-25
    • 2019-09-09
    • 2016-12-11
    • 2018-09-17
    • 2011-02-04
    • 2010-12-11
    • 1970-01-01
    相关资源
    最近更新 更多