He visto que muchas aplicaciones utilizan estos directorios y ahora estoy considerando usarlos para mi aplicación. ¿Cómo sé que esta es una carpeta oficialmente admitida y no solo una ubicación del mes para una configuración/caché por usuario?
He estado buscando algo oficial de Ubuntu pero fue en vano; tal vez alguien más conozca los términos de búsqueda adecuados o la ubicación de esta documentación. ¿Es esto algo que debería aceptar como un lugar de práctica estándar no declarado?
Respuesta1
Sí, existe un estándar: estos están especificados por freedesktop.org y son parte deEspecificaciones del directorio base XDG.
especificaciones de configuracióndescribe solo los requisitos básicos, pero los detalles se encuentran en las Especificaciones del directorio base. Los directorios ~/.config
y ~/.cache
son predeterminados a menos que se configure lo contrario:
Hay un conjunto de directorios base ordenados por preferencias en relación con los archivos de configuración que se deben buscar. Este conjunto de directorios está definido por la variable de entorno $XDG_CONFIG_DIRS.
Hay un único directorio base en relación con el cual se deben escribir datos no esenciales (en caché) específicos del usuario. Este directorio está definido por la variable de entorno $XDG_CACHE_HOME.
...
$XDG_CONFIG_HOME define el directorio base relativo al cual se deben almacenar los archivos de configuración específicos del usuario. Si $XDG_CONFIG_HOME no está configurado o está vacío, se debe usar un valor predeterminado igual a $HOME/.config.
...
$XDG_CACHE_HOME define el directorio base relativo al cual se deben almacenar los archivos de datos no esenciales específicos del usuario. Si $XDG_CACHE_HOME no está configurado o está vacío, se debe usar un valor predeterminado igual a $HOME/.cache.
Puede notar que estas especificaciones indican principalmente dónde se deben almacenar los datos, qué variables de entorno se usan y de qué manera (escritorio neutral, eficiente, etc.), pero la mayoría de los escritorios son libres de implementar la parte del "cómo". Los escritorios basados en GNOME se utilizarán gsettings
donde los usuarios de KDE pueden utilizar los mismos a través dekwriteconfig
, pero ambos dependerán del ~/.config
directorio en el proceso
Cuestionar puntos clave
¿Cómo sé que esta es una carpeta oficialmente admitida y no solo una ubicación del mes para una configuración/caché por usuario?
Estos directorios aparecen en la documentación oficial yEstándar de jerarquía del sistema de archivostambién los menciona. Esta es documentación oficial, por lo tanto, las carpetas son oficialmente compatibles.
¿Es esto algo que debería aceptar como un lugar de práctica estándar no declarado?
Depende de la aplicación que estés creando. ¿Se supone que la aplicación debe ser configurable por usuario o funcionar de manera consistente en todo el sistema? FHS nos dice que para cosas de todo el sistema deberíamos usar /etc
o/usr/local
, pero los directorios XDG deben usarse para configuraciones específicas del usuario, ~/.cache
y ~/.config
. Por supuesto, si la aplicación no depende de la configuración específica del usuario,/var/cachése puede utilizar en lugar del directorio por usuario. Por supuesto, siempre se puede tener un único ~/.appname.conf
archivo, directorio ~/.appname.db
o ~/.appname/
para guardar las configuraciones y el caché allí, pero eso no sería estándar; no es "malo", simplemente no estándar.