НАЗВАНИЕ
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
- Задаёт имя базы данных, из которой загружаются данные о настройке.
- Templates
- Задаёт имя базы данных, которая используется для кэширования шаблонов.
- Frontend
- Используемая интерфейсная программа Debconf, заменяет любое установленное значение интерфейсной программы базы данных debconf.
- Priority
- Приоритет, который должен использовать Debconf, заменяет любой заданный приоритет, установленный в базе данных debconf.
- Admin-Email
- Адрес электронной почты, куда Debconf должен посылать сообщения, если требуется, чтобы администратор получил важные замечания. По умолчанию, всё направляется «root», но может быть задан любой рабочий адрес электронной почты. Если вы предпочитаете выключить отправку почты в debconf, укажите пустой адрес. Он может быть заменён в ходе работы значением переменной окружения DEBCONF_ADMIN_EMAIL.
- Debug
- Если установлено, то debconf будет выводить отладочную информацию в стандартный поток ошибок. Значениями могут быть что-нибудь типа «user», «developer», «db» или регулярное выражение. Обычно вместо указания в файле настройки, для временного включения режима отладки устанавливайте переменную окружения DEBCONF_DEBUG.
- NoWarnings
- Если установлено, то debconf не будет выводить предупреждения о различных событиях. Такое поведение можно изменить на лету с помощью переменной окружения DEBCONF_NOWARNINGS.
- Log
- Заставить debconf сохранять отладочную информацию в syslog. Значение контролирует, что протоколировать. Смотрите описание Debug ранее, какие значения могут быть заданы для протоколирования.
- Terse
- Если установлено в «true», то некоторые интерфейсные программы debconf активируют специальный краткий режим вывода, чтобы выдавать как можно меньше информации. По умолчанию false. Краткий режим может быть временно включён с помощью переменной окружения DEBCONF_TERSE.
Config: configdb
Templates: templatedb Остальные строки в файле настраивают базу данных. Строка базы данных начинается с имени базы:
Name: configdb Затем задаётся какой драйвер базы данных должен использоваться для базы. Доступные драйверы описаны далее в разделе ДРАЙВЕРЫ.
Driver: File Вы можете указать, что база данных неважна для нормальной работы debconf сделав её необязательной. Debconf будет действовать без плана, если база данных недоступна по какой-то причине.
Required: false Вы можете пометить любую базу данных как доступную только для чтения и debconf не будет ничего в неё писать.
Readonly: true Также вы можете ограничить типы данных, которые будут храниться в базе с помощью строк Accept- и Reject-; описание смотрите далее в разделе УПРАВЛЕНИЕ ДОСТУПОМ. Остальная часть строки каждой базы данных используется для указания специальных для каждого драйвера параметров. Например, драйверу Text требуется указать каталог где лежит база данных, для этого нужно указать:
Filename: /var/cache/debconf/config.dat
ДРАЙВЕРЫ
Уже созданы несколько драйверов, нужные можно написать с небольшими усилиями. Драйверы бывают двух типов. Первый, настоящие драйверы — драйверы, которые на самом деле обеспечивают доступ и хранение данных в какой-то базе данных, которая может располагаться на локальной файловой системе или на удалённой машине. Второй -- мета драйверы, которые объединяют другие драйверы вместе образуя более интересные системы. Начнём с первых.- File
Данный
драйвер
базы
данных
позволяет
debconf хранить
всю
информацию
в одном
простом
текстовом
файле. Это
позволяет
легко
архивировать,
переносить
с машины на
машину и
редактировать
базу
данных. Это
один из
наиболее
компактных
форматов
базы
данных в
смысле
занимаемого
места на
диске. Он
также
является
одним из
самых
медленных.
Отрицательные
качества:
при
запуске debconf
этот файл
должен
быть
прочитан
целиком и
его
сохранение
медленно.
Настройки
драйвера:
Пример
строки с
настройками
базы
данных,
использующей
этот
драйвер:
Name: mydb
Driver: File
Filename: /var/cache/debconf/mydb.dat
- Filename
- Имя файла базы данных. Обязательное поле.
- Mode
- Права доступа с которыми нужно создать файл, если он не существует. По умолчанию — 600, так как в файл могут хранятся пароли в некоторых случаях.
- Format
- Формат файла. Смотрите раздел ФОРМАТЫ далее. По умолчанию используется rfc-822 подобный формат.
- Backup
- Нужно ли делать резервную копию перед изменением. По умолчанию включено.
Name: mydb
Driver: File
Filename: /var/cache/debconf/mydb.dat
- DirTree
Этот
драйвер
базы
данных
позволяет
debconf хранить
данные в
виде
иерархической
структуры
каталогов.
Имена
различных
шаблонов debconf
и вопросов
используются
как есть
для
образования
каталогов
с файлами в
них. Такой
формат
базы
данных
самый
лёгкий для
просмотра
и
изменения
вручную. Он
имеет
хорошую
скорость
загрузки и
записи. Для
него также
типично
занимать
много
места, так
как он
содержит
множество
маленьких
файлов и
подкаталогов,
которые
занимают
дополнительное
пространство.
Настройки
драйвера:
Пример
строки с
настройками
базы
данных,
использующей
этот
драйвер:
Name: mydb
Driver: DirTree
Directory: /var/cache/debconf/mydb
Extension: .txt
- Directory
- Каталог размещения файлов. Обязателен.
- Extension
- Расширение, которое прибавляется к именам файлов. Должна указываться не пустая строка; по умолчанию — «.dat»
- Format
- Формат файла. Смотрите раздел ФОРМАТЫ далее. По умолчанию используется rfc-822 подобный формат.
- Backup
- Нужно ли делать резервную копию перед изменением. По умолчанию включено.
Name: mydb
Driver: DirTree
Directory: /var/cache/debconf/mydb
Extension: .txt
- PackageDir
Данный
драйвер
базы
данных
является
компромиссным
между File и DirTree.
Здесь
используется
каталог, в
котором
располагаются
(приблизительно)
один файл
на каждый
пакет,
использующий
debconf. Он
довольно
быстр, хотя
и
использует
немного
больше
места, чем
драйвер
базы
данных File.
Данный
драйвер
настраивается
теми же
параметрами
как и
драйвер DirTree, а
также:
Name: mydb
Driver: PackageDir
Directory: /var/cache/debconf/mydb
- Mode
- Права доступа с которыми нужно создать файл. По умолчанию — 600, так как в файл могут сохраняться пароли в некоторых случаях.
Name: mydb
Driver: PackageDir
Directory: /var/cache/debconf/mydb
- LDAP
ПРЕДУПРЕЖДЕНИЕ:
Данный
драйвер
базы
данных
является
экспериментальным.
Используйте
с
осторожностью.
Данный
драйвер
базы
данных
позволяет
использовать
каталоги 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
- server
- Имя узла или IP адрес LDAP сервера, к которому нужно подключаться.
- port
- Порт LDAP сервера, к которому нужно подключаться. Если не задан, то используется значение порта по умолчанию.
- basedn
- DN, под которым хранятся все элементы настройки. Предполагается, что каждый элемент расположен в DN как cn=<имя элемента>,<корневой элемент DN>. Если такая структура не соблюдается, тады ой.
- binddn
- DN для подключения к каталогу. Если указано none, то используется анонимное подключение.
- bindpasswd
- Пароль для использования в аутентификационном подключении (используется вместе с binddn, описанном ранее). Если не указан, то используется анонимное подключение.
Этот
параметр
не должен
использоваться
в общем
случае.
Анонимное
подключение
должно
использоваться
большую
часть
времени
для
доступа
только на
чтение.
Указание DN
подключения
и пароля
должно
быть
зарезервировано
для редких
случаев,
когда вы
хотите
обновить
данные о
настройке
debconf.
- keybykey
- Включить доступ к отдельным записям в LDAP, а не получать их все сразу в начале. Это очень полезно при мониторинге журналов LDAP при запросе определённых ключей debconf. В этом случае вы также можете записать пользовательский код обработки на серверной части LDAP.
Заметим,
что когда
этот
параметр
включён,
соединение
с сервером LDAP
остаётся
активным
на всё
время
работы Debconf.
Это слегка
отличается
от
поведения
при
получении
всего за
один раз,
где
производятся
два
подключения
к LDAP: в начале
при
получении
всех
записей, и в
конце для
записи
произошедших
изменений.
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
- Pipe
Специальный
драйвер
базы
данных для
чтения и
записи
базы
данных со
стандартного
ввода/вывода.
Он может
быть
полезным в
нестандартных
ситуациях.
Настройки
драйвера:
Это все
реальные
драйверы,
теперь
переходим
к
мета-драйверам.
- Format
- Формат чтения и записи. Смотрите раздел ФОРМАТЫ далее. По умолчанию используется rfc-822 подобный формат.
- Infd
- Номер файлового дескриптора чтения. По умолчанию для чтения используется stdin. Если указано значение «none», то из базы данных при запуске чтение данных проводиться не будет.
- Outfd
- Номер файлового дескриптора записи. По умолчанию для записи используется stdout. Если указано значение «none», то база данных при выходе будет выброшена.
- Stack
Данный
драйвер
объединяет
в стек
несколько
разных баз
данных
(любых
типов), и
позволяет
обращаться
к ним как к
одной.
Когда у debconf
запрашивают
значение,
то
возвращается
значение
из первой
базы
данных
стека,
которая
его
содержит.
Если debconf
записывает
что-то в
базу
данных, то
запись
обычно
производится
первым
драйвером
стека,
который
содержит
изменяемое
debconf значение,
и если
такого нет,
то новое
значение
добавляется
в первую
доступную
для записи
базу
данных
стека.
Более
интересной
становится
ситуация,
если одна
из баз
данных
стека
доступна
только для
чтения.
Рассмотрим
стек с
базами
данных foo, bar и baz,
где foo и baz
доступны
только для
чтения. Debconf
хочет
изменить
значение, и
это
значение
имеется
только в baz,
но она
доступна
только для
чтения.
Драйвер stack
достаточно
сообразителен,
чтобы не
пытаться
туда
писать, и
копирует
элемент из baz
в bar, и
сохраняет
изменения bar.
Теперь
значение в baz
перекрыто
значением
из bar, и более
не видно
для debconf.
Такое
поведение
полезно,
если вы
хотите
настроить
много
систем из
центральной,
доступной
только на
чтение
базы
данных, но
хотите
заменить
некоторые
значения
для каждой
системы.
Если
рассматривать
ещё и
контроль
доступа, то
стеки
позволяют
выполнять
много
других
интересных
вещей, типа
перенаправления
всех
паролей в
одну базу
данных, в то
время как
близлежащая
база
данных
хранит
что-то ещё.
Только
один
параметр
настройки
требуется
для
настройки
стека:
Например:
Name: megadb
Driver: stack
Stack: passworddb, configdb, companydb ПРЕДУПРЕЖДЕНИЕ: Драйвер stack пока не был хорошо протестирован. Используйте на свой страх и риск.
Backup
- Stack
- В ней нужно указать список других баз данных, по имени, чтобы показать из чего состоит стек.
Name: megadb
Driver: stack
Stack: passworddb, configdb, companydb ПРЕДУПРЕЖДЕНИЕ: Драйвер stack пока не был хорошо протестирован. Используйте на свой страх и риск.
Данный
драйвер
передаёт
все
запросы
другому
драйверу
базы
данных. Но
он также
копирует
все
запросы на
запись
драйверу
резервной
базы
данных.
Для
настройки
драйвера
вы должны
указать
следующие
поля:
Например:
Name: backup
Driver: Backup
Db: mydb
Backupdb: mybackupdb
Debug
- Db
- База данных для чтения и записи.
- Backupdb
- Имя базы данных, куда посылаются копии запросов на запись.
Name: backup
Driver: Backup
Db: mydb
Backupdb: mybackupdb
Этот
драйвер
передаёт
все
запросы
другому
драйверу
базы
данных,
выводя
подробную
информацию
для
отладки о
запросе и
результате.
Для
настройки
драйвера
вы должны
указать
следующие
поля:
- Db
- База данных для чтения и записи.
УПРАВЛЕНИЕ ДОСТУПОМ
При настройке базы данных, помимо прочего вы можете использовать некоторые поля для управления доступом. Вы можете указать, например, что база данных хранит только пароли, или сделать, чтобы база данных хранила только данные в имени которых есть выражение «foo».- Readonly
- Как уже упоминалось, данное управление доступом, если установлено в «true», то база данных становится доступной только для чтения. Debconf будет читать значения из неё, но не никогда не будет что-либо писать.
- Accept-Name
- Текст в этом поле должен быть perl-совместимым регулярным выражением, с которым сравниваются имена при запросе данных из базы. База данных позволяет debconf получить доступ или изменять данные, только если имена элементов подпадают под регулярное выражение.
- Reject-Name
- Подобно Accept-Name, за исключением того, что любое подпадающее под регулярное выражение имя будет отклонено.
- Accept-Type
- Другое регулярное выражение, с ним сравнивается тип элемента, к которому осуществляется доступ. Доступ будет разрешён только если тип подпадает под регулярное выражение.
- Reject-Type
- Подобно Accept-Type, за исключением того, что любой подпадающий под регулярное выражение тип будет отклонён.
ФОРМАТЫ
Некоторые драйверы баз данных используют модули формата для управления реальным форматом, в котором база данных хранится на диске. Поддерживаемые форматы:- 822
- Данный формат файла основан на формате rfc-822 заголовков почтовых сообщений. Похожие форматы широко используются в Debian; например в файле status программы dpkg и т.д.
ПРИМЕР
Вот более сложный пример файла 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