djonasson.xdg_bds
Ansibleロール: XDG BDS
XDG Base Directory Specificationのシェル変数とディレクトリを設定するためのAnsibleロールです。
要件
特になし。
ロール変数
ロール変数は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ロールはダニエル・ヨナッソンによって作成されました。
Ansible role to configure XDG Base Directory Specification shell variables and directories.
ansible-galaxy install djonasson.xdg_bds