来自Windows背景。
GUI Linux应用程序将数据文件(非用户特定的)存储在硬编码位置(例如/ etc / myapp / stuff)是否可以接受?我找不到任何会返回app数据首选目录的系统调用。那里有什么约定?
答案 0 :(得分:5)
/opt/appname/stuff
您的发行版的打包系统可能提供了处理常见安装路径的方法。您使用的是什么发行版?
答案 1 :(得分:4)
一般来说,是的,有一个约定。在大多数Linux系统上,应用程序配置文件通常位于/etc/appname/
。您需要咨询LSB (Linux Standard Base)和Linux FHS (Filesystem Hierarchy Standard)以获取各自的建议。
此外,如果您将应用程序定位到特定的Linux发行版,那么就打包和相关约定而言,该发行版供应商可能有自己的特定建议。您需要查看发行商供应商的开发者页面以获取更多信息。
答案 2 :(得分:3)
具有提升权限的进程的配置文件通常存储在/etc
中。具有提升权限的进程(Web服务器,邮件服务器,聊天服务器等)的数据文件通常存储在/var
中。这就是一致性结束的地方。有些人说你开始存储它们的位置(/etc
| /var
),然后为你的应用设置一个appname
子文件夹,然后根据需要从那里继续。
如果您不是具有提升权限的系统守护程序,则唯一一致的选择是启动用户主目录中的点目录。我认为免费桌面标准(XDG
)为每个用户配置指定~/.config
,为需要保存的可替换静态和/或生成数据指定~/.cache
。
查看我的主目录,我有几个关键点目录:
~/.cache
~/.config
~/.irssi
~/.maildir
~/.mozilla
~/.kde
~/.ssh
~/.vnc
[编辑]
虽然不是系统调用,但我引用的XDG规范是http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
答案 3 :(得分:2)
有某些惯例。
/etc/appname/
。/var/*/appname/
- /var/cache/appname/
,/var/spool/appname/
和/var/lib/appname/
是最常见的/usr/share/appname/
。答案 4 :(得分:1)
在编译之前配置应用程序时,通常会设置Unix / Linux / GNU应用程序用于存储配置文件和其他数据的完整路径。然后将这些路径硬编码到已编译的二进制文件中(您可以通过在某些现有可执行文件上运行strings(1)
来查看此示例。)
也就是说,这些类型的路径是构建时可配置的,而不是默认的运行时可配置 。许多应用程序将支持命令行选项以指定配置文件的位置,并且该配置文件通常包含其他应用程序资源的路径。这允许应用程序以最小配置(内置路径)运行,但也允许站点完全自定义路径。
答案 5 :(得分:0)