djonasson.xdg_bds
Ansible 角色:XDG BDS
这是一个用于配置 XDG 基目录规范 的 Ansible 角色,主要用于设置 shell 变量和目录。
需求
无。
角色变量
角色变量在 defaults/main.yml
中定义,默认值如下:
xdg_configure_state: present
设置通过 blockinfile 模块写入的状态。值可为: [present, absent]。
xdg_marker: "# {mark} ANSIBLE MANAGED BLOCK (djonasson.xdg_bds)"
标记行模板。
xdg_data_home: "{{ ansible_user_dir }}/.local/share"
$XDG_DATA_HOME
定义了用户特定数据文件存储的基础目录。如果 $XDG_DATA_HOME
未设置或为空,则使用默认值 $HOME/.local/share。
xdg_config_home: "{{ ansible_user_dir }}/.config"
$XDG_CONFIG_HOME
定义了用户特定配置文件存储的基础目录。如果 $XDG_CONFIG_HOME
未设置或为空,则使用默认值 $HOME/.config。
xdg_state_home: "{{ ansible_user_dir }}/.local/state"
$XDG_STATE_HOME
定义了用户特定状态文件存储的基础目录。如果 $XDG_STATE_HOME
未设置或为空,则使用默认值 $HOME/.local/state。
$XDG_STATE_HOME
包含在应用程序重启之间需要持久化的状态数据,但这些数据对用户来说不重要或不够便携,因此不应存储在 $XDG_DATA_HOME
中。可能包含:
- 行为历史(日志、历史、最近使用的文件等)
- 可以在重启时重用的应用程序状态(视图、布局、打开的文件、撤销历史等)
用户特定的可执行文件可以存储在 $HOME/.local/bin 中。发行版应确保该目录出现在 UNIX 的 $PATH 环境变量中。
由于 $HOME 可能在不同架构的系统之间共享,将已编译的二进制文件安装到 $HOME/.local/bin 可能会在不同架构的系统上引发问题。这通常不是问题,但如果将已编译的二进制文件放入其中,则应注意 $HOME 变得部分架构特定。
xdg_data_dirs: "/usr/local/share/:/usr/share"
$XDG_DATA_DIRS
定义了除了 $XDG_DATA_HOME
基目录之外,查找数据文件的优先顺序基础目录集合。$XDG_DATA_DIRS
中的目录应以冒号 ':' 分隔。
如果 $XDG_DATA_DIRS
未设置或为空,则使用值 /usr/local/share/:/usr/share/。
xdg_config_dirs: "/etc/xdg"
$XDG_CONFIG_DIRS
定义了除了 $XDG_CONFIG_HOME
基目录之外,查找配置文件的优先顺序基础目录集合。$XDG_CONFIG_DIRS
中的目录应以冒号 ':' 分隔。
如果 $XDG_CONFIG_DIRS
未设置或为空,则使用值 /etc/xdg。
基础目录的顺序表示它们的重要性;列出的第一个目录是最重要的。当相同的信息在多个地方定义时,与更重要基础目录相关的信息优先。由 $XDG_DATA_HOME
定义的基础目录被视为比 $XDG_DATA_DIRS
中定义的任何基础目录更重要。由 $XDG_CONFIG_HOME
定义的基础目录被视为比 $XDG_CONFIG_DIRS
中定义的任何基础目录更重要。
xdg_cache_home: "{{ ansible_user_dir }}/.cache"
$XDG_CACHE_HOME
定义了用户特定非关键数据文件存储的基础目录。如果 $XDG_CACHE_HOME
未设置或为空,则使用默认值 $HOME/.cache。
$XDG_RUNTIME_DIR
定义了用户特定非关键运行时文件和其他文件对象(如套接字、命名管道等)存储的基础目录。该目录必须由用户拥有,并且用户必须是唯一可以读写该目录的人。其 Unix 访问模式必须为 0700。
该目录的生命周期必须与用户登录绑定。当用户首次登录时必须创建该目录,如果用户完全注销,必须删除该目录。如果用户多次登录,应该指向同一目录,并且该目录必须从用户首次登录到最后一次注销期间一直存在,中间不得删除。该目录中的文件不得在重启或完全注销/登录周期中存活。
该目录必须位于本地文件系统上,且不得与任何其他系统共享。该目录必须完全符合操作系统的标准。具体而言,在类 Unix 操作系统上,必须支持 AF_UNIX 套接字、符号链接、硬链接、适当的权限、文件锁定、稀疏文件、内存映射、文件更改通知、可靠的硬链接计数,并且对文件名字符集不应施加任何限制。该目录中的文件可能会定期清理。为了确保文件不被删除,它们的访问时间戳应至少在每 6 小时的单调时间内修改一次,或者应在文件上设置“粘滞”位。
如果 $XDG_RUNTIME_DIR
未设置,应用程序应该回退到一个具有类似功能的替代目录并打印警告信息。应用程序应使用该目录进行通信和同步目的,而不应在其中放置较大的文件,因为它可能驻留在运行时内存中,并不能保证能够换出到磁盘。
依赖
无。
示例剧本
- hosts: localhost
roles:
- role: djonasson.xdg_bds
许可证
MIT
作者
此 Ansible 角色由 Daniel Jonasson 创建。
Ansible role to configure XDG Base Directory Specification shell variables and directories.
ansible-galaxy install djonasson.xdg_bds