14 votes

Existe-t-il une documentation officielle sur les répertoires tels que ~/.config et ~/.cache ?

J'ai vu ces répertoires utilisés par de nombreuses applications et j'envisage maintenant de les utiliser pour mon application. Comment puis-je savoir qu'il s'agit d'un dossier officiellement supporté et non pas d'un emplacement au goût du mois pour un cache/configuration par utilisateur ?

J'ai cherché quelque chose d'officiel de la part d'Ubuntu mais en vain ; peut-être que quelqu'un d'autre connaît les termes de recherche appropriés ou l'emplacement de cette documentation. Est-ce que c'est quelque chose que je devrais accepter comme une pratique standard non déclarée ?

21voto

Sergiy Kolodyazhnyy Points 97292

Oui, il existe une norme : ces normes sont spécifiées par freedesktop.org et font partie de la norme Spécifications du répertoire de base XDG .

config-spec ne présente que les exigences de base, mais les détails se trouvent dans les spécifications du répertoire de base. Les ~/.config y ~/.cache sont les répertoires par défaut, sauf configuration contraire :

Il existe un ensemble de répertoires de base, classés par ordre de préférence, dans lesquels les fichiers de configuration doivent être recherchés. Cet ensemble de répertoires est défini par la variable d'environnement $XDG_CONFIG_DIRS.

Il existe un répertoire de base unique dans lequel les données non essentielles (mises en cache) propres à l'utilisateur doivent être écrites. Ce répertoire est défini par la variable d'environnement $XDG_CACHE_HOME.

...

$XDG_CONFIG_HOME définit le répertoire de base dans lequel les fichiers de configuration spécifiques à l'utilisateur doivent être stockés. Si $XDG_CONFIG_HOME n'est pas défini ou est vide, le répertoire par défaut est $HOME/.config.

...

$XDG_CACHE_HOME définit le répertoire de base dans lequel les fichiers de données non essentiels spécifiques à l'utilisateur doivent être stockés. Si $XDG_CACHE_HOME n'est pas défini ou est vide, le répertoire par défaut est $HOME/.cache.

Vous remarquerez que ces spécifications indiquent principalement où les données doivent être stockées, quelles variables d'environnement doivent être utilisées et de quelle manière (neutre pour le bureau, efficace, etc.), mais la plupart des bureaux sont libres de mettre en œuvre la partie "comment" de ces spécifications. Les bureaux basés sur GNOME utiliseront gsettings alors que les utilisateurs de KDE peuvent utiliser la même chose via kwriteconfig mais ils s'appuieront tous deux sur ~/.config dans le processus


Points clés de la question

Comment puis-je savoir qu'il s'agit d'un dossier officiellement pris en charge et non d'un emplacement au goût du jour pour un cache/configuration par utilisateur ?

Ces répertoires apparaissent dans la documentation officielle et Norme de hiérarchie des systèmes de fichiers les mentionne également. Il s'agit d'une documentation officielle, les dossiers sont donc officiellement pris en charge.

S'agit-il d'une pratique standard non déclarée que je devrais accepter ?

Cela dépend de l'application que vous créez. L'application est-elle censée être configurable par utilisateur ou fonctionner de manière cohérente dans l'ensemble du système ? FHS nous dit que pour les choses à l'échelle du système, nous devrions utiliser /etc o /usr/local Mais les répertoires XDG doivent être utilisés pour les configurations spécifiques à l'utilisateur. ~/.cache y ~/.config . Bien entendu, si l'application ne dépend pas de paramètres spécifiques à l'utilisateur, /var/cache peut être utilisé à la place du répertoire par utilisateur. Bien sûr, vous pouvez toujours avoir un seul répertoire ~/.appname.conf un fichier ~/.appname.db o ~/.appname/ pour y conserver les configurations et le cache, mais ce ne serait pas standard ; pas "mauvais" - juste non standard.

Voir aussi

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X