dconf es un sistema de configuración de bajo nivel y una herramienta de administración de configuraciones. Su objetivo principal es proporcionar un back-end para GSettings en plataformas que aún no tienen sistemas de almacenamiento de configuración. Depende de GLib . Es parte de GNOME 3 y es un reemplazo de GConf .
![]() | |
![]() Una captura de pantalla de dconf Editor que se ejecuta en Arch Linux | |
Desarrollador (es) | El proyecto GNOME (Allison Lortie) |
---|---|
Versión inicial | 16 de septiembre de 2009 |
Lanzamiento estable | 0.28 / 13 de marzo de 2018 [1] |
Repositorio | ![]() |
Escrito en | C |
Tipo | Configuración, gestión de ajustes |
Licencia | Licencia pública general reducida GNU |
Sitio web | wiki |
![](http://wikiimg.tojsiabtv.com/wikipedia/commons/thumb/3/3f/GNOME_Tweak_Tool_3.32_screenshot.png/220px-GNOME_Tweak_Tool_3.32_screenshot.png)
Descripción general
dconf es un sistema de configuración simple basado en claves. Las claves existen en una base de datos no estructurada (pero se pretende que las claves que lógicamente pertenecen juntas se agrupen).
Se admite la notificación de cambios.
Se admite el apilamiento de múltiples fuentes de configuración. Se admiten claves obligatorias.
El apilado se puede realizar en "puntos de montaje". Por ejemplo, la configuración del sistema global se puede montar en / system / dentro del espacio de configuración de cada usuario. Una única fuente de configuración puede aparecer en varios puntos de la jerarquía. Por ejemplo, además de apilar las teclas normales en / usuario / , las claves predeterminadas del sistema también pueden aparecer en / default / para inspección y modificación mediante una utilidad de configuración de políticas del sistema.
La integración de PolicyKit está planificada para que un usuario normal pueda obtener temporalmente la capacidad de, por ejemplo, escribir en las claves bajo / system / (o / predeterminado / ). Esto significa que programas como la utilidad de configuración GNOME Display Manager ya no tienen que ejecutarse como root.
Arquitectura de software
Dado que un inicio de sesión típico de GNOME consta de miles de lecturas e idealmente 0 escrituras, dconf está optimizado para lecturas. Normalmente, leer una clave de dconf implica cero llamadas al sistema y cero cambios de contexto. Esto se logra con un formato de archivo simple que funciona como formato de almacenamiento de datos en dconf y como mecanismo de IPC entre los clientes y el servidor.
Evitar viajes de ida y vuelta y cambios de contexto es deseable en sí mismo, pero la ventaja real [ cita requerida ] proviene de permitir que el programador de E / S en el kernel haga un mejor trabajo al saturarlo con solicitudes provenientes de todas las aplicaciones que intentan leer su claves (a diferencia de un servidor de configuración común que solicita en serie una sola clave a la vez).
Tener todas las claves en un único formato binario compacto también evita los intensos problemas de fragmentación que experimenta actualmente el enfoque del árbol de directorios de archivos xml.
![dconf Architecture](http://wikiimg.tojsiabtv.com/wikipedia/commons/thumb/5/51/Architecture_de_dconf.png/220px-Architecture_de_dconf.png)
Las escrituras están menos optimizadas: atraviesan el bus y son manejadas por un "escritor", un servicio D-Bus , de la manera habitual. El escritor también maneja la notificación de cambio. La razón para tener un servicio de autobús es porque lograr que los clientes se sincronicen al escribir sería muy difícil. [ cita requerida ]
No es necesario activar el servicio de escritura hasta que se realice la primera operación de escritura.
El servicio es completamente sin estado y puede iniciarse y detenerse dinámicamente. El demonio de bus mantiene la lista de notificaciones de cambios que le interesan a un cliente individual (como una lista de seguimiento / coincidencia de señales de D-Bus).
base de datos dconf
Una base de datos dconf consta de un solo archivo en formato binario, es decir, no es un archivo de texto. El formato se define como gvdb (archivo de base de datos GVariant). Es un formato de archivo de base de datos simple que almacena un mapeo de cadenas a valores GVariant de una manera que es extremadamente eficiente para búsquedas.
El archivo de base de datos GNOME para cada usuario es, de forma predeterminada ~/.config/dconf/user
, un archivo que se espera que esté en formato GVDB.
GVariante
GVariant es un tipo de datos de valor fuertemente tipado. GVariant es un tipo de datos variante; puede contener uno o más valores junto con información sobre el tipo de valores.
Una GVariant puede contener tipos simples, como números enteros o valores booleanos; o tipos complejos, como una matriz de dos cadenas o un diccionario de pares clave-valor. Un GVariant también es inmutable: una vez que se ha creado, ni su tipo ni su contenido se pueden modificar más. GVariant es útil siempre que sea necesario serializar datos, por ejemplo, cuando se envían parámetros de métodos en DBus o cuando se guardan configuraciones mediante GSettings.
GVariant es parte de GLib.
- https://developer.gnome.org/glib/stable/glib-GVariant.html
- https://git.gnome.org/browse/glib/tree/glib/gvariant.c
GSettings
La clase GSettings proporciona una API de alto nivel para que la aplicación almacene y recupere su propia configuración.
El programa de utilidad /usr/bin/gsettings
está contenido en libglib2.0-bin .
GSettings es parte de GIO. [2] que forma parte de GLib. libglib2.0-0
Documentación
Hay disponible una guía para administradores del sistema para dconf. Desde la versión 0.2, dconf tiene la licencia LGPL versión 2.1 "o posterior".
Historia
Historial de versiones
Versión | Fecha de lanzamiento | Cambios significativos |
---|---|---|
0,1 | 2009-09-18 | |
0,2 | 2009-10-27 | |
0,3 | 2010-05-25 | |
0.4 | 2010-07-12 | |
0,5 | 2010-09-15 | |
0,6 | 2010-12-21 | |
0,7 | 2011-05-09 | |
0,8 | 2011-07-26 | |
0,9 | 2011-09-19 | |
0,10 | 2011-09-26 | |
0,11 | 2012-03-19 | |
0,12 | 2012-05-01 | |
0,13 | 2012-08-20 | |
0,14 | 2012-11-01 | |
0,15 | 2013-02-11 | |
0,16 | 2013-07-16 | |
0,17 | 2013-09-16 | |
0,18 | 2013-09-23 | |
0,19 | 2014-03-17 | |
0,20 | 2014-03-24 | compilación de dconf: escribir siempre little endian |
0,21 | 2014-07-22 | |
0,22 | 2014-09-19 | |
0,23 | 2015-03-16 | dividir dconf-editor en un paquete separado |
0,24 | 2015-03-23 | |
0,25 | 2015-12-16 | |
0,26 | 2016-03-23 | libdbus-1 back-end eliminado; dconf ahora siempre usa GDBus |
0,27 | 2017-10-17 | Puerto al sistema de compilación Meson (# 784910) |
Alternativas
Elektra almacena las preferencias en archivos de configuración personalizables, generalmente en forma de texto, como INI, XML o JSON. A diferencia de dconf, el administrador del sistema elige qué ajustes de configuración se deben colocar en qué archivo (y en qué formato) mediante el montaje.
Inkscape almacena las preferencias en un archivo XML ubicado en ~/.config/Inkscape/preferences.xml
(en Linux) y %APPDATA%\inkscape\preferences.xml
(en Windows). [3]
GIMP los almacena en un archivo en /etc/gimp/2.0/gimprc
y otro en $HOME/.gimp-2.8/gimprc
sobrescribir la configuración global si es así.
KDE no usa dconf. En KDE, las configuraciones se almacenan en archivos de texto simples ubicados en ~/.kde/share/config/
o .kde/config/
, en lugar de una base de datos. La GUI para cambiar esta configuración es la configuración del sistema, aunque la configuración de la aplicación individual generalmente se establece dentro de la aplicación.
La mayoría de las aplicaciones de Windows aún almacenan su configuración de usuario en archivos .ini (inicialización) individuales repartidos por el disco. Además, utilizan el Registro de Windows para almacenar información que podría ser de interés para otro software. Para tales programas, el Registro de Windows actúa más como un tablero de anuncios que como un sistema de configuración del usuario. Cuando una aplicación de este tipo se elimina (desinstala), también es más bien el valor predeterminado que la excepción, que sus entradas de registro no se purgan y permanecen en la base de datos. El Registro de Windows es bastante extenso y con el tiempo se vuelve cada vez más inflado. Sin que el usuario sepa exactamente qué buscar, una simple búsqueda puede compararse con encontrar la "aguja en un pajar". Por lo tanto, con respecto al propósito y el volumen, dconf no se puede comparar con el Registro de Windows. De hecho, lo único en común entre dconf y el Registro de Windows es el uso de una base de datos.
El Registro de Windows está estructurado en colmenas. Cada colmena se guarda en un archivo separado (en el directorio C:\Windows\system32\config\
del sistema y en la partición de arranque). Cuando un sistema Windows arranca, el cargador de arranque (el mismo que carga el kernel y otros archivos de arranque, como los controladores de arranque, desde la partición de arranque) carga el archivo SYSTEM en la memoria. Se guarda una gran cantidad de información crucial en el subárbol SYSTEM, incluida información sobre qué controladores usar con qué dispositivos, qué software ejecutar inicialmente y muchos parámetros que rigen el funcionamiento del sistema. Las convenciones para la disposición de la información de configuración están mal definidas.
Referencias
- ^ "tarballs de dconf" . Consultado el 22 de abril de 2018 .
- ^ "gio / gsettings.c · master · GNOME / GLib" . GitLab . Consultado el 22 de abril de 2018 .
- ^ "Inkscape Wiki: subsistema de preferencias" .