【问题标题】:Linux/UNIX install data filesLinux/UNIX 安装数据文件
【发布时间】:2010-11-30 20:11:18
【问题描述】:

我了解在 Linux/UNIX 上安装 C++ 命令行程序时,习惯上不是将其保留在其原始目录中,而是将其移动到路径上已经存在的目录中,因此我有一个 make install 条目:

mv ayane /usr/local/bin

再往前看,我最终会得到一个或两个目录,其中包含程序需要读取的配置、数据和脚本文件,有些在启动时读取,有些在以后按需读取,在某些情况下随后修改并再次保存。

这就引出了程序如何知道其数据文件所在位置的问题。在我的 Ubuntu Linux 虚拟机上查看 /bin,它似乎名副其实地只包含二进制文件,因此数据文件通常不会与程序放在同一目录中。

将数据文件放在程序可以知道的位置的通常解决方案是什么?

【问题讨论】:

标签: linux unix configuration installation


【解决方案1】:

有一些文件系统标准,阅读FHS 或类似的东西(注意文件系统布局有不同的方法)。

基本上,您将可执行二进制文件放入$prefix/bin/,将每个主机配置放入$prefix/etc/,将每个用户放入用户的主目录,将独立于架构的静态数据放入$prefix/share,将依赖于架构的数据和库放入$prefix/lib 和可变数据通常进入/var/lib/

最好让这些东西在编译时和运行时都可配置。而且习惯上不要手动编写Makefilesinstall 目标,您可能需要查看autotools 套件或类似套件(根据口味)。

【讨论】:

  • 将数据放入 $prefix/share/ 和 $prefix/lib/ 更有意义。如果有多个配置文件:/etc/
  • PiedPiper,对,当我提到 $prefix/lib$prefix/share 时,我并没有暗示这些文件必须是上述目录的直接后代。
【解决方案2】:

您应该查看File System Hierarchy 标准。

简而言之,如果您的程序需要系统范围的文件,那么配置应该进入/etc。诸如脚本和图像文件之类的资源放在/usr/share 中。运行时数据进入/var/run

当然,每个用户的文件都存在于用户的主目录中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 2021-12-23
    • 2020-11-28
    相关资源
    最近更新 更多