DEBCONF.CONF(5) | File Formats Manual | DEBCONF.CONF(5) |
debconf.conf - файл настройки debconf
Debconf — это система настройки пакетов Debian. Файлы /etc/debconf.conf и ~/.debconfrc являются файлами настройки, которые debconf использует для определения какие базы данных должны быть задействованы. Эти базы данных используются для хранения двух типов информации; динамически настраиваемых данных, которые ввёл пользователь и статических данных шаблонов. Debconf предлагает гибкую, расширяемую среду хранения базы данных. С минимальными затратами могут быть созданы новые драйверы, и их любые комбинации могут объединяться различными путями.
# Это
пример
файла
настройки,
которого
#
достаточно
для
использования
debconf.
Config: configdb
Templates: templatedb
Name: configdb
Driver: File
Filename: /var/cache/debconf/config.dat
Name: templatedb
Driver: File
Mode: 644
Filename: /var/cache/debconf/templates.dat
Форматом файла является серия строк, отделённых друг от друга как минимум одной полностью пустой строкой. Строки комментариев начинаются с символа «#» и игнорируются.
Первая строка файла имеет особое значение, она используется для настройки всего debconf. В первой строке должны быть два поля:
Могут быть указаны дополнительные поля:
Например,
первая
строка
может
выглядеть
так:
Config: configdb
Templates: templatedb
Остальные
строки в
файле
настраивают
базу
данных.
Строка
базы
данных
начинается
с имени
базы:
Name: configdb
Затем
задаётся
какой
драйвер
базы
данных
должен
использоваться
для базы.
Доступные
драйверы
описаны
далее в
разделе
ДРАЙВЕРЫ.
Driver: File
Вы можете
указать,
что база
данных
неважна
для
нормальной
работы debconf
сделав её
необязательной.
Debconf будет
действовать
без плана,
если база
данных
недоступна
по какой-то
причине.
Required: false
Вы можете
пометить
любую базу
данных как
доступную
только для
чтения и debconf
не будет
ничего в
неё писать.
Readonly: true
Также вы можете ограничить типы данных, которые будут храниться в базе с помощью строк Accept- и Reject-; описание смотрите далее в разделе УПРАВЛЕНИЕ ДОСТУПОМ.
Остальная
часть
строки
каждой
базы
данных
используется
для
указания
специальных
для
каждого
драйвера
параметров.
Например,
драйверу Text
требуется
указать
каталог
где лежит
база
данных, для
этого
нужно
указать:
Filename: /var/cache/debconf/config.dat
Уже созданы несколько драйверов, нужные можно написать с небольшими усилиями. Драйверы бывают двух типов. Первый, настоящие драйверы — драйверы, которые на самом деле обеспечивают доступ и хранение данных в какой-то базе данных, которая может располагаться на локальной файловой системе или на удалённой машине. Второй -- мета драйверы, которые объединяют другие драйверы вместе образуя более интересные системы. Начнём с первых.
Отрицательные качества: при запуске debconf этот файл должен быть прочитан целиком и его сохранение медленно.
Настройки драйвера:
Пример строки с настройками базы данных, использующей этот драйвер:
Name: mydb
Driver: File
Filename: /var/cache/debconf/mydb.dat
Настройки драйвера:
Пример строки с настройками базы данных, использующей этот драйвер:
Name: mydb
Driver: DirTree
Directory: /var/cache/debconf/mydb
Extension: .txt
Данный драйвер настраивается теми же параметрами как и драйвер DirTree, а также:
Пример строки с настройками базы данных, использующей этот драйвер:
Name: mydb
Driver: PackageDir
Directory: /var/cache/debconf/mydb
Данный драйвер базы данных позволяет использовать каталоги LDAP для хранения данных debconf. По своей природе каталоги LDAP обычно доступны только для чтения. Это результат влияния множественного одновременного доступа, и это обычно лучше для целостности данных, если никто не пытается изменять данные одновременно. Естественно, поддерживается режим записи для тех случаев когда вам нужно обновить данные настройки в каталоге.
О том как настроить LDAP сервер для debconf читайте в /usr/share/doc/debconf-doc/README.LDAP (из пакета debconf-doc).
Чтобы использовать данный драйвер базы данных вы должны установить пакет libnet-ldap-perl. Debconf предлагает данный пакет, но не зависит от него.
Внимательно отнеситесь к вопросам безопасности при использовании удалённой базы данных debconf. Если вы не доверяете источнику или сети доставки, безопасней не использовать данный драйвер.
Настройки драйвера:
Пример строки с настройками базы данных, использующей этот драйвер; предполагается, что используется удалённая база данных на example.com и она доступна анонимно:
Name: ldapdb
Driver: LDAP
Readonly: true
Server: example.com
BaseDN: cn=debconf,dc=example,dc=com
KeyByKey: 0
Другой пример: база данных LDAP установлена на локальной машине(localhost) и в неё разрешена запись:
Name: ldapdb
Driver: LDAP
Server: localhost
BaseDN: cn=debconf,dc=domain,dc=com
BindPasswd: secret
KeyByKey: 1
Настройки драйвера:
Это все реальные драйверы, теперь переходим к мета-драйверам.
Более интересной становится ситуация, если одна из баз данных стека доступна только для чтения. Рассмотрим стек с базами данных foo, bar и baz, где foo и baz доступны только для чтения. Debconf хочет изменить значение, и это значение имеется только в baz, но она доступна только для чтения. Драйвер stack достаточно сообразителен, чтобы не пытаться туда писать, и копирует элемент из baz в bar, и сохраняет изменения bar. Теперь значение в baz перекрыто значением из bar, и более не видно для debconf.
Такое поведение полезно, если вы хотите настроить много систем из центральной, доступной только на чтение базы данных, но хотите заменить некоторые значения для каждой системы. Если рассматривать ещё и контроль доступа, то стеки позволяют выполнять много других интересных вещей, типа перенаправления всех паролей в одну базу данных, в то время как близлежащая база данных хранит что-то ещё.
Только один параметр настройки требуется для настройки стека:
Например:
Name: megadb
Driver: stack
Stack: passworddb, configdb, companydb
ПРЕДУПРЕЖДЕНИЕ: Драйвер stack пока не был хорошо протестирован. Используйте на свой страх и риск.
Backup
Для настройки драйвера вы должны указать следующие поля:
Например:
Name: backup
Driver: Backup
Db: mydb
Backupdb: mybackupdb
Debug
Для настройки драйвера вы должны указать следующие поля:
При настройке базы данных, помимо прочего вы можете использовать некоторые поля для управления доступом. Вы можете указать, например, что база данных хранит только пароли, или сделать, чтобы база данных хранила только данные в имени которых есть выражение «foo».
Некоторые драйверы баз данных используют модули формата для управления реальным форматом, в котором база данных хранится на диске. Поддерживаемые форматы:
Вот более сложный пример файла debconf.conf.
# Эта строка
используется
для общей
настройки
debconf.
Config: stack
Templates: templates
Log: developer
Debug: developer
# Это моя
собственная
локальная
база
данных.
Name: mydb
Driver: DirTree
Directory: /var/cache/debconf/config
# Это другая
база
данных,
которую я
использую
только для
# хранения
настройки X
сервера.
Name: X
Driver: File
Filename: /etc/X11/debconf.dat
Mode: 644
# Это сложно
--
определить
какие
вопросы
#
принадлежат
X; здесь
должна
использоваться
сложная
#
древовидная
структура,
чтобы я мог
просто
сравнить с
выражением
^X/
# Уф.
Accept-Name: xserver|xfree86|xbase
# Это наша
глобальная
база
данных debconf
всей
компании,
# доступная
только на
чтение (для
меня!).
Name: company
Driver: LDAP
Server: debconf.foo.com
BaseDN: cn=debconf,dc=foo,dc=com
BindDN: uid=admin,dc=foo,dc=com
BindPasswd: secret
Readonly: true
# Я не хочу,
чтобы
пароли
брались
# откуда-то
ещё.
Reject-Type: password
# Если эта db
недоступна
по какой-то
причине --
#
продолжать
работать.
Required: false
# Я
использую
эту базу
данных для
хранения
# паролей
невредимыми
и в
безопасности.
Name: passwords
Driver: File
Filename: /etc/debconf/passwords
Mode: 600
Accept-Type: password
# Сложим все
их вместе
# в стек базы
данных.
Name: stack
Driver: Stack
Stack: passwords, X, mydb, company
# Итак, все
пароли
хранятся в
базе
данных
паролей.
#
Большинство
настроек X
берутся из
базы
данных X,
# а всё
остальное
берётся из
моей
главной
базы
# данных.
Значения
ищутся в
каждой из
них по
очереди,
# и если
значение
не
находится,
то
просматривается
# LDAP база
данных
компании
# (за
исключением
значений
паролей).
# В базе
данных
также
хранятся
шаблоны.
Тут
# нам не
нужно
ничего
изобретать.
Name: templates
Driver: File
Mode: 644
Format: 822
Filename: /var/cache/debconf/templates
Если вы задействуете что-то типа ${HOME} в этом файле, то оно будет заменено значением с именем переменной окружения.
Переменные окружения также могут использоваться для изменения базы данных на лету, смотрите debconf(7).
Имена полей (часть строки перед двоеточием) не зависят от регистра символов. Но значения зависят от регистра символов.
Ещё драйверов и форматов. Есть идея включить: драйвер SQL с возможностью доступа к удалённой базе данных, драйвер DHCP, который сделает доступными некоторые специальные вещи типа имени машины, IP адрес и DNS серверы, драйвер, который стягивает значения из публичных DNS записей полей TXT, формат, совместимый с выводом cdebconf, драйвер override, который сможет заменять значения поля или флагов во всех запросах, переданных через него.
/etc/debconf.conf
~/.debconfrc
Joey Hess <joeyh@debian.org>