Снимок экрана редактора dconf, работающего под Arch Linux | |
Разработчик (и) | Проект GNOME (Эллисон Лорти) |
---|---|
Первый выпуск | 16 сентября 2009 г.; 11 лет назад (16.09.2009) |
Стабильный выпуск | 0.28 / 13 марта 2018 г.; 2 года назад (13.03.2018) |
Репозиторий | |
Написано на | C |
Типе | Конфигурация, управление настройками |
Лицензия | Стандартная общественная лицензия ограниченного применения GNU |
Веб-сайт | wiki.gnome.org / Projects / dconf |
dconf - это низкоуровневая система конфигурации и инструмент управления настройками. Его основная цель - предоставить от back end до GSettings на платформах, на которых еще нет систем хранения конфигурации. Это зависит от GLib. Это часть GNOME 3 и замена для GConf.
dconf - это простой ключ - на основе системы конфигурации. Ключи существуют в неструктурированной базе данных (но предполагается, что ключи, которые логически связаны друг с другом, группируются вместе).
Поддерживается уведомление об изменении.
Поддерживается объединение нескольких источников конфигурации. Обязательные ключи поддерживаются.
Объединение может быть выполнено в «точках монтирования». Например, глобальная конфигурация системы может быть смонтирована в / system / внутри пространства конфигурации каждого пользователя. Один источник конфигурации может появляться в нескольких точках иерархии. Например, в дополнение к наложению на обычные ключи в / user /, системные ключи по умолчанию могут также появиться в / default / для проверки и модификации с помощью утилиты конфигурации системной политики. Интеграция
PolicyKit запланирована таким образом, чтобы обычный пользователь мог временно получить возможность, например, писать на ключи в / system / (или / default /). Это означает, что такие программы, как конфигурационная утилита GNOME Display Manager, больше не нужно запускать от имени пользователя root.
Поскольку типичный вход в систему GNOME состоит из тысяч чтений и в идеале 0 записей, dconf оптимизирован для чтения. Обычно чтение ключа из dconf не требует системных вызовов и переключений контекста. Это достигается с помощью простого формата файла, который одновременно используется как формат хранения данных в dconf и как механизм IPC между клиентами и сервером.
Избегать циклических переходов и переключений контекста желательно само по себе, но реальное преимущество заключается в том, что планировщик ввода-вывода в ядре может выполнять свою работу лучше, насыщая его запросами, поступающими из все приложения пытаются прочитать свои ключи (в отличие от обычного сервера конфигурации, последовательно запрашивающего один ключ за раз).
Наличие всех ключей в едином компактном двоичном формате также позволяет избежать серьезных проблем фрагментации, с которыми в настоящее время сталкивается подход дерева каталогов xml-файлов.
Архитектура dconfЗаписи менее оптимизированы - они проходят по шине и обрабатываются "писателем" - службой D-Bus - обычным способом. Уведомление об изменении также обрабатывается писателем. Причина наличия службы шины заключается в том, что синхронизация клиентов при записи будет очень сложной.
Службу записи не нужно активировать, пока не будет выполнена первая операция записи.
Служба полностью не имеет состояния и может запускаться и останавливаться динамически. Список уведомлений об изменениях, которые интересуют отдельного клиента, поддерживает демон шины (как список отслеживания / совпадения сигналов D-Bus).
Одна база данных dconf состоит из одного файла в двоичном формате, т.е. это не текстовый файл. Формат определяется как (файл базы данных GVariant). Это простой формат файла базы данных, в котором хранится сопоставление строк со значениями GVariant, что очень эффективно для поиска.
Файл базы данных GNOME для каждого пользователя по умолчанию ~ /.config / dconf / user
, файл, который должен быть в формате GVDB.
GVariant - это строго типизированный тип данных значения. GVariant - это вариантный тип данных; он может содержать одно или несколько значений вместе с информацией о типе значений.
GVariant может содержать простые типы, например целые числа или логические значения; или сложные типы, такие как массив из двух строк или словарь пар ключ-значение. GVariant также неизменен: после того, как он был создан, ни его тип, ни его содержимое не могут быть изменены. GVariant полезен, когда данные необходимо сериализовать, например, при отправке параметров метода в DBus или при сохранении настроек с помощью GSettings.
GVariant является частью GLib.
Класс GSettings предоставляет высокоуровневый API для приложения для хранения и получения собственных настроек.
Служебная программа / usr / bin / gsettings
содержится в libglib2.0-bin.
GSettings является частью GIO. который является частью GLib. libglib2.0-0
Доступно руководство системного администратора для dconf. Начиная с версии 0.2, dconf распространяется под лицензией LGPL версии 2.1 "или новее".
Версия | Дата выпуска | Существенные изменения |
---|---|---|
0.1 | 18.09.2009 | |
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 | компиляция dconf: всегда писать немного endian |
0,21 | 22.07.2014 | |
0,22 | 19.09.2014 | |
0,23 | 16.03.2015 | разделить dconf-editor в отдельный пакет |
0.24 | 2015-03-23 | |
0.25 | 2015-12-16 | |
0.26 | 2016-03-23 | back-end libdbus-1 удален; dconf теперь всегда использует GDBus |
0.27 | 2017-10-17 | Порт для системы сборки Meson (# 784910) |
Elektra сохраняет настройки в настраиваемых файлах конфигурации, обычно в текстовой форме, такой как INI, XML или JSON. В отличие от dconf, системный администратор выбирает, какие параметры конфигурации должны быть помещены в какой файл (и в каком формате) при монтировании.
Inkscape сохраняет настройки в одном XML-файле, расположенном в ~ /.config / Inkscape / preferences.xml
(в Linux) и % APPDATA% \ inkscape \ preferences.xml
(в Windows).
GIMP хранит их в одном файле по адресу /etc/gimp/2.0/gimprc
, а в другом - по адресу $ HOME /.gimp-2.8 / gimprc
перезапись глобальных настроек, если так.
KDE не использует dconf. В KDE настройки сохраняются в простых текстовых файлах, расположенных в ~ /.kde / share / config /
или .kde / config /
, а не в база данных. Графический интерфейс для изменения этих настроек - это системные настройки, хотя индивидуальные настройки приложения обычно устанавливаются внутри самого приложения.
Большинство приложений Windows по-прежнему хранят свои пользовательские настройки в отдельных файлах.ini (инициализации), разбросанных по диску. Они дополнительно используют реестр Windows для хранения информации, которая может представлять интерес для другого программного обеспечения. Для таких программ реестр Windows действует скорее как доска объявлений, чем как система пользовательских настроек. Когда такое приложение удаляется (деинсталлируется), это также скорее по умолчанию, чем исключение, что его записи реестра не очищаются и остаются в базе данных. Реестр Windows довольно обширен и со временем становится все больше и больше. Если пользователь точно не знает, что искать, простой поиск можно сравнить с поиском «иголки в стоге сена». Поэтому по назначению и объему dconf нельзя сравнивать с реестром Windows. Фактически, единственное сходство между dconf и реестром Windows - это использование базы данных.
Реестр Windows состоит из кустов. Каждый куст хранится в отдельном файле (в каталоге C: \ Windows \ system32 \ config \
системного и загрузочного раздела). Когда система Windows загружается, загрузчик начальной загрузки (тот же, что загружает ядро и другие загрузочные файлы, такие как загрузочные драйверы, из загрузочного раздела) загружает файл SYSTEM в память. В кусте SYSTEM хранится много важной информации, включая информацию о том, какие драйверы использовать с какими устройствами, какое программное обеспечение запускать на начальном этапе, и многие параметры, управляющие работой системы. Условные обозначения для организации информации о конфигурации определены плохо.