91 votes

Gconf, Dconf, Gsettings et la relation entre eux

J'essaie de comprendre comment Gconf, Dconf et Gsettings fonctionnent et quelle est la relation entre eux.

Tout ce que je sais, c'est que :

  • Gconf - Base de données basée sur XML (système dorsal). L'ancienne.
  • Dconf - Base de données BLOB (système backend). La plus récente.
  • Gsettings - Outil CLI pour modifier les paramètres. Il semble qu'il ne fonctionne qu'avec Dconf (bien que j'ai vu quelque part qu'il pourrait fonctionner avec Gconf).

Je sais que pour Gconf, il existe une interface graphique - Gconf-editor, et pour Dconf - Dconf-editor.

Donc :

  1. Quel système dorsal est le plus souvent utilisé - Dconf ou Gconf ?
  2. Gsettings fonctionne avec les deux ? Et pourquoi n'affiche-t-il pas tous les schémas Dconf ?
  3. Où Dconf enregistre-t-il ses données ?

65voto

Flimm Points 36395

Dconf est un magasin de données conçu pour stocker la configuration. Il remplace Gconf qui a été utilisé dans le même but. Finalement, aucun programme ne devrait plus dépendre de Gconf.

Gsettings est une bibliothèque de développement utilisée pour lire et écrire dans un backend de magasin de configuration. Sous Linux, elle utilise Dconf, mais sous Windows, elle utilise le registre, et sous OS X, elle utilise un magasin de données natif. (Le gsettings sur l'interface CLI utilise cette bibliothèque).

Il est recommandé aux développeurs d'applications et aux utilisateurs finaux d'utiliser Gsettings, et non Dconf directement.

Voir aussi :

46voto

lak-b Points 764

GConf est obsolète. Il s'agit de l'ancien système et API de configuration de GNOME 2.x, qui a été remplacé par DConf/GSettings dans les versions plus récentes. Cependant, certaines applications l'utilisent encore.

GSettings est une implémentation GLib de DConf, qui stocke ses données dans une base de données binaire.

Le site gsettings est simplement un outil permettant d'accéder aux paramètres ou de les modifier via l'API GSettings, de la même manière que l'ancien outil de ligne de commande gconftool L'outil de ligne de commande est pour GConf.

1voto

Nosredna Points 33670

Ignorer GConf ici parce qu'il est obsolète. TLDR : utiliser gsettings .

dconf ne connaît pas les schémas et ne tient donc pas compte des valeurs par défaut.

de man dconf (1) :

Le programme dconf peut effectuer diverses opérations sur une base de données dconf, comme lire ou écrire des valeurs individuelles ou des répertoires entiers. Cet outil opère directement sur dconf, sans utiliser les informations du schéma de gsettings. Par conséquent, il ne peut pas effectuer de contrôles de type et de cohérence sur les valeurs. L'utilitaire gsettings(1) est une alternative si de tels contrôles sont nécessaires.

Je ne me soucie pas tellement des "contrôles de type et de cohérence".
Dans la pratique, je vois une différence plus importante - dconf ne voit que les paramètres que j'ai explicitement définis. Exemple de paramètres non modifiés :

> gsettings list-recursively org.gnome.desktop.interface | grep scaling
org.gnome.desktop.interface text-scaling-factor 1.0
org.gnome.desktop.interface scaling-factor uint32 0

> gsettings list-schemas --print-paths | grep org.gnome.desktop.interface
org.gnome.desktop.interface /org/gnome/desktop/interface/

> dconf dump /org/gnome/desktop/interface/ | grep scaling
> dconf list /org/gnome/desktop/interface/ | grep scaling
> dconf read /org/gnome/desktop/interface/text-scaling-factor
> dconf read -d /org/gnome/desktop/interface/text-scaling-factor
>

Aquí dconf read -d prétend qu'il lit les valeurs par défaut, mais en pratique ne fait rien pour moi ?

Je peux toujours l'écrire (aveuglément), même si c'est à la même valeur 1.0 que la valeur par défaut et ensuite dconf le voit :

> dconf write /org/gnome/desktop/interface/text-scaling-factor 1.0
> dconf dump /org/gnome/desktop/interface/ | grep scaling-factor
text-scaling-factor=1.0
> dconf read /org/gnome/desktop/interface/text-scaling-factor
1.0
> dconf read -d /org/gnome/desktop/interface/text-scaling-factor
>

De plus, je peux stocker n'importe quelle clé que j'invente ! Donc, ça fonctionne comme un stupide table de hachage de valeurs fixées explicitement, et reset supprime simplement l'entrée :

> dconf write /org/gnome/desktop/interface/foo 123
> dconf dump /org/gnome/desktop/interface/ | grep foo
foo=123
> dconf reset /org/gnome/desktop/interface/foo
> dconf dump /org/gnome/desktop/interface/ | grep foo
>

gsettings utilise les données du schéma

C'est logique. J'ai utilisé locate --regexp org.gnome.desktop.interface et j'ai obtenu un couple de fichiers xml (peut-être pas le site droite), et les fichiers de schéma contiennent bien la valeur par défaut :

      <key name="text-scaling-factor" type="d">
        <range min="0.5" max="3.0"/>
        <default>1.0</default>
        <summary>Text scaling factor</summary>
        <description>
          Factor used to enlarge or reduce text display, without c>
        </description>
      </key>

Alors gsettings combine les valeurs effectivement définies avec les valeurs par défaut.

C'est pourquoi, au lieu d'un seul chemin, il prend deux arguments, par exemple. gsettings read _SCHEMA[:PATH]_ _KEY_ - car il part du schéma, le fait correspondre au chemin dconf (cf. gsettings list-schemas --print-paths mais prend le PATH optionnel pour les schémas relocalisables), et ensuite superpose les valeurs modifiées de dconf.

Il peut également fournir des informations sur le schéma :

> gsettings describe org.gnome.desktop.interface text-scaling-factor
Factor used to enlarge or reduce text display, without changing font size.

mais, de manière quelque peu décevante, je ne vois aucun moyen de lire simplement la valeur par défaut (si une valeur est définie), ni de distinguer si un paramètre est laissé par défaut ou explicitement défini à la même valeur.

dconf-editor utilise également les données du schéma

Malgré son nom, dconf-editor montre les paramètres modifiés et par défaut, y compris ceux qui sont par défaut et ceux qui sont explicitement définis :

screenshot from dconf-editor /org/gnome/desktop/interface/

et est pleinement conscient des informations sur les schémas :

screenshot from dconf-editor /org/gnome/desktop/interface/text-scaling-factor

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