Den*_*rax 2 linux directory directory-structure xdg xdg-user-dirs
尽管我对这个主题做了一些研究,但我无法获得我想要的确切信息。其实没有具体透露,每个人的做法都不同。
对于:文件系统层次结构标准
我应该将我的文件存储在:
临时文件: /var/temp/app_name/*或/temp/app_name/*
缓存文件: /var/cache/app_name/*
配置文件: ~/.config/app_name/*
日志文件: /var/log/app_name/*
数据文件(数据库等): ???
Q1:这对于最新的系统来说是正确的方法吗?
对于此处解释的XDG标准:
临时文件: ???或/temp/app_name/*
缓存文件: ~/.cache/app_name/*
配置文件: ~/.config/app_name/*
日志文件: ???
数据文件(数据库等): ???
我不明白为什么我们将缓存文件存储在~/.cache. 这对我来说没有任何意义,因为有一个名为的内置缓存文件夹/var/cache
在这种情况下,我很困惑。在我调查的每个地方,都有不同的方法。
Q2:对于纯 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
Run Code Online (Sandbox Code Playgroud)
PS: 我不知道我展示的部分 ???
您的部分困惑可能是用户应用程序和系统应用程序之间的区别。
因此,例如,apache它不作为最终用户运行(“Harry”通常不运行 Apache;它是从系统启动脚本运行的 - systemd 或 init 等)。这类应用程序通常会遵循文件系统标准,并将日志文件存储在/var/log、配置文件/etc等中。
类似地,系统管理员执行的旨在root影响整个机器的命令(例如apt或yum)也遵循文件系统标准。
然而,设计为由最终用户执行的应用程序(例如网络浏览器和其他桌面应用程序)遵循XDG 标准。这里“哈利”有自己的个人缓存,与“朱莉”不同;他们访问不同的网站,因此缓存了不同的页面。类似地,Harry 可能会配置与 Julie 不同的桌面,因此配置将位于该~/.config区域中。
某些位置(例如/tmp)被设计为由所有用户共享,因此即使桌面应用程序也可以使用它们......但即使在这里/run/user/有时也会使用更现代的结构。