尽管我对这个主题做了一些研究,但我无法获得我想要的确切信息。其实没有具体透露,每个人的做法都不同。
为了:文件系统层次结构标准
我应该将我的文件存储在:
临时文件:
/var/temp/app_name/*
或者/temp/app_name/*
缓存文件:
/var/cache/app_name/*
配置文件:
~/.config/app_name/*
日志文件:
/var/log/app_name/*
数据文件(数据库等):
???
问题一:对于最新的系统来说,这是正确的方法吗?
对于XDG
标准在这里解释:
临时文件:
???
或者/temp/app_name/*
缓存文件:
~/.cache/app_name/*
配置文件:
~/.config/app_name/*
日志文件:
???
数据文件(数据库等):
???
我不明白为什么我们将缓存文件存储在~/.cache
.这对我来说没有任何意义,因为有一个名为的内置缓存文件夹/var/cache
在这种情况下,我很困惑。在我调查的每个地方,都有不同的方法。
问题2:对于纯 Linux 发行版(不使用 $XDG)来创建应用程序,我们应该将文件(数据、日志、临时文件、配置等)放在哪里?
Q3:有些应用程序使用Linux结构,但有些应用程序使用LinuxXDG
结构。他们如何选择这个?根据什么情况?$XDG
如果我们使用它们,它们会使用环境变量吗?
根据以上情况,我的env | grep -i "XDG"
输出:
XDG_VTNR=1
XDG_SESSION_ID=1
XDG_DATA_DIRS=/home/furkan/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
XDG_RUNTIME_DIR=/run/user/1000
XDG_SEAT=seat0
附: 我不知道我所展示的部分 ???
答案1
您的部分困惑可能是用户应用程序和系统应用程序之间的区别。
因此,例如,apache
它不是作为最终用户运行(“Harry”通常不运行 Apache;它是从系统启动脚本运行的 - systemd 或 init 等)。这类应用程序通常会遵循文件系统标准,并将日志文件存储在/var/log
、配置文件/etc
等中。
类似地,系统管理员执行的旨在root
影响整个机器的命令(例如apt
或yum
)也遵循文件系统标准。
然而,设计为由最终用户执行的应用程序(例如网络浏览器和其他桌面应用程序)遵循XDG 标准。这里“哈利”有自己的个人缓存,与“朱莉”不同;他们访问不同的网站,因此缓存了不同的页面。类似地,Harry 可能会配置与 Julie 不同的桌面,因此配置将位于该~/.config
区域中。
某些位置(例如/tmp
)被设计为由所有用户共享,因此即使桌面应用程序也可以使用它们......但即使在这里有时/run/user/
也会使用更现代的结构。