Provided by: debconf-doc_1.5.20_all bug

НАЗВАНИЕ

       debconf - система настройки пакетов в Debian

ОПИСАНИЕ

       Debconf  --  это система настройки пакетов в Debian. Она содержит редко
       используемую команду debconf, описанную в debconf(1)

       Debconf предоставляет единообразный интерфейс  для  настройки  пакетов,
       позволяя   вам   выбирать   из   нескольких  пользовательских  программ
       настройки. Она поддерживает предварительную настройку пакетов перед  их
       установкой,   что   позволяет  выполнять  большие  объёмы  установок  и
       обновлений, выяснив  в  начале  всю  необходимую  информацию,  и  затем
       продолжить работу, в то время как вы можете заняться чем-то другим. Она
       позволяет, если  вы  торопитесь,  пропускать  менее  важные  вопросы  и
       информацию при установке пакета (и вернуться к этому позже).

Предварительная настройка пакетов

       С  помощью  Debconf можно выполнить настройку пакетов перед тем как они
       будут установлены в  систему.  Хорошо,  когда  можно  ответить  на  все
       вопросы  пакетов в начале установки и пойти пить кофе пока производится
       установка.

       Если вы используете apt  (версии  0.5  или  выше)  и  установлен  пакет
       apt-utils,   то   каждый  пакет  при  установке  с  помощью  apt  будет
       предварительно      настраиваться.      Это      управляется      через
       /etc/apt/apt.conf.d/70debconf

       Иногда  может  понадобиться  предварительно  настроить пакет вручную, в
       случае если не используется apt для  установки.  Для  этого  вы  можете
       использовать  dpkg-preconfigure  (8),  просто  указав при запуске имена
       файла пакетов, которые нужно предварительно настроить. Для этого должен
       быть установлен пакет apt-utils.

Изменение настроек пакетов

       Предположим вы установили пакет и ответили на вопросы debconf, но после
       недолгого использования решили, что хотите изменить некоторые ответы на
       вопросы.  Раньше,  переустановка  пакета помогала в этом, но теперь при
       переустановке пакета окажется, что debconf запомнил ответы на вопросы и
       не задаст их снова (это фича).

       К  счастью,  debconf  позволяет  легко  перенастроить  любой  пакет его
       использующий.  Предположим, вы хотите перенастроить сам debconf. Просто
       запустите суперпользователем:
         dpkg-reconfigure debconf

       Вам  будут заданы все вопросы, которые вы видели при установке debconf.
       Также могут появиться дополнительные вопросы, так как задаются  вопросы
       с  более низким приоритетом, которые могли быть пропущены при установке
       пакета.  Вы  можете  перенастроить  любой  пакет,  который   использует
       debconf.

