¿Existe documentación oficial en directorios como ~ / .config y ~ / .cache?

13

He visto estos directorios siendo utilizados por muchas aplicaciones y ahora estoy considerando usarlos para mi aplicación. ¿Cómo sé que esta es una carpeta oficialmente compatible y no solo una muestra de la ubicación del mes para una caché / configuración por usuario?

He estado buscando en Google y 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 especificado?

Danny A
fuente
"tal vez alguien más conoce los términos de búsqueda adecuados": no estoy seguro de la documentación oficial para su uso, pero estos se consideran archivos de puntos, más específicamente carpetas de puntos en esos ejemplos. Están ocultos por defecto y se usan comúnmente para guardar las preferencias del usuario (~ / .config) y otros archivos de "soporte" como caché (~ / .cache).
Nmath
2
"oficial de Ubuntu" lugar equivocado. Está definido por la organización freedesktop tan dependiente del escritorio. No solo Ubuntu. Ah, y estos son PAUTAS.
Rinzwind
1
@SergiyKolodyazhnyy es interesante discutir la historia de cómo surgieron los archivos de puntos, pero en la práctica los archivos de puntos / carpetas de puntos están ocultos (no visibles) de forma predeterminada por los administradores de archivos y comandos bash como dir. De esa manera, sí, están absolutamente "ocultos". Ocultar archivos de esta manera tiene un buen propósito para evitar que el usuario final los altere / elimine accidentalmente, es por eso que todavía se usan de manera tan ubicua. Estoy de acuerdo en que los archivos de puntos no deben usarse para seguridad, en el sentido de que no son imposibles de encontrar / leer / alterar.
Nmath
3
@SergiyKolodyazhnyy pocos métodos son 100% efectivos por sí mismos. En cuanto a afirmar que los archivos de puntos están "de ninguna manera ocultos" es demostrablemente falso, ya que esa es la razón principal por la que se usan y el único beneficio para agregar lo anterior .. ¿Son totalmente invisibles? No, y no deberían serlo. ¿Pueden aún ser leídos / escritos? Sí, y deberían hacerlo. ¿Son invisibles (ocultos) en la mayoría de los casos? Sí, ese es el punto
Nmath
1
@Nmath Bueno, aceptemos no estar de acuerdo :) Además, la sección de comentarios no es para discusiones extensas.
Sergiy Kolodyazhnyy

Respuestas:

19

Sí, hay un estándar: estos están especificados por freedesktop.org y son parte de las Especificaciones del Directorio Base de XDG .

config-spec describe los requisitos básicos, pero los detalles se encuentran en las Especificaciones del directorio base. Los directorios ~/.configy ~/.cacheson predeterminados a menos que estén configurados de otra manera:

Hay un conjunto de directorios base ordenados de preferencia 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.

Existe un único directorio base en relación con el cual se deben escribir los 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 en relación con el cual deben almacenarse 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 en relación con el 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 observar que estas especificaciones en su mayoría indican dónde deben almacenarse los datos, qué variables de entorno se utilizan 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 usarán gsettingsdonde los usuarios de KDE pueden usar lo mismo a través de kwriteconfig, pero ambos dependerán del ~/.configdirectorio en el proceso


Pregunta puntos clave

¿Cómo sé que esta es una carpeta oficialmente compatible y no solo una muestra de la ubicación del mes para una caché / configuración por usuario?

Estos directorios aparecen en la documentación oficial y el Estándar de jerarquía del sistema de archivos también los menciona. Esta es la 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 especificado?

Depende de la aplicación que estés creando. ¿Se supone que la aplicación se puede configurar por usuario o que funciona de manera consistente en todo el sistema? FHS nos dice que para todo el sistema debemos usar /etco /usr/local, pero los directorios XDG deben usarse para configuraciones específicas del usuario, ~/.cachey ~/.config. Por supuesto, si la aplicación no depende de la configuración específica del usuario, se puede usar / var / cache en lugar del directorio por usuario. Por supuesto, siempre podría tener un único ~/.appname.confarchivo, un directorio ~/.appname.db o un ~/.appname/directorio para mantener las configuraciones y el caché allí, pero eso no sería estándar; no "malo", simplemente no estándar.

Ver también

Sergiy Kolodyazhnyy
fuente
ehm, ¿publicaste esto antes que yo? o durante? > :)
Rinzwind
@Rinzwind Justo antes de tu respuesta :) Mira la línea de tiempo askubuntu.com/posts/1151791/timeline
Sergiy Kolodyazhnyy
Te dejaré tener este: =)
Rinzwind
Ah, increíble, debería haber cavado más profundo, gracias por la información.
Danny A
¿Qué parte de POSIX habla sobre el uso del directorio?
chepner