服务器上需要遵循哪些目录规范?

服务器上需要遵循哪些目录规范?

在 PC 上,XDG Desktop 规范允许各个桌面为各种数据设置不同的文件夹。当编写仅在服务器上运行的应用程序时,是否应该简单地进行硬编码等/etc/myapp/var/cache/myapp或者是否应该检查潜在的环境变量或类似变量?

答案1

据我所知,大多数 Linux 应用程序确实都有硬编码路径,但有时允许使用环境变量和命令行参数重新定义它们。

我认为对这些路径进行硬编码没有任何问题,但如果您允许将配置文件位置指定为命令行参数,并且在此 conf 文件中允许更改/var/cache/myapp.

如果您对所有内容进行硬编码,至少请确保发行版中的现有软件包不会与您的位置发生冲突。对于基于 DNF 的发行版,它将是(这是一个示例):

dnf whatprovides '/var/cache/dnf'
dnf-4.9.0-1.fc35.noarch : Package manager
Repo        : @System
Matched from:
Filename    : /var/cache/dnf

dnf-4.9.0-1.fc35.noarch : Package manager
Repo        : fedora
Matched from:
Filename    : /var/cache/dnf

所以你显然不能使用/var/cache/dnf.

最后,将所有内容安装在/opt/appname或中会容易得多/usr/local/opt/appname。没有本机 Linux 应用程序使用这些目录。

答案2

应该在程序上硬编码路径吗?不!

至少,您应该在编译时配置路径,以便应用程序可以安装在/var/local、 、/opt、 或/home/someuser、 或系统管理员想要的任何位置。更好的是,有一个命令行选项,可用于将程序指向其配置文件,然后可用于设置所需的任何其他路径。 (在编译时设置默认位置。)

相关内容