Интерфейсы

       Одним  из уникальных свойств debconf является то, что при желании можно
       использовать любой из многих интерфейсов. Доступные интерфейсы debconf:

       диалоговый
              Интерфейс  по  умолчанию,  использует программы whiptail (1) или
              dialog (1) для показа вопросов. Работает в текстовом режиме.

       из командной строки
              Наиболее традиционный интерфейс,  он  подобен  тому  как  всегда
              выполнялась  настройка  Debian: серия вопросов, вывод на консоль
              используя простой текст, и приглашение, использующее  библиотеку
              readline.   Он   даже   поддерживает   автодополнение   по  tab.
              Настоятельно рекомендуется пакет libterm-readline-gnu-perl, если
              вы   выбрали   этот  интерфейс;  модуль  по  умолчанию  readline
              недостаточно хорош. Как  минимум,  вам  нужно  установить  пакет
              perl-modules для использования этого интерфейса.

              Этот   интерфейс   поддерживает  несколько  специальных  горячих
              клавиш.  С  помощью  Pageup  (или  ctrl-u)  можно  вернуться   к
              предыдущему  вопросу  (если  это поддерживается пакетом, который
              использует debconf), и по pagedown (or ctrl-v) можно  перейти  к
              следующему вопросу.

              Это  самый  лучший  интерфейс  для  удалённого администрирования
              через медленное соединение, или для  тех  кому  больше  нравится
              работать с unix.

       пакетный
              Это  анти-интерфейс.  Он  вообще не взаимодействует с вами и для
              всех вопросов использует ответы по умолчанию. Изредка  он  может
              посылать  по  почте сообщения суперпользователю о пакете, но это
              всё;  он   молчалив   и   скромен,   идеальный   интерфейс   для
              автоматической  установки. Если вы используете этот интерфейс, и
              вам нужны ответы не по умолчанию, то нужно заранее ввести  их  в
              базу  данных  debconf;  подробности  смотрите  в  разделе  далее
              "Установка пакета без обслуживания".

       gnome  Это современный  X  интерфейс,  использующий  библиотеки  gtk  и
              gnome.  Естественно,  для  этого  требуется  работающий DISPLAY,
              иначе debconf перейдёт на другие интерфейсы. Заметим, что  этому
              интерфейсу требуется установленный пакет libgnome2-perl.

       kde    Это  простой  X интерфейс, использующий библиотеку Qt. Он хорошо
              вписывается в рабочий стол KDE. Естественно, для этого требуется
              работающий  DISPLAY  и  должен быть установлен пакет libqt-perl.
              Интерфейс  будет  переключен  на  диалоговый,  если  чего-то  не
              хватает.

       из текстового редактора
              Для  фанатиков,  любящих  всё делать из текстового редактора. Он
              запускает ваш редактор с файлом, который  выглядит  как  обычный
              конфигурационный  файл  unix, и вы редактируете файл для связи с
              debconf.   Автор   debconf   предпочитает   не    комментировать
              обстоятельства,  которые сподвигли к написанию этого интерфейса.

       веб-интерфейс
              Этот  интерфейс  работает  как  веб  сервер,   к   которому   вы
              подключаетесь  с  помощью  веб браузера для получения вопросов и
              ответов на  них.  Это  звучит  многообещающе,  но  пока  немного
              недоделано. При запуске интерфейса, он выводит адрес, который вы
              должны указать в веб-браузере. С целью  безопасности  запускайте
              веб-браузер на той же машине, которую конфигурируете.

              Помните,  что  это  очень  небезопасный  интерфейс.  Любой,  кто
              получит  доступ  к   компьютеру   во   время   настройки   может
              подключиться к веб-серверу и выполнить конфигурирование во время
              работы интерфейса.  Поэтому  это  не  более  чем  доказательство
              концепции.

       Вы   можете   изменить   интерфейс   по   умолчанию   debconf  выполнив
       перенастройку debconf. С другой стороны, если вы просто хотите изменить
       интерфейс  ненадолго,  вы  можете  установить  в  переменной  окружения
       DEBIAN_FRONTEND название нужного интерфейса. Пример:
         DEBIAN_FRONTEND=readline apt-get install slrn

       Команды dpkg-reconfigure (8) и dpkg-preconfigure  (8)  также  позволяют
       задать в параметре --frontend=.

       Заметим, что не все интерфейсы работают во всех случаях. Если интерфейс
       не удалось запустить по какой-то  причине,  debconf  покажет  сообщение
       объясняющее почему, и перейдёт к запуску другого похожего интерфейса.

Приоритеты

       Другим  замечательным  свойством  debconf  является  то, что задаваемые
       вопросы имеют приоритет.  Если  вы  не  хотите  беспокоиться  о  каждом
       пустяке,  то можете указать debconf задавать наиболее важные вопросы. С
       другой стороны, если вы фанат контроля,  то  можете  сделать  так,  что
       будут  показываться  все  вопросы.  Каждый  вопрос  имеет  приоритет. В
       порядке увеличения важности:

       low    Очень  простые  вопросы,  для  которых  значения  по   умолчанию
              подойдут в большинстве случаев.

       medium Обычные вопросы с разумными значениями по умолчанию.

       high   Вопросы без разумных значений по умолчанию.

       critical
              Вопросы,  которые  нужно,  действительно  нужно посмотреть (а не
              то...).

       Будут показаны только вопросы с выбранным вами приоритетом и  выше.  Вы
       можете   установить  значение  приоритета  с  помощью  переконфигурации
       debconf, или только на  время  передав  --priority=  значение  командам
       dpkg-reconfigure  (8) и dpkg-preconfigure (8), или установив переменную
       окружения DEBIAN_PRIORITY.

Среда хранения базы данных

       Debconf использует чрезвычайно  гибкую  и  потенциально  сложную  среду
       хранения  базы  данных  для хранения таких данных как вопросы и ответы.
       Для настройки базы данных используется файл /etc/debconf.conf. Если вам
       нужно  сделать  более  сложную  настройку,  например  заставить debconf
       читать  значения  по  умолчанию  из  удалённой  базы  данных,  сохраняя
       локальные замены, обратитесь к странице руководства debconf.conf (5) за
       всеми подробностями. Как правило база  данных  расположена  в  каталоге
       /var/cache/debconf/

Установка пакета без обслуживания

       Если  вы обслуживаете много машин, то в какой-то момент вам потребуется
       выполнить установку или  обновление  пакетов  на  многих  системах,  но
       конфигурационные  ответы  по  умолчанию  вас  не устраивают. Есть много
       способов сделать это; во всех  нужно  будет  настроить  базу  данных  и
       заставить debconf использовать её, чтобы получить ответы нужные вам.

       Вам определённо следует прочитать debconf.conf (5) перед этим разделом,
       так как вы должны понимать как работают базы данных debconf.

       Самый простой путь настроить базу данных -- установить пакеты  на  одну
       машину  отвечая  на  все  вопросы  как  обычно.  Или  вы  можете просто
       использовать dpkg-preconfigure(8) для настройки списка пакетов  без  их
       реальной установки. Или вы можете даже решиться на написание текстового
       файла базы данных debconf вручную или типа того.

       После  того  как  есть  база  данных,  вам  нужно   выяснить   как   её
       задействовать  с удалённой машины. Это естественно зависит от настройки
       этих систем и какой тип базы данных на них настроен.

       Если вы пользуетесь LDAP базой данных debconf, то вся сеть машин debian
       может  брать  все  ответы  на  вопросы любого или всех пакетов с одного
       сервера LDAP.

       Но возможно вы будете использовать что-то  более  лёгкое  в  настройке,
       скажем,  настройку  базы  данных  debconf  по  умолчанию, или просто не
       хотите, чтобы удалённые системы постоянно  использовали  LDAP.  В  этом
       случае  самое  лучшее  -- временно поместить на удалённых системах вашу
       базу данных в стек ниже существующих  баз  данных,  так  чтобы  из  неё
       брались  значения  по  умолчанию.  Debconf  предлагает  две  переменные
       окружения,  DEBCONF_DB_FALLBACK  и  DEBCONF_DB_OVERRIDE,  для   лёгкого
       выполнения этого на лету. Пример:

          cat /var/cache/debconf/config.dat | \
          ssh root@target "DEBIAN_FRONTEND=noninteractive \
                         DEBCONF_DB_FALLBACK=Pipe apt-get upgrade"

       Это  заставляет  debconf  на удалённой машине прочитать данные, которые
       были переданы по каналу через соединение ssh  и  рассматривать  их  как
       базу  данных  debconf  формата простого текста. Затем он использует эту
       базу данных как резервную: базу данных только для  чтения,  из  которой
       берутся  ответы на вопросы, если их нет в системной главной базе данных
       debconf.

       Вот    другой     способ     использования     переменной     окружения
       DEBCONF_DB_FALLBACK:

         ssh -R 389:ldap:389 root@target \
            "DEBCONF_DB_FALLBACK='LDAP{host:localhost}' apt-get upgrade"

       Здесь используется ssh для настройки туннеля до LDAP и запуска debconf.
       Для debconf указывается использовать сервер LDAP в  качестве  резервной
       базы  данных.  Заметим, что для настройки доступа debconf к базе данных
       LDAP используется  "{host:localhost}"  ,  то  есть  поле  "host"  имеет
       значение "localhost".

       Другой метод:

         scp config.dat root@target:
         ssh root@target "DEBCONF_DB_FALLBACK='File{/root/config.dat}' apt-get
       upgrade

       Здесь вы копируете базу данных с помощью scp, и затем через ssh debconf
       использует  скопированный  файл.  Здесь показано как можно использовать
       сокращённую запись параметров DEBCONF_DB_FALLBACK --  если  поле  имени
       отсутствует, то по умолчанию используется "имя файла".

       Есть    только    одна    проблема    при    использовании    параметра
       DEBCONF_DB_FALLBACK: резервная  база  данных  предоставляет  ответы  на
       вопросы,  на  которые  не  нашлось  ответов  в других базах данных, она
       служит только как резервная; после других баз данных.  Если  вам  нужно
       вместо  временной заменить существующие значения на удалённом хосте, вы
       должны    использовать    переменную    DEBCONF_DB_OVERRIDE.    Подобно
       DEBCONF_DB_FALLBACK,  она  указывает  на  временную базу данных, но эта
       база  данных   просматривается   раньше   всех   остальных,   и   может
       использоваться для замены существующих значений.

Разработка с Debconf

       Разработчикам   пакетов   и   всем,   кто  хочет  разрабатывать  пакеты
       использующие debconf, нужно прочитать debconf-devel(7).

       Вкратце, debconf связывается с сценариями сопровождающего  или  другими
       программами через стандартные ввод и вывод, используя простой командный
       язык, одна команда на строку  протокола,  похожий  на  распространённые
       протоколы  интернет  типа SMTP. Программы через протокол просят debconf
       показать вопросы пользователю и получить ответы. Сами вопросы  хранятся
       в  отдельном  файле,  называемом "файл templates", который имеет формат
       почти не отличающийся от формата debian файла control.

       Пакеты debian, которые используют debconf, обычно предоставляют и  файл
       templates  и  сценарий  "config"  (запускается во время предварительной
       настройки пакета), хранящиеся в управляющем разделе метаданных  пакета.

ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ

       DEBIAN_FRONTEND
              Используется   для   временного  изменения  интерфейса  debconf.
              Смотрите ранее.

       DEBIAN_PRIORITY
              Используется для временного  изменения  минимального  приоритета
              задаваемых вопросов debconf. Описание смотрите ранее.

       DEBCONF_DEBUG
              Отправлять  отладочный  вывод  в стандартный поток ошибок. Может
              быть  задано  имя  функции(facility)  или  регулярное  выражение
              описывающее   нужные  функции  (типа  '.*',  которое  заставляет
              выводить всю отладочную информацию). Имена функций:

              user   Отладочная информация, интересная пользователю debconf.

              developer
                     Отладочная информация, интересная разработчику пакета.

              db     Отладочная информация о среде хранения базы данных.

       DEBCONF_NOWARNINGS
              Установите в "yes", чтобы  выключить  некоторые  предупреждения,
              которые  может  выдавать  debconf.  Критические ошибки всё равно
              выводятся.

       DEBCONF_TERSE
              Установите в "yes",  чтобы  включить  краткий  режим  вывода,  в
              котором   интерфейсы  debconf  сокращают  свой  поток  сообщений
              насколько возможно.

       DEBCONF_DB_FALLBACK
              База данных, использующаяся после всех обычных баз, поэтому  она
              может  использоваться  как резервная для получения конфигурации.
              Смотрите  ранее  "Установка  пакета  без   обслуживания".   Если
              значение   переменной   --   имя   существующей  базы  данных  в
              debconf.conf, то будет использоваться эта  база  данных.  Иначе,
              переменная  окружения может быть использована для настройки базы
              данных  на  лету,  с  помощью  задания  типа   базы   данных   и
              необязательного   передаваемых   настроек  поле:значение  внутри
              фигурных скобок после типа. Для  разделения  полей  используются
              пробелы,   поэтому  вы  не  можете  указывать  значение  поля  с
              пробелами.

       Соответственно, здесь используется fallbackdb из debconf.conf:
         DEBCONF_DB_FALLBACK=fallbackdb

       А здесь устанавливается новая база данных с типом File, указывается имя
       файла для неё и выключается резервное копия:
         DEBCONF_DB_FALLBACK=File{Filename:/root/config.dat Backup:no}

       И  для  краткости,  здесь  устанавливается  база  данных с типом File и
       именем файла:
         DEBCONF_DB_FALLBACK=File{/root/config.dat}

       Заметим, что если резервная база данных устанавливается на лету, то  по
       умолчанию она доступна только для чтения.

       DEBCONF_DB_OVERRIDE
              База данных, использующаяся перед всеми обычными базами, поэтому
              она может изменить их значения. Значение переменной задаётся так
              же как и для переменной DEBCONF_DB_FALLBACK.

       DEBCONF_DB_REPLACE
              Использовать  указанную  базу  данных  вместо обычных. Это может
              быть полезно для  тестирования  с  отдельной  базой  данных  без
              создания  отдельного  файла  debconf.conf,  или  чтобы  избежать
              блокировки обычных баз данных.

       DEBCONF_SYSTEMRC
              Если  эта  переменная  окружения  установлена,   debconf   будет
              игнорировать  пользовательский файл ~/.debconfrc, и использовать
              вместо него системный. Если в ней задано имя обычного файла,  то
              debconf   будет   использовать   этот   файл   вместо  системных
              конфигурационных файлов.

       DEBCONF_FORCE_DIALOG
              Если эта переменная  окружения  установлена,  то  debconf  будет
              использовать dialog вместо whiptail для интерфейса dialog.

       DEBCONF_FORCE_XDIALOG
              Если  эта  переменная  окружения  установлена,  то debconf будет
              использовать Xdialog вместо whiptail для интерфейса dialog.

       DEBCONF_NONINTERACTIVE_SEEN
              Установка в "true" вызовет установку  флага  seen  для  вопросов
              заданных неинтерактивным интерфейсом.

ОШИБКИ

       Вероятно имеются как и в любом другом коде большого размера.

       При  отправке  отчёта  об  ошибке  проверьте,  что  включили  следующую
       информацию:

       *      Название интерфейса debconf при работе с которым возникла ошибка

       *      Что вы сделали что возникла ошибка.

       *      Полный   текст  любых  сообщений  об  ошибках.  Если  вы  можете
              повторить эту ошибку, сделайте это  с  установленной  переменной
              DEBCONF_DEBUG='.*'. Это намного ускорит отладку.

СМОТРИТЕ ТАКЖЕ

       debconf.conf(5),         debconf-devel(7),        dpkg-preconfigure(8),
       dpkg-reconfigure(8), debconf(1),

АВТОР

       Joey Hess <joeyh@debian.org>

                                                                    DEBCONF(7)