debconf 1.5.66 - en to ru translation catalogue (531 entries)

note: type: SH
en: NAME
ru: НАЗВАНИЕ

note: type: textblock
en: debconf - run a debconf-using program
ru: debconf - запускает программу, использующую debconf

note: type: SH
en: SYNOPSIS
ru: СИНТАКСИС

note: type: verbatim
en:  debconf [options] command [args]
ru:  debconf [параметры] команда [аргументы]

note: type: SH
en: DESCRIPTION
ru: ОПИСАНИЕ

note: type: textblock
en: Debconf is a configuration system for Debian packages. For a debconf overview and documentation for sysadmins, see L<debconf(7)> (in the debconf-doc package).
ru: Debconf — это система настройки пакетов в Debian. Описание debconf и документацию для системных администраторов можно найти в L<debconf(7)> (пакет debconf-doc).

note: type: textblock
en: The B<debconf> program runs a program under debconf's control, setting it up to talk with debconf on stdio. The program's output is expected to be debconf protocol commands, and it is expected to read result codes on stdin. See L<debconf-devel(7)> for details about the debconf protocol.
ru: Программа B<debconf> запускает команду под контролем debconf, настраивая её к обмену с debconf через стандартные потоки ввода-вывода (stdio). Ожидается, что вывод программы будет состоять из команд протокола debconf, а коды результата будут считываться ею со стандартного ввода (stdin). Подробней о протоколе debconf смотрите в L<debconf-devel(7)>.

note: type: textblock
en: The command to be run under debconf must be specified in a way that will let your PATH find it.
ru: Команда для запуска с помощью debconf должна находиться в одном из каталогов, указанных в PATH.

note: type: textblock
en: This command is not the usual way that debconf is used. It's more typical for debconf to be used via L<dpkg-preconfigure(8)> or L<dpkg-reconfigure(8)>.
ru: Такой способ запуска команды через debconf является нетипичным. Обычно, debconf запускается из L<dpkg-preconfigure(8)> или L<dpkg-reconfigure(8)>.

note: type: =head1
en: OPTIONS
ru: ПАРАМЕТРЫ

note: type: =item
en: B<-o>I<package>, B<--owner=>I<package>
ru: B<-o>I<пакет>, B<--owner=>I<пакет>

note: type: textblock
en: Tell debconf what package the command it is running is a part of. This is necessary to get ownership of registered questions right, and to support unregister and purge commands properly.
ru: Указать debconf от имени какого пакета должна выполняться команда. Это требуется для получения прав на зарегистрированные вопросы и для надлежащей поддержки команд unregister и purge.

note: type: =item
en: B<-f>I<type>, B<--frontend=>I<type>
ru: B<-f>I<интерфейс>, B<--frontend=>I<интерфейс>

note: type: textblock
en: Select the frontend to use.
ru: Указать нужную интерфейсную программу.

note: type: =item
en: B<-p>I<value>, B<--priority=>I<value>
ru: B<-p>I<значение_приоритета>, B<--priority=>I<значение_приоритета>

note: type: textblock
en: Specify the minimum priority of question that will be displayed.
ru: Установить минимальный приоритет задаваемых вопросов.

note: type: textblock
en: Enables terse output mode. This affects only some frontends.
ru: Включить краткий режим вывода. Влияет только на некоторые интерфейсные программы.

note: type: =head1
en: EXAMPLES
ru: ПРИМЕРЫ

note: type: textblock
en: To debug a shell script that uses debconf, you might use:
ru: Отладка сценария командной строки, использующего debconf:

note: type: verbatim
en:  DEBCONF_DEBUG=developer debconf my-shell-prog
ru:  DEBCONF_DEBUG=developer debconf моя-shell-программа

note: type: textblock
en: Or, you might use this:
ru: Или так:

note: type: verbatim
en:  debconf --frontend=readline sh -x my-shell-prog
ru:  debconf --frontend=readline sh -x моя-shell-программа

note: type: SH
en: SEE ALSO
ru: СМОТРИТЕ ТАКЖЕ

note: type: SH
en: AUTHOR
ru: АВТОР

note: type: textblock
en: Debconf::Client::ConfModule - client module for ConfModules
ru: Debconf::Client::ConfModule - клиентский модуль для ConfModules

note: type: verbatim
en:  use Debconf::Client::ConfModule ':all';
     version('2.0');
     my $capb=capb('backup');
     input("medium", "foo/bar");
     my @ret=go();
     if ($ret[0] == 30) {
     	# Back button pressed.
     	...
     }
     ...
ru:  use Debconf::Client::ConfModule ':all';
     version('2.0');
     my $capb=capb('backup');
     input("medium", "foo/bar");
     my @ret=go();
     if ($ret[0] == 30) {
     	# Нажата кнопка Назад.
     	...
     }
     ...

note: type: textblock
en: This is a module to ease writing ConfModules for Debian's configuration management system. It can communicate with a FrontEnd via the debconf protocol (which is documented in full in the debconf_specification in Debian policy).
ru: Этот модуль служит для облегчения написания ConfModules для системы управления настройками Debian. Он может взаимодействовать с интерфейсной программой по протоколу debconf (который полностью описан в debconf_specification в политике Debian).

note: type: textblock
en: The design is that each command in the protocol is represented by one function in this module (with the name lower-cased).  Call the function and pass in any parameters you want to follow the command. If the function is called in scalar context, it will return any textual return code. If it is called in list context, an array consisting of the numeric return code and the textual return code will be returned.
ru: По замыслу, каждая команда протокола представляется одной функцией в этом модуле (с именем из строчных букв). Вызовите функцию и передайте ей любые параметры, которые вы хотели бы передать команде. Если функция вызывается в скалярном контексте, она возвращает текстовый код возврата. Если функция вызывается в списочном контексте, то она возвращает массив, состоящий из числового кода возврата и текстового кода возврата.

note: type: textblock
en: This module uses Exporter to export all functions it defines. To import everything, simply import ":all".
ru: Этот модуль использует Exporter для экспорта всех объявленных функций. Чтобы импортировать всё &mdash; просто import ":all".

note: type: textblock
en: Ensure that a FrontEnd is running.  It's a little hackish. If DEBIAN_HAS_FRONTEND is set, a FrontEnd is assumed to be running.  If not, one is started up automatically and stdin and out are connected to it. Note that this function is always run when the module is loaded in the usual way.
ru: Гарантирует, что интерфейс запущен. Написано слегка грязно. Если установлена переменная DEBIAN_HAS_FRONTEND, то предполагается что интерфейс запущен. Если нет, то он запускается автоматически и выполняется подключение к его вводу и выводу. Заметим, что эта функция всегда выполняется при загрузке модуля обычным путём.

note: type: textblock
en: The frontend doesn't send a return code here, so we cannot try to read it or we'll block.
ru: В этой ситуации интерфейс не посылает код завершения, поэтому мы не можем даже пытаться прочитать его или заблокируемся.

note: type: textblock
en: Creates handler functions for commands on the fly.
ru: Создаёт на лету обработчик функций для команд.

note: type: textblock
en: The debconf specification (/usr/share/doc/debian-policy/debconf_specification.txt.gz).
ru: Спецификация debconf (/usr/share/doc/debian-policy/debconf_specification.txt.gz).

note: type: textblock
en: debconf-apt-progress - install packages using debconf to display a progress bar
ru: debconf-apt-progress - устанавливает пакеты используя debconf для показа индикатора выполнения

note: type: verbatim
en:  debconf-apt-progress [--] command [args ...]
     debconf-apt-progress --config
     debconf-apt-progress --start
     debconf-apt-progress --from waypoint --to waypoint [--] command [args ...]
     debconf-apt-progress --stop
ru:  debconf-apt-progress [--] команда [аргументы ...]
     debconf-apt-progress --config
     debconf-apt-progress --start
     debconf-apt-progress --from граница --to граница [--] команда [аргументы ...]
     debconf-apt-progress --stop

note: type: textblock
en: B<debconf-apt-progress> installs packages using debconf to display a progress bar. The given I<command> should be any command-line apt frontend; specifically, it must send progress information to the file descriptor selected by the C<APT::Status-Fd> configuration option, and must keep the file descriptors nominated by the C<APT::Keep-Fds> configuration option open when invoking debconf (directly or indirectly), as those file descriptors will be used for the debconf passthrough protocol.
ru: B<debconf-apt-progress> устанавливает пакеты, используя debconf с показом индикатора выполнения. Указанная I<команда> должна быть любой интерфейсной программой к apt, работающей в режиме командной строки; а именно, она должны уметь посылать информацию о ходе выполнения в файловый дескриптор, заданный параметром настройки C<APT::Status-Fd>, и должна держать открытыми файловые дескрипторы, назначенные в параметре настройки C<APT::Keep-Fds> при вызове debconf (явно или неявно), так как эти файловые дескрипторы будут использоваться для работы с debconf.

note: type: textblock
en: The arguments to the command you supply should generally include B<-y> (for B<apt-get> or B<aptitude>) or similar to avoid the apt frontend prompting for input. B<debconf-apt-progress> cannot do this itself because the appropriate argument may differ between apt frontends.
ru: В передаваемых аргументах команды обычно должен указываться параметр B<-y> (для B<apt-get> или B<aptitude>) или подобный ему, для того чтобы интерфейс к apt не предлагал вводить данные. B<debconf-apt-progress> не может сделать это самостоятельно, так как нужный аргумент может различаться у разных интерфейсов apt.

note: type: textblock
en: The B<--start>, B<--stop>, B<--from>, and B<--to> options may be used to create a progress bar with multiple segments for different stages of installation, provided that the caller is a debconf confmodule. The caller may also interact with the progress bar itself using the debconf protocol if it so desires.
ru: Параметры B<--start>, B<--stop>, B<--from> и B<--to> могут использоваться для создания многосегментного индикатора выполнения для разных стадий установки при условии, что запускающая сторона это debconf confmodule. Также, если требуется, запускающая сторона может самостоятельно взаимодействовать с индикатором выполнения через протокол debconf.

note: type: textblock
en: debconf locks its config database when it starts up, which makes it unfortunately inconvenient to have one instance of debconf displaying the progress bar and another passing through questions from packages being installed. If you're using a multiple-segment progress bar, you'll need to eval the output of the B<--config> option before starting the debconf frontend to work around this. See L<the EXAMPLES section/EXAMPLES> below.
ru: При запуске debconf блокирует доступ к своей базе данных config, что к сожалению не даёт иметь один экземпляр debconf отображающий индикатор выполнения и другой, задающий вопросы из устанавливаемых пакетов. Если вы используете многосегментный индикатор, то для того чтобы обойти это ограничение требуется обрабатывать результат работы параметра B<--config> перед запуском интерфейса debconf. Подробней смотрите в разделе L<ПРИМЕРЫ> далее.

note: type: textblock
en: Print environment variables necessary to start up a progress bar frontend.
ru: Вывести переменные окружения, необходимые для запуска индикатора выполнения интерфейса.

note: type: textblock
en: Start up a progress bar, running from 0 to 100 by default. Use B<--from> and B<--to> to use other endpoints.
ru: Запустить индикатор выполнения, по умолчанию отсчитывающий от 0 до 100. Чтобы указать другие границы используйте B<--from> и B<--to>.

note: type: =item
en: B<--from> I<waypoint>
ru: B<--from> I<граница>

note: type: textblock
en: If used with B<--start>, make the progress bar begin at I<waypoint> rather than 0.
ru: Если используется вместе со B<--start>, то индикатор выполнения начинает отсчёт с I<границы>, а не с 0.

note: type: textblock
en: Otherwise, install packages with their progress bar beginning at this "waypoint". Must be used with B<--to>.
ru: Иначе, при установке пакетов индикатор выполнения начинается со значения «границы». Должен использоваться с параметром B<--to>.

note: type: =item
en: B<--to> I<waypoint>
ru: B<--to> I<граница>

note: type: textblock
en: If used with B<--start>, make the progress bar end at I<waypoint> rather than 100.
ru: Если используется вместе со B<--start>, то индикатор выполнения заканчивает отсчёт по достижению I<границы>, а не на 100.

note: type: textblock
en: Otherwise, install packages with their progress bar ending at this "waypoint". Must be used with B<--from>.
ru: Иначе, при установке пакетов индикатор выполнения заканчивается на значении «границы». Должен использоваться с параметром B<--from>.

note: type: textblock
en: Stop a running progress bar.
ru: Остановить запущенный индикатор выполнения.

note: type: textblock
en: Avoid starting, stopping, or stepping the progress bar. Progress messages from apt, media change events, and debconf questions will still be passed through to debconf.
ru: Не запускать, останавливать или изменять индикатор выполнения. Сообщения о ходе выполнения от apt, события смены носителей и вопросы debconf всё равно будут проходить через debconf.

note: type: =item
en: B<--dlwaypoint> I<percentage>
ru: B<--dlwaypoint> I<процент>

note: type: textblock
en: Specify what percent of the progress bar to use for downloading packages.  The remainder will be used for installing packages. The default is to use 15% for downloading and the remaining 85% for installing.
ru: Задать, какой процент заполнения индикатора выполнения отвести на скачивание пакетов. Оставшаяся часть будет использована на показ установки пакетов. По умолчанию используется 15% на показ скачивания и оставшиеся 85% на установку.

note: type: =item
en: B<--logfile> I<file>
ru: B<--logfile> I<файл>

note: type: textblock
en: Send the normal output from apt to the given file.
ru: Направить результат работы apt в указанный файл.

note: type: textblock
en: Send the normal output from apt to stderr. If you supply neither B<--logfile> nor B<--logstderr>, the normal output from apt will be discarded.
ru: Послать нормальные результаты работы apt в поток ошибок stderr. Если вы не укажите B<--logfile> или B<--logstderr>, то нормальные результаты работы apt пропадут.

note: type: textblock
en: Terminate options. Since you will normally need to give at least the B<-y> argument to the command being run, you will usually need to use B<--> to prevent that being interpreted as an option to B<debconf-apt-progress> itself.
ru: Завершает параметры. Так как обычно нужно указать по крайней мере параметр B<-y> для запускаемой команды, требуется использовать B<-->, чтобы отделить эти параметры от параметров B<debconf-apt-progress>.

note: type: textblock
en: Install the GNOME desktop and an X window system development environment within a progress bar:
ru: Установить рабочий стол GNOME и среду разработки для X window system с выводом индикатора выполнения:

note: type: textblock
en: Install the GNOME, KDE, and XFCE desktops within a single progress bar, allocating 45% of the progress bar for each of GNOME and KDE and the remaining 10% for XFCE:
ru: Установить рабочие столы GNOME, KDE и XFCE с выводом индикатора выполнения, отдав по 45% индикатора выполнения GNOME и KDE, а оставшиеся 10% под XFCE:

note: type: =head1
en: RETURN CODE
ru: КОД ВОЗВРАТА

note: type: textblock
en: The exit code of the specified command is returned, unless the user hit the cancel button on the progress bar. If the cancel button was hit, a value of 30 is returned. To avoid ambiguity, if the command returned 30, a value of 3 will be returned.
ru: Код, возвращаемый при возврате указанной команды, если пользователь не нажал клавишу отмены на индикаторе выполнения. Если кнопка отмены была нажата, то возвращается значение 30. Для избежания неоднозначности, если команда возвращает 30, то будет возвращаться значение 3.

note: type: =head1
en: AUTHORS
ru: АВТОРЫ

note: type: textblock
en: debconf-escape - helper when working with debconf's escape capability
ru: debconf-escape - помощник при работе с возможностью debconf escape

note: type: verbatim
en:  debconf-escape -e < unescaped-text
     debconf-escape -u < escaped-text
ru:  debconf-escape -e < неэкранированный_текст
     debconf-escape -u < экранированный_текст

note: type: textblock
en: When debconf has the 'escape' capability set, it will expect commands you send it to have backslashes and newlines escaped (as C<\\> and C<\n> respectively) and will in turn escape backslashes and newlines in its replies. This can be used, for example, to substitute multi-line strings into templates, or to get multi-line extended descriptions reliably using C<METAGET>.
ru: Когда для debconf заявлена возможность «escape», он ожидает, что в командах посылаемых вами, будут экранироваться символы обратной косой черты и новой строки (в виде C<\\> и C<\n> соответственно) и в свою очередь тоже будет экранировать символы обратной косой черты и новой строки в ответах. Этот может быть полезно, например, для подстановки многострочных строк в шаблонах или для надёжного получения многострочного расширенного описания с помощью C<METAGET>.

note: type: textblock
en: L<debconf-devel(7)> (available in the debconf-doc package)
ru: L<debconf-devel(7)> (доступна из пакета debconf-doc)

note: type: textblock
en: debconf-communicate - communicate with debconf
ru: debconf-communicate - программа для взаимодействия с debconf

note: type: verbatim
en:  echo commands | debconf-communicate [options] [package]
ru:  echo команды | debconf-communicate [параметры] [пакет]

note: type: textblock
en: B<debconf-communicate> allows you to communicate with debconf on the fly, from the command line. The package argument is the name of the package which you are pretending to be as you communicate with debconf, and it may be omitted if you are lazy. It reads commands in the form used by the debconf protocol from stdin. For documentation on the available commands and their usage, see the debconf specification.
ru: B<debconf-communicate> позволяет обращаться к debconf из командной строки. В необязательном параметре «пакет» указывается название пакета от имени которого производится обращение к debconf. B<debconf-communicate> читает команды из стандартного входного потока (stdin), которые задаются формате протокола команд debconf. Описание допустимых команд и их использование можно найти в спецификации к debconf.

note: type: textblock
en: The commands are executed in sequence. The textual return code of each is printed out to standard output.
ru: Команды выполняются последовательно одна за другой. Результат работы каждой из них записывается в текстовом виде в стандартный выходной поток.

note: type: textblock
en: The return value of this program is the numeric return code of the last executed command.
ru: Данная программа возвращает значение равное числовому коду завершения последней выполненной команды.

note: type: SH
en: EXAMPLE
ru: ПРИМЕР

note: type: textblock
en: Print out the value of the debconf/frontend question.
ru: Показывает сохранённый ответ на вопрос о debconf/frontend.

note: type: =head1
en: WARNING
ru: ПРЕДУПРЕЖДЕНИЕ

note: type: textblock
en: This program should never be used from a maintainer script of a package that uses debconf! It may however, be useful in debugging.
ru: Эта программа никогда не должна вызываться из сценариев сопровождения пакета, который использует debconf! Однако она может пригодиться при отладке.

note: type: textblock
en: debconf-copydb - copy a debconf database
ru: debconf-copydb - копирует базу данных debconf

note: type: verbatim
en:  debconf-copydb sourcedb destdb [--pattern=pattern] [--owner-pattern=pattern] [--config=Foo:bar]
ru:  debconf-copydb бд_источник бд_приёмник [--pattern=шаблон] [--owner-pattern=шаблон] [--config=Foo:bar]

note: type: textblock
en: B<debconf-copydb> copies items from an existing debconf database into another, possibly new database. The two databases may have different formats; if so a conversion will automatically be done.
ru: B<debconf-copydb> копирует элементы из существующей базы данных debconf в другую, возможно новую базу данных. Базы данных могут иметь разный формат; если это так, то автоматически выполняется конвертирование.

note: type: =item
en: I<sourcedb>
ru: I<бд_источник>

note: type: textblock
en: The name of the source database. Typically it will be defined in your debconf.conf (or .debconfrc) file.
ru: Имя базы данных источника. Обычно, база уже описана в файле debconf.conf (или .debconfrc).

note: type: =item
en: I<destdb>
ru: I<бд_приёмника>

note: type: textblock
en: The name of the destination database. It may be defined in debconf.conf or .debconfrc, or you might define it on the command line (see below).
ru: Имя базы данных приёмника. Оно может быть описано в файле debconf.conf или .debconfrc или вы можете объявить его в командной строке (смотрите далее).

note: type: =item
en: B<-p> I<pattern>, B<--pattern> I<pattern>
ru: B<-p> I<шаблон>, B<--pattern> I<шаблон>

note: type: textblock
en: If this is specified, only items in I<sourcedb> whose names match the pattern will be copied.
ru: Если этот параметр указан, будут скопированы только те элементы из I<бд_источника>, чьи имена удовлетворяют шаблону.

note: type: =item
en: B<--owner-pattern> I<pattern>
ru: B<--owner-pattern> I<шаблон>

note: type: textblock
en: If this is specified, only items in I<sourcedb> whose owners match the pattern will be copied.
ru: Если этот параметр указан, будут скопированы только те элементы из I<бд_источника>, владельцы которых удовлетворяют шаблону.

note: type: textblock
en: Set option Foo to bar. This is similar to writing:
ru: Устанавливает параметр Foo в значение bar. Это похоже на написание:

note: type: textblock
en: In debconf.conf, except you probably want to leave off the space on the command line (or quote it: "Foo: bar"). Generally must be used multiple times, to build up a full configuration stanza. While blank lines are used to separate stanzas in debconf.conf, this program will assume that "Name:dbname" denotes the beginning of a new stanza.
ru: в файле debconf.conf, возможно, за исключением того, что вы не будете использовать пробел в командной строке (или укажите в кавычках: «Foo: bar»). Вообще, это должно указываться несколько раз, чтобы построить полную строку настройки. Хотя для разделения строк в debconf.conf используются символы новой строки, эта программа предполагает, что «Name:dbname» означает начало новой строки.

note: type: textblock
en: Copy all of configdb to backup, assuming you already have the backup database defined in debconf.conf.
ru: Копирует всё из configdb в backup, предполагается, что база данных backup уже описана в debconf.conf.

note: type: textblock
en: Copy slrn's data out of configdb, and into newdb. newdb is not defined in the rc file, so the --config switches set up the database on the fly.
ru: Копирует данные пакета slrn из configdb в newdb. newdb не определена в файле rc, поэтому ключи --config настраивают базу данных на лету.

note: type: textblock
en: Spit out all the items in the debconf database related to package foo.
ru: Выводит все элементы из базы данных debconf, которые касаются пакета foo на экран.

note: type: textblock
en: This uses the special purpose pipe driver to copy a database to a remote system.
ru: Здесь используется специальный канальный драйвер для копирования базы данных на удалённую систему.

note: type: textblock
en: debconf-getlang - extract a language from a templates file
ru: debconf-getlang - извлекает строки на указанном языке из файла templates

note: type: verbatim
en:  debconf-getlang lang master [translation]
     debconf-getlang --stats master translation [...]
ru:  debconf-getlang код_языка мастер_файл [файл_перевода]
     debconf-getlang --stats мастер_файл файл_перевода [...]

note: type: textblock
en: Note: This utility is deprecated; you should switch to using the po-debconf package.
ru: Замечание: эта утилита устарела; вместо неё вы должны использовать пакет po-debconf.

note: type: textblock
en: This program helps make and manage translations of debconf templates.  There are basically three situations in which this program might be called:
ru: Эта программа помогает создавать и поддерживать переводы шаблонов debconf. В основном, возникают три ситуации при которых может вызываться эта программа:

note: type: =item
en: A translation is just being started.
ru: Перевод только начинается.

note: type: textblock
en: You want to provide the translator with a file they can work on that has the English fields from your templates file, plus blank Field-ll fields for the target language that they can fill in.
ru: Вы хотите предоставить переводчику файл с которым он может работать, в котором есть поля на английском из вашего файла templates, плюс пустые поля Field-ll для нового языка, которые нужно заполнить.

note: type: textblock
en: To do this, run the program with first parameter being the code for the language that is being translated to, and the second parameter being the filename of the English templates file.
ru: Для этого запустите программу передав ей первым параметром код языка на который будет осуществляться перевод, а вторым параметром файл templates с английским текстом.

note: type: =item
en: A translation is well under way.
ru: Перевод уже есть.

note: type: textblock
en: You have changed some English text, or added more items to your templates file, and you want to send the translators a file with the English text plus their current translations (or you are the translator, and you want to generate such a file for your own use).
ru: Вы изменили английский текст или добавили несколько элементов в файл templates, и хотите послать переводчикам файл с английским текстом и их имеющиеся переводы (или если вы переводчик и хотите создать такой файл для себя).

note: type: textblock
en: To accomplish this, run the program with the first parameter being the the code for the language that is being translated to, the second parameter being the filename of the master English templates file, and the third parameter being the filename of the current translated file.
ru: Для этого запустите программу с параметром кода языка перевода, во втором параметре укажите имя мастер файла templates с английским текстом, и в третьем параметре имя файла с уже имеющимися переводами.

note: type: textblock
en: When run this way, the program is smart enough to notice fuzzy translations. For example a fuzzy Description will be output as Description-<lang>-fuzzy, and a new, blank Description-<lang> will be added.  Translators should remove the -fuzzy fields as they correct the fuzzy translations.
ru: При таком запуске программа достаточна умна, чтобы определить неточные переводы. Например, неточный перевод Description будет помечен как  Description-<язык>-fuzzy, и будет добавлен новый, чистый Description-<язык>. Переводчики должны удалить суффикс -fuzzy после исправления неточности в переводе.

note: type: =item
en: Checking the status of a translation
ru: Проверка состояния перевода

note: type: textblock
en: To check the status of a translation, use the --status flag, and pass the english template file as the first parameter, and all the other translated templates after that. It will output statistics for each of them. For example:
ru: Для проверки состояния перевода укажите флаг --status, в первом параметре имя файла шаблона с английским текстом , а за ним все файлы с переводами. Будет показана статистика по каждому из них. Пример:

note: type: =head1
en: NOTE
ru: ЗАМЕЧАНИЕ

note: type: textblock
en: Note that the text in the generated templates may be word-wrapped by debconf.
ru: Заметим, что debconf может по другому разбить на строки текст в созданных шаблонах.

note: type: textblock
en: debconf-get-selections - output contents of debconf database
ru: debconf-get-selections - выводит содержимое базы данных debconf

note: type: textblock
en: Output the current debconf database in a format understandable by debconf-set-selections.
ru: Выводит содержимое базы данных debconf в формате, который понимает команда debconf-set-selections.

note: type: textblock
en: To dump the debconf database of the debian-installer, from /var/log/installer/cdebconf, use the --installer parameter.
ru: Чтобы получить данные по настройке программы установки debian-installer базы данных debconf из /var/log/installer/cdebconf используйте параметр --installer.

note: type: textblock
en: debconf-loadtemplate - load template file into debconf database
ru: debconf-loadtemplate - загружает файл шаблона в базу данных debconf

note: type: verbatim
en:  debconf-loadtemplate owner file [file ..]
ru:  debconf-loadtemplate владелец файл [файл ..]

note: type: textblock
en: Loads one or more template files into the debconf database. The first parameter specifies the owner of the templates (typically, the owner is the name of a debian package). The remaining parameters are template files to load.
ru: Загружает один или более файлов шаблонов в базу данных debconf. Первый параметр указывает владельца шаблонов (обычно, владелец это имя пакета debian). Остальные параметры воспринимаются как файлы для загрузки.

note: type: textblock
en: This program should never be used from a maintainer script of a package that uses debconf! It may however, be useful in debugging, or to seed the debconf database.
ru: Эта программа никогда не должна использоваться из сопровождающего сценария пакета, который использует debconf! Однако, она может оказаться полезной для отладки или заполнения базы данных debconf.

note: type: textblock
en: debconf-mergetemplate - merge together multiple debconf template files
ru: debconf-mergetemplate - объединяет вместе несколько debconf файлов шаблонов

note: type: verbatim
en:  debconf-mergetemplate [options] [templates.ll ...] templates
ru:  debconf-mergetemplate [параметры] [templates.ll ...] templates

note: type: textblock
en: Note: This utility is deprecated. You should switch to using po-debconf's po2debconf program.
ru: Замечание: Эта утилита устарела. Вместо неё вы должны использовать программу po2debconf из пакета po-debconf.

note: type: textblock
en: This program is useful if you have multiple debconf templates files which you want to merge together into one big file. All the specified files will be read in, merged, and output to standard output.
ru: Эта программа окажется полезной, если у вас есть несколько debconf templates файлов, которые нужно объединить в один большой файл. Все указанные файлы будут прочитаны, объединены и выведены в стандартный выходной поток.

note: type: textblock
en: This can be especially useful if you are dealing with translated template files. In this case, you might have your main template file, plus several other files provided by the translators. These files will have translated fields in them, and maybe the translators left in the english versions of the fields they translated, for their reference.
ru: Это может быть особенно полезно, если вы имеете дело с переводами файлов шаблонов. Здесь вы можете разделить информацию на главный файл шаблона и остальные файлы, предоставленные переводчиками. В этих файлах будут содержаться переведённые поля, а может быть переводчики оставят английскую версию в переведённых полях, чтобы на них ссылаться.

note: type: textblock
en: So, you want to merge together all the translated templates files with your main templates file. Any fields that are unique to the translated files need to be added in to the correct templates, but any fields they have in common should be superseded by the fields in the main file (which might be more up-to-date).
ru: Итак, вы хотите объединить вместе все файлы templates с вашим главным файлом templates. Любые поля, которые являются уникальными в переведённых файлах, нужно добавить в соответствующие шаблоны, а любые общие поля нужно заменить полями из главного файла (который может быть более новым).

note: type: textblock
en: This program handles that case properly, just list each of the translated templates files, and then your main templates file last.
ru: Эта программа правильно обрабатывает этот случай, просто сначала просматривая переведённые файлы шаблонов, а в конце главный файл шаблонов.

note: type: textblock
en: Merge in even outdated translations. The default is to drop them with a warning message.
ru: Объединить даже устаревшие переводы. По умолчанию они удаляются с предупреждающим сообщением.

note: type: textblock
en: If a translation has an entire template that is not in the master file (and thus is probably an old template), drop that entire template.
ru: Если перевод содержит целый шаблон, которого нет в мастер файле (и скорее всего это устаревший шаблон), удалять шаблон целиком.

note: type: textblock
en: debconf-set-selections - insert new values into the debconf database
ru: debconf-set-selections - вставляет новые ответы в базу данных debconf

note: type: verbatim
en:  debconf-set-selections file
     debconf-get-selections | ssh newhost debconf-set-selections
ru:  debconf-set-selections файл
     debconf-get-selections | ssh другая_машина debconf-set-selections

note: type: textblock
en: B<debconf-set-selections> can be used to pre-seed the debconf database with answers, or to change answers in the database. Each question will be marked as seen to prevent debconf from asking the question interactively.
ru: B<debconf-set-selections> может быть использована для автоматической настройки ответов из базы данных debconf или для изменения имеющихся ответов. Каждый вопрос будет помечен как уже заданный, чтобы debconf больше не задавал его пользователю.

note: type: textblock
en: Reads from a file if a filename is given, otherwise from stdin.
ru: Если задано имя, то оно рассматривается как файл для чтения, иначе данные берутся со стандартного входного потока (stdin).

note: type: textblock
en: Only use this command to seed debconf values for packages that will be or are installed. Otherwise you can end up with values in the database for uninstalled packages that will not go away, or with worse problems involving shared values. It is recommended that this only be used to seed the database if the originating machine has an identical install.
ru: Используйте эту команду для заполнения debconf ответами только для пакетов, которые будут или уже установлены. Иначе всё может закончиться значениями в базе данных для удалённых пакетов, которые нельзя удалить, или всё усугубится, если это разделяемые значения. Программу рекомендуется использовать только для заполнения базы данных новой машины с идентичной установкой.

note: type: =head1
en: DATA FORMAT
ru: ФОРМАТ ДАННЫХ

note: type: textblock
en: The data is a series of lines. Lines beginning with a # character are comments. Blank lines are ignored. All other lines set the value of one question, and should contain four values, each separated by one character of whitespace. The first value is the name of the package that owns the question. The second is the name of the question, the third value is the type of this question, and the fourth value (through the end of the line)  is the value to use for the answer of the question.
ru: Данные представляют собой набор строк. Строки, начинающиеся с символа # считаются комментариями. Пустые строки игнорируются. Все остальные строки являются ответом на один вопрос, и должны содержать четыре значения, каждое отделяется от другого одним пробельным символом. Первое значение — это имя пакета, которому принадлежит вопрос. Второе — это имя вопроса, третье — это тип вопроса, а четвёртое значение (до конца строки) — это значение используемое для ответа на вопрос.

note: type: textblock
en: Alternatively, the third value can be "seen"; then the preseed line only controls whether the question is marked as seen in debconf's database. Note that preseeding a question's value defaults to marking that question as seen, so to override the default value without marking a question seen, you need two lines.
ru: Также третье значение может быть равно «seen»; такая строка помечает вопрос в базе данных debconf как заданный. Заметим, что автозаполнение ответов на вопросы по умолчанию помечает эти вопросы как заданные, поэтому для изменения ответа по умолчанию без пометки вопроса как заданного, вам нужны две строки.

note: type: textblock
en: Lines can be continued to the next line by ending them with a "\" character.
ru: Строки продлеваются на следующую строку, если оканчиваются символом «\».

note: type: verbatim
en:  # Force debconf priority to critical.
     debconf debconf/priority select critical
ru:  # Принудительно задать приоритет debconf как критический.
     debconf debconf/priority select critical

note: type: verbatim
en:  # Override default frontend to readline, but allow user to select.
     debconf debconf/frontend select readline
     debconf debconf/frontend seen false
ru:  # Изменить интерфейс по умолчанию на readline, но позволить пользователю выбрать.
     debconf debconf/frontend select readline
     debconf debconf/frontend seen false

note: type: textblock
en: verbose output
ru: подробный отчёт при работе

note: type: textblock
en: only check the input file format, do not save changes to database
ru: только проверить правильность формата файла, не записывать изменения в базу данных

note: type: textblock
en: L<debconf-get-selections(1)> (available in the debconf-utils package)
ru: L<debconf-get-selections(1)> (доступна из пакета debconf-utils)

note: type: textblock
en: debconf-show - query the debconf database
ru: debconf-show - выполнить запрос к базе данных debconf

note: type: verbatim
en:  debconf-show packagename [...] [--db=dbname]
     debconf-show --listowners [--db=dbname]
     debconf-show --listdbs
ru:  debconf-show имя-пакета [...] [--db=имя-базы-данных]
     debconf-show --listowners [--db=имя-базы-данных]
     debconf-show --listdbs

note: type: textblock
en: B<debconf-show> lets you query the debconf database in different ways.
ru: B<debconf-show> позволяет выполнить запрос к базе данных debconf различными способами.

note: type: textblock
en: The most common use is "debconf-show packagename", which displays all items in the debconf database owned by a given package, and their current values.  Questions that have been asked already are prefixed with an '*'.
ru: Наиболее распространённый запрос — «debconf-show имя-пакета», по которому выдаются все элементы базы данных debconf принадлежащие этому пакету и их текущие значения. Вопросы, которые были уже заданы, отмечены символом «*».

note: type: textblock
en: This can be useful as a debugging aid, and especially handy in bug reports involving a package's use of debconf.
ru: Эта программа может быть полезна при отладке и особенно при отправке отчётов об ошибке в пакетах использующих debconf.

note: type: =item
en: B<--db=>I<dbname>
ru: B<--db=>I<имя-базы-данных>

note: type: textblock
en: Specify the database to query. By default, debconf-show queries the main database.
ru: Указать базу данных для запроса. По умолчанию debconf-show выполняет запрос к главной базе данных.

note: type: textblock
en: Lists all owners of questions in the database. Generally an owner is equivalent to a debian package name.
ru: Запросить список всех владельцев вопросов в базе данных. В большинстве случаев владелец — это имя пакета debian.

note: type: textblock
en: Lists all available databases.
ru: Показать список доступных баз данных.

note: type: textblock
en: Joey Hess <joeyh@debian.org> and Sylvain Ferriol
ru: Joey Hess <joeyh@debian.org> и Sylvain Ferriol

note: type: textblock
en: dpkg-preconfigure - let packages ask questions prior to their installation
ru: dpkg-preconfigure - позволяет пакетам задать вопросы перед установкой

note: type: verbatim
en:  dpkg-preconfigure [options] package.deb
ru:  dpkg-preconfigure [параметры] пакет.deb

note: type: textblock
en: B<dpkg-preconfigure> lets packages ask questions before they are installed.  It operates on a set of debian packages, and all packages that use debconf will have their config script run so they can examine the system and ask questions.
ru: B<dpkg-preconfigure> позволяет пакетам задать вопросы перед установкой. Она работает с пакетами debian и всеми пакетами, которые будут использовать debconf в своих сценариях config для проверки системы и задания вопросов.

note: type: textblock
en: Set the lowest priority of questions you are interested in. Any questions with a priority below the selected priority will be ignored and their default answers will be used.
ru: Установить низший приоритет задаваемых вопросов. Все вопросы с приоритетом ниже указанного будут игнорироваться, а в качестве ответов будут использоваться ответы по умолчанию.

note: type: textblock
en: Run in apt mode. It will expect to read a set of package filenames from stdin, rather than getting them as parameters. Typically this is used to make apt run dpkg-preconfigure on all packages before they are installed.  To do this, add something like this to /etc/apt/apt.conf:
ru: Работать в режиме apt. Вместо получения списка имён файлов пакетов из параметров он считывается со стандартного входного потока (stdin). Обычно этот режим используется apt, которая запускает dpkg-preconfigure для всех пакетов перед их установкой. Для этого добавьте в /etc/apt/apt.conf:

note: type: verbatim
en:  // Pre-configure all packages before
     // they are installed.
     DPkg::Pre-Install-Pkgs {
     	"dpkg-preconfigure --apt --priority=low";
     };
ru:  // Предварительная настройка всех пакетов перед
     // их установкой.
     DPkg::Pre-Install-Pkgs {
     	"dpkg-preconfigure --apt --priority=low";
     };

note: type: textblock
en: Display usage help.
ru: Показать справку по использованию.

note: type: textblock
en: dpkg-reconfigure - reconfigure an already installed package
ru: dpkg-reconfigure - перенастраивает заново уже установленный пакет

note: type: verbatim
en:  dpkg-reconfigure [options] packages
ru:  dpkg-reconfigure [параметры] пакеты

note: type: textblock
en: B<dpkg-reconfigure> reconfigures packages after they have already been installed. Pass it the names of a package or packages to reconfigure. It will ask configuration questions, much like when the package was first installed.
ru: B<dpkg-reconfigure> перенастраивает уже установленные пакеты. В качестве параметров указываются одно и более названий пакетов, которые нужно перенастроить. Будут заданы вопросы о настройке, их будет больше чем при начальной установке пакета.

note: type: textblock
en: If you just want to see the current configuration of a package, see L<debconf-show(1)> instead.
ru: Если вы хотите просто посмотреть текущие настройки пакета, то используйте L<debconf-show(1)>.

note: type: textblock
en: Select the frontend to use. The default frontend can be permanently changed by:
ru: Выбор используемого интерфейса. Интерфейс по умолчанию может быть изменён с помощью команды:

note: type: textblock
en: Note that if you normally have debconf set to use the noninteractive frontend, dpkg-reconfigure will use the dialog frontend instead, so you actually get to reconfigure the package.
ru: Заметим, что если у вас настроен по умолчанию не интерактивный интерфейс, то dpkg-reconfigure будет использовать вместо него диалоговый, чтобы вы действительно смогли перенастроить пакет.

note: type: textblock
en: Specify the minimum priority of question that will be displayed.  dpkg-reconfigure normally shows low priority questions no matter what your default priority is. See L<debconf(7)> for a list.
ru: Задать минимальный приоритет показываемых вопросов. dpkg-reconfigure показывает вопросы с низшим приоритетом независимо, какой у вас установлен приоритет по умолчанию. Список смотрите в L<debconf(7)>.

note: type: textblock
en: Use whatever the default priority of question is, instead of forcing the priority to low.
ru: Задать приоритет вопросов по умолчанию, а не принудительный низший приоритет.

note: type: textblock
en: By default, all questions are shown, even if they have already been answered. If this parameter is set though, only questions that have not yet been seen will be asked.
ru: По умолчанию задаются все вопросы, даже если на них уже есть ответы. Однако если задан этот параметр, будут показаны только вопросы, которые ещё не были заданы.

note: type: textblock
en: Force dpkg-reconfigure to reconfigure a package even if the package is in an inconsistent or broken state. Use with caution.
ru: Заставить dpkg-reconfigure перенастроить пакет, даже если он в противоречивом или нерабочем состоянии. Использовать осторожно.

note: type: textblock
en: Prevent dpkg-reconfigure from reloading templates. Use with caution; this will prevent dpkg-reconfigure from repairing broken templates databases.  However, it may be useful in constrained environments where rewriting the templates database is expensive.
ru: Запретить dpkg-reconfigure перезагрузку шаблонов. Использовать осторожно, так как это запрещает dpkg-reconfigure восстанавливать испорченные базы данных шаблонов. Однако, это может быть полезно в ограниченной среде, где перезапись базы данных шаблонов является затратной операцией.

note: type: Plain text
en: debconf.conf - debconf configuration file
ru: debconf.conf - файл настройки debconf

note: type: Plain text
en: Debconf is a configuration system for Debian packages. /etc/debconf.conf and ~/.debconfrc are configuration files debconf uses to determine which databases it should use. These databases are used for storing two types of information; dynamic config data the user enters into it, and static template data. Debconf offers a flexible, extensible database backend. New drivers can be created with a minimum of effort, and sets of drivers can be combined in various ways.
ru: Debconf — это система настройки пакетов Debian. Файлы /etc/debconf.conf и ~/.debconfrc являются файлами настройки, которые debconf использует для определения какие базы данных должны быть задействованы. Эти базы данных используются для хранения двух типов информации; динамически настраиваемых данных, которые ввёл пользователь и статических данных шаблонов. Debconf предлагает гибкую, расширяемую среду хранения базы данных. С минимальными затратами могут быть созданы новые драйверы, и их любые комбинации могут объединяться различными путями.

note: type: Plain text
en:   # This is a sample config file that is
      # sufficient to use debconf.
      Config: configdb
      Templates: templatedb
ru:   # Это пример файла настройки, которого
      # достаточно для использования debconf.
      Config: configdb
      Templates: templatedb

note: type: SH
en: FILE FORMAT
ru: ФОРМАТ ФАЙЛА

note: type: Plain text
en: The format of this file is a series of stanzas, each separated by at least one wholly blank line. Comment lines beginning with a "#" character are ignored.
ru: Форматом файла является серия строк, отделённых друг от друга как минимум одной полностью пустой строкой. Строки комментариев начинаются с символа «#» и игнорируются.

note: type: Plain text
en: The first stanza of the file is special, is used to configure debconf as a whole. Two fields are required to be in this first stanza:
ru: Первая строка файла имеет особое значение, она используется для настройки всего debconf. В первой строке должны быть два поля:

note: type: Plain text
en: Specifies the name of the database from which to load config data.
ru: Задаёт имя базы данных, из которой загружаются данные о настройке.

note: type: Plain text
en: Specifies the name of the database to use for the template cache.
ru: Задаёт имя базы данных, которая используется для кэширования шаблонов.

note: type: Plain text
en: Additional fields that can be used include:
ru: Могут быть указаны дополнительные поля:

note: type: Plain text
en: The frontend Debconf should use, overriding any frontend set in the debconf database.
ru: Используемая интерфейсная программа Debconf, заменяет любое установленное значение интерфейсной программы базы данных debconf.

note: type: Plain text
en: The priority Debconf should use, overriding any priority set in the debconf database.
ru: Приоритет, который должен использовать Debconf, заменяет любой заданный приоритет, установленный в базе данных debconf.

note: type: Plain text
en: The email address Debconf should send mail to if it needs to make sure that the admin has seen an important message. Defaults to "root", but can be set to any valid email address to send the mail there. If you prefer to never have debconf send you mail, specify a blank address. This can be overridden on the fly with the DEBCONF_ADMIN_EMAIL environment variable.
ru: Адрес электронной почты, куда Debconf должен посылать сообщения, если требуется, чтобы администратор получил важные замечания. По умолчанию, всё направляется «root», но может быть задан любой рабочий адрес электронной почты. Если вы предпочитаете выключить отправку почты в debconf, укажите пустой адрес. Он может быть заменён в ходе работы значением переменной окружения DEBCONF_ADMIN_EMAIL.

note: type: Plain text
en: If set, this will cause debconf to output debugging information to standard error. The value it is set to can be something like "user", "developer", "db", or a regular expression. Typically, rather than setting it permanently in a config file, you will only want to temporarily turn on debugging, and the DEBCONF_DEBUG environment variable can be set instead to accomplish that.
ru: Если установлено, то debconf будет выводить отладочную информацию в стандартный поток ошибок. Значениями могут быть что-нибудь типа «user», «developer», «db» или регулярное выражение. Обычно вместо указания в файле настройки, для временного включения режима отладки устанавливайте переменную окружения DEBCONF_DEBUG.

note: type: Plain text
en: If set, this will make debconf not display warnings about various things.  This can be overridden on the fly with the DEBCONF_NOWARNINGS environment variable.
ru: Если установлено, то debconf не будет выводить предупреждения о различных событиях. Такое поведение можно изменить на лету с помощью переменной окружения DEBCONF_NOWARNINGS.

note: type: Plain text
en: Makes debconf log debugging information as it runs, to the syslog. The value it is set to controls that is logged. See Debug, above for an explanation of the values that can be set to control what is logged.
ru: Заставить debconf сохранять отладочную информацию в syslog. Значение контролирует, что протоколировать. Смотрите описание Debug ранее, какие значения могут быть заданы для протоколирования.

note: type: Plain text
en: If set to "true", makes some debconf frontends use a special terse display mode that outputs as little as possible. Defaults to false. Terse mode may be temporarily set via the DEBCONF_TERSE environment variable.
ru: Если установлено в «true», то некоторые интерфейсные программы debconf активируют специальный краткий режим вывода, чтобы выдавать как можно меньше информации. По умолчанию false. Краткий режим может быть временно включён с помощью переменной окружения DEBCONF_TERSE.

note: type: Plain text
en: For example, the first stanza of a file might look like this:
      Config: configdb
      Templates: templatedb
ru: Например, первая строка может выглядеть так:
      Config: configdb
      Templates: templatedb

note: type: Plain text
en: Each remaining stanza in the file sets up a database. A database stanza
    begins by naming the database:
      Name: configdb
ru: Остальные строки в файле настраивают базу данных. Строка базы данных
    начинается с имени базы:
      Name: configdb

note: type: Plain text
en: Then it indicates what database driver should be used for this database.
    See DRIVERS, below, for information about what drivers are available.
      Driver: File
ru: Затем задаётся какой драйвер базы данных должен использоваться для базы.
    Доступные драйверы описаны далее в разделе ДРАЙВЕРЫ.
      Driver: File

note: type: Plain text
en: You can indicate that the database is not essential to the proper
    functioning of debconf by saying it is not required. This will make debconf
    muddle on if the database fails for some reason.
      Required: false
ru: Вы можете указать, что база данных неважна для нормальной работы
    debconf сделав её необязательной. Debconf будет действовать без плана,
    если база данных недоступна по какой-то причине.
      Required: false

note: type: Plain text
en: You can mark any database as readonly and debconf will not write anything
    to it.
      Readonly: true
ru: Вы можете пометить любую базу данных как доступную только для чтения и
    debconf не будет ничего в неё писать.
      Readonly: true

note: type: Plain text
en: You can also limit what types of data can go into the database with Accept- and Reject- lines; see ACCESS CONTROLS, below.
ru: Также вы можете ограничить типы данных, которые будут храниться в базе с помощью строк Accept- и Reject-; описание смотрите далее в разделе УПРАВЛЕНИЕ ДОСТУПОМ.

note: type: Plain text
en: The remainder of each database stanza is used to provide configuration
    specific to that driver. For example, the Text driver needs to know
    a directory to put the database in, so you might say:
      Filename: /var/cache/debconf/config.dat
ru: Остальная часть строки каждой базы данных используется для указания
    специальных для каждого драйвера параметров. Например, драйверу Text
    требуется указать каталог где лежит база данных, для этого нужно указать:
      Filename: /var/cache/debconf/config.dat

note: type: SH
en: DRIVERS
ru: ДРАЙВЕРЫ

note: type: Plain text
en: A number of drivers are available, and more can be written with little difficulty. Drivers come in two general types. First there are real drivers -- drivers that actually access and store data in some kind of database, which might be on the local filesystem, or on a remote system. Then there are meta-drivers that combine other drivers together to form more interesting systems. Let's start with the former.
ru: Уже созданы несколько драйверов, нужные можно написать с небольшими усилиями. Драйверы бывают двух типов. Первый, настоящие драйверы — драйверы, которые на самом деле обеспечивают доступ и хранение данных в какой-то базе данных, которая может располагаться на локальной файловой системе или на удалённой машине. Второй -- мета драйверы, которые объединяют другие драйверы вместе образуя более интересные системы. Начнём с первых.

note: type: Plain text
en: This database driver allows debconf to store a whole database in a single flat text file. This makes it easy to archive, transfer between machines, and edit. It is one of the more compact database formats in terms of disk space used. It is also one of the slowest.
ru: Данный драйвер базы данных позволяет debconf хранить всю информацию в одном простом текстовом файле. Это позволяет легко архивировать, переносить с машины на машину и редактировать базу данных. Это один из наиболее компактных форматов базы данных в смысле занимаемого места на диске. Он также является одним из самых медленных.

note: type: Plain text
en: On the downside, the entire file has to be read in each time debconf starts up, and saving it is also slow.
ru: Отрицательные качества: при запуске debconf этот файл должен быть прочитан целиком и его сохранение медленно.

note: type: Plain text
en: The following things are configurable for this driver.
ru: Настройки драйвера:

note: type: Plain text
en: The file to use as the database. This is a required field.
ru: Имя файла базы данных. Обязательное поле.

note: type: Plain text
en: The permissions to create the file with if it does not exist. Defaults to 600, since the file could contain passwords in some circumstances.
ru: Права доступа с которыми нужно создать файл, если он не существует. По умолчанию — 600, так как в файл могут хранятся пароли в некоторых случаях.

note: type: Plain text
en: The format of the file. See FORMATS below. Defaults to using a rfc-822 like format.
ru: Формат файла. Смотрите раздел ФОРМАТЫ далее. По умолчанию используется rfc-822 подобный формат.

note: type: Plain text
en: Whether a backup should be made of the old file before changing it.  Defaults to true.
ru: Нужно ли делать резервную копию перед изменением. По умолчанию включено.

note: type: Plain text
en: As example stanza setting up a database using this driver:
ru: Пример строки с настройками базы данных, использующей этот драйвер:

note: type: Plain text
en: This database driver allows debconf to store data in a hierarchical directory structure. The names of the various debconf templates and questions are used as-is to form directories with files in them. This format for the database is the easiest to browse and fiddle with by hand.  It has very good load and save speeds. It also typically occupies the most space, since a lot of small files and subdirectories do take up some additional room.
ru: Этот драйвер базы данных позволяет debconf хранить данные в виде иерархической структуры каталогов. Имена различных шаблонов debconf и вопросов используются как есть для образования каталогов с файлами в них. Такой формат базы данных самый лёгкий для просмотра и изменения вручную. Он имеет хорошую скорость загрузки и записи. Для него также типично занимать много места, так как он содержит множество маленьких файлов и подкаталогов, которые занимают дополнительное пространство.

note: type: Plain text
en: The directory to put the files in. Required.
ru: Каталог размещения файлов. Обязателен.

note: type: Plain text
en: An extension to add to the names of files. Must be set to a non-empty string; defaults to ".dat"
ru: Расширение, которое прибавляется к именам файлов. Должна указываться не пустая строка; по умолчанию — «.dat»

note: type: Plain text
en: This database driver is a compromise between the File and DirTree databases. It uses a directory, in which there is (approximately) one file per package that uses debconf. This is fairly fast, while using little more room than the File database driver.
ru: Данный драйвер базы данных является компромиссным между File и DirTree. Здесь используется каталог, в котором располагаются (приблизительно) один файл на каждый пакет, использующий debconf. Он довольно быстр, хотя и использует немного больше места, чем драйвер базы данных File.

note: type: Plain text
en: This driver is configurable in the same ways as is the DirTree driver, plus:
ru: Данный драйвер настраивается теми же параметрами как и драйвер DirTree, а также:

note: type: Plain text
en: The permissions to create files with. Defaults to 600, since the files could contain passwords in some circumstances.
ru: Права доступа с которыми нужно создать файл. По умолчанию — 600, так как в файл могут сохраняться пароли в некоторых случаях.

note: type: Plain text
en: WARNING: This database driver is currently experimental. Use with caution.
ru: ПРЕДУПРЕЖДЕНИЕ: Данный драйвер базы данных является экспериментальным. Используйте с осторожностью.

note: type: Plain text
en: This database driver accesses a LDAP directory for debconf configuration data. Due to the nature of the beast, LDAP directories should typically be accessed in read-only mode. This is because multiple accesses can take place, and it's generally better for data consistency if nobody tries to modify the data while this is happening. Of course, write access is supported for those cases where you do want to update the config data in the directory.
ru: Данный драйвер базы данных позволяет использовать каталоги LDAP для хранения данных debconf. По своей природе каталоги LDAP обычно доступны только для чтения. Это результат влияния множественного одновременного доступа, и это обычно лучше для целостности данных, если никто не пытается изменять данные одновременно. Естественно, поддерживается режим записи для тех случаев когда вам нужно обновить данные настройки в каталоге.

note: type: Plain text
en: For information about setting up a LDAP server for debconf, read /usr/share/doc/debconf-doc/README.LDAP (from the debconf-doc package).
ru: О том как настроить LDAP сервер для debconf читайте в /usr/share/doc/debconf-doc/README.LDAP (из пакета debconf-doc).

note: type: Plain text
en: To use this database driver, you must have the libnet-ldap-perl package installed. Debconf suggests that package, but does not depend on it.
ru: Чтобы использовать данный драйвер базы данных вы должны установить пакет libnet-ldap-perl. Debconf предлагает данный пакет, но не зависит от него.

note: type: Plain text
en: Please carefully consider the security implications of using a remote debconf database. Unless you trust the source, and you trust the intervening network, it is not a very safe thing to do.
ru: Внимательно отнеситесь к вопросам безопасности при использовании удалённой базы данных debconf. Если вы не доверяете источнику или сети доставки, безопасней не использовать данный драйвер.

note: type: Plain text
en: The host name or IP address of an LDAP server to connect to.
ru: Имя узла или IP адрес LDAP сервера, к которому нужно подключаться.

note: type: Plain text
en: The port on which to connect to the LDAP server. If none is given, the default port is used.
ru: Порт LDAP сервера, к которому нужно подключаться. Если не задан, то используется значение порта по умолчанию.

note: type: Plain text
en: The DN under which all config items will be stored. Each config item will be assumed to live in a DN of cn=E<lt>item nameE<gt>,E<lt>Base DNE<gt>. If this structure is not followed, all bets are off.
ru: DN, под которым хранятся все элементы настройки. Предполагается, что каждый элемент расположен в DN как cn=E<lt>имя элементаE<gt>,E<lt>корневой элемент DNE<gt>. Если такая структура не соблюдается, тады ой.

note: type: Plain text
en: The DN to bind to the directory as. Anonymous bind will be used if none is specified.
ru: DN для подключения к каталогу. Если указано none, то используется анонимное подключение.

note: type: Plain text
en: The password to use in an authenticated bind (used with binddn, above). If not specified, anonymous bind will be used.
ru: Пароль для использования в аутентификационном подключении (используется вместе с binddn, описанном ранее). Если не указан, то используется анонимное подключение.

note: type: Plain text
en: This option should not be used in the general case. Anonymous binding should be sufficient most of the time for read-only access. Specifying a bind DN and password should be reserved for the occasional case where you wish to update the debconf configuration data.
ru: Этот параметр не должен использоваться в общем случае. Анонимное подключение должно использоваться большую часть времени для доступа только на чтение. Указание DN подключения и пароля должно быть зарезервировано для редких случаев, когда вы хотите обновить данные о настройке debconf.

note: type: Plain text
en: Enable access to individual LDAP entries, instead of fetching them all at once in the beginning. This is very useful if you want to monitor your LDAP logs for specific debconf keys requested. In this way, you could also write custom handling code on the LDAP server part.
ru: Включить доступ к отдельным записям в LDAP, а не получать их все сразу в начале. Это очень полезно при мониторинге журналов LDAP при запросе определённых ключей debconf. В этом случае вы также можете записать пользовательский код обработки на серверной части LDAP.

note: type: Plain text
en: Note that when this option is enabled, the connection to the LDAP server is kept active during the whole Debconf run. This is a little different from the all-in-one behavior where two brief connections are made to LDAP; in the beginning to retrieve all the entries, and in the end to save eventual changes.
ru: Заметим, что когда этот параметр включён, соединение с сервером LDAP остаётся активным на всё время работы Debconf. Это слегка отличается от поведения при получении всего за один раз, где производятся два подключения к LDAP: в начале при получении всех записей, и в конце для записи произошедших изменений.

note: type: Plain text
en: An example stanza setting up a database using this driver, assuming the remote database is on example.com and can be accessed anonymously:
ru: Пример строки с настройками базы данных, использующей этот драйвер; предполагается, что используется удалённая база данных на example.com и она доступна анонимно:

note: type: Plain text
en: Another example, this time the LDAP database is on localhost, and can be written to:
ru: Другой пример: база данных LDAP установлена на локальной машине(localhost) и в неё разрешена запись:

note: type: Plain text
en: This special-purpose database driver reads and writes the database from standard input/output. It may be useful for people with special needs.
ru: Специальный драйвер базы данных для чтения и записи базы данных со стандартного ввода/вывода. Он может быть полезным в нестандартных ситуациях.

note: type: Plain text
en: The format to read and write. See FORMATS below. Defaults to using a rfc-822 like format.
ru: Формат чтения и записи. Смотрите раздел ФОРМАТЫ далее. По умолчанию используется rfc-822 подобный формат.

note: type: Plain text
en: File descriptor number to read from. Defaults to reading from stdin. If set to "none", the database will not read any data on startup.
ru: Номер файлового дескриптора чтения. По умолчанию для чтения используется stdin. Если указано значение «none», то из базы данных при запуске чтение данных проводиться не будет.

note: type: Plain text
en: File descriptor number to write to. Defaults to writing to stdout. If set to "none", the database will be thrown away on shutdown.
ru: Номер файлового дескриптора записи. По умолчанию для записи используется stdout. Если указано значение «none», то база данных при выходе будет выброшена.

note: type: Plain text
en: That's all of the real drivers, now moving on to meta-drivers..
ru: Это все реальные драйверы, теперь переходим к мета-драйверам.

note: type: Plain text
en: This driver stacks up a number of other databases (of any type), and allows them to be accessed as one. When debconf asks for a value, the first database on the stack that contains the value returns it. If debconf writes something to the database, the write normally goes to the first driver on the stack that has the item debconf is modifying, and if none do, the new item is added to the first writable database on the stack.
ru: Данный драйвер объединяет в стек несколько разных баз данных (любых типов), и позволяет обращаться к ним как к одной. Когда у debconf запрашивают значение, то возвращается значение из первой базы данных стека, которая его содержит. Если debconf записывает что-то в базу данных, то запись обычно производится первым драйвером стека, который содержит изменяемое debconf значение, и если такого нет, то новое значение добавляется в первую доступную для записи базу данных стека.

note: type: Plain text
en: Things become more interesting if one of the databases on the stack is readonly. Consider a stack of the databases foo, bar, and baz, where foo and baz are both readonly. Debconf wants to change an item, and this item is only present in baz, which is readonly. The stack driver is smart enough to realize that won't work, and it will copy the item from baz to bar, and the write will take place in bar. Now the item in baz is shadowed by the item in bar, and it will not longer be visible to debconf.
ru: Более интересной становится ситуация, если одна из баз данных стека доступна только для чтения. Рассмотрим стек с базами данных foo, bar и baz, где foo и baz доступны только для чтения. Debconf хочет изменить значение, и это значение имеется только в baz, но она доступна только для чтения. Драйвер stack достаточно сообразителен, чтобы не пытаться туда писать, и копирует элемент из baz в bar, и сохраняет изменения bar. Теперь значение в baz перекрыто значением из bar, и более не видно для debconf.

note: type: Plain text
en: This kind of thing is particularly useful if you want to point many systems at a central, readonly database, while still allowing things to be overridden on each system. When access controls are added to the picture, stacks allow you to do many other interesting things, like redirect all passwords to one database while a database underneath it handles everything else.
ru: Такое поведение полезно, если вы хотите настроить много систем из центральной, доступной только на чтение базы данных, но хотите заменить некоторые значения для каждой системы. Если рассматривать ещё и контроль доступа, то стеки позволяют выполнять много других интересных вещей, типа перенаправления всех паролей в одну базу данных, в то время как близлежащая база данных хранит что-то ещё.

note: type: Plain text
en: Only one piece of configuration is needed to set up a stack:
ru: Только один параметр настройки требуется для настройки стека:

note: type: Plain text
en: This is where you specify a list of other databases, by name, to tell it what makes up the stack.
ru: В ней нужно указать список других баз данных, по имени, чтобы показать из чего состоит стек.

note: type: Plain text
en: For example:
ru: Например:

note: type: Plain text
en: WARNING: The stack driver is not very well tested yet. Use at your own risk.
ru: ПРЕДУПРЕЖДЕНИЕ: Драйвер stack пока не был хорошо протестирован. Используйте на свой страх и риск.

note: type: Plain text
en: This driver passes all requests on to another database driver. But it also copies all write requests to a backup database driver.
ru: Данный драйвер передаёт все запросы другому драйверу базы данных. Но он также копирует все запросы на запись драйверу резервной базы данных.

note: type: Plain text
en: You must specify the following fields to set up this driver:
ru: Для настройки драйвера вы должны указать следующие поля:

note: type: Plain text
en: The database to read from and write to.
ru: База данных для чтения и записи.

note: type: Plain text
en: The name of the database to send copies of writes to.
ru: Имя базы данных, куда посылаются копии запросов на запись.

note: type: Plain text
en: This driver passes all requests on to another database driver, outputting verbose debugging output about the request and the result.
ru: Этот драйвер передаёт все запросы другому драйверу базы данных, выводя подробную информацию для отладки о запросе и результате.

note: type: SH
en: ACCESS CONTROLS
ru: УПРАВЛЕНИЕ ДОСТУПОМ

note: type: Plain text
en: When you set up a database, you can also use some fields to specify access controls. You can specify that a database only accepts passwords, for example, or make a database only accept things with "foo" in their name.
ru: При настройке базы данных, помимо прочего вы можете использовать некоторые поля для управления доступом. Вы можете указать, например, что база данных хранит только пароли, или сделать, чтобы база данных хранила только данные в имени которых есть выражение «foo».

note: type: Plain text
en: As was mentioned earlier, this access control, if set to "true", makes a database readonly. Debconf will read values from it, but will never write anything to it.
ru: Как уже упоминалось, данное управление доступом, если установлено в «true», то база данных становится доступной только для чтения. Debconf будет читать значения из неё, но не никогда не будет что-либо писать.

note: type: Plain text
en: The text in this field is a perl-compatible regular expression that is matched against the names of items as they are requested from the database. Only if an items name matches the regular expression, will the database allow debconf to access or modify it.
ru: Текст в этом поле должен быть perl-совместимым регулярным выражением, с которым сравниваются имена при запросе данных из базы. База данных позволяет debconf получить доступ или изменять данные, только если имена элементов подпадают под регулярное выражение.

note: type: Plain text
en: Like Accept-Name, except any item name matching this regular expression will be rejected.
ru: Подобно Accept-Name, за исключением того, что любое подпадающее под регулярное выражение имя будет отклонено.

note: type: Plain text
en: Another regular expression, this matches against the type of the item that is being accessed. Only if the type matches the regex will access be granted.
ru: Другое регулярное выражение, с ним сравнивается тип элемента, к которому осуществляется доступ. Доступ будет разрешён только если тип подпадает под регулярное выражение.

note: type: Plain text
en: Like Accept-Type, except any type matching this regular expression will be rejected.
ru: Подобно Accept-Type, за исключением того, что любой подпадающий под регулярное выражение тип будет отклонён.

note: type: SH
en: FORMATS
ru: ФОРМАТЫ

note: type: Plain text
en: Some of the database drivers use format modules to control the actual format in which the database is stored on disk. These formats are currently supported:
ru: Некоторые драйверы баз данных используют модули формата для управления реальным форматом, в котором база данных хранится на диске. Поддерживаемые форматы:

note: type: Plain text
en: This is a file format loosely based upon the rfc-822 format for email message headers. Similar formats are used throughout Debian; in the dpkg status file, and so on.
ru: Данный формат файла основан на формате rfc-822 заголовков почтовых сообщений. Похожие форматы широко используются в Debian; например в файле status программы dpkg и т.д.

note: type: Plain text
en: Here is a more complicated example of a debconf.conf file.
ru: Вот более сложный пример файла debconf.conf.

note: type: Plain text
en:   # This stanza is used for general debconf setup.
      Config: stack
      Templates: templates
      Log: developer
      Debug: developer
ru:   # Эта строка используется для общей настройки debconf.
      Config: stack
      Templates: templates
      Log: developer
      Debug: developer

note: type: Plain text
en:   # This is my own local database.
      Name: mydb
      Driver: DirTree
      Directory: /var/cache/debconf/config
ru:   # Это моя собственная локальная база данных.
      Name: mydb
      Driver: DirTree
      Directory: /var/cache/debconf/config

note: type: Plain text
en:   # This is another database that I use to hold
      # only X server configuration.
      Name: X
      Driver: File
      Filename: /etc/X11/debconf.dat
      Mode: 644
      # It's sorta hard to work out what questions
      # belong to X; it should be using a deeper
      # tree structure so I could just match on ^X/
      # Oh well.
      Accept-Name: xserver|xfree86|xbase
ru:   # Это другая база данных, которую я использую только для
      # хранения настройки X сервера.
      Name: X
      Driver: File
      Filename: /etc/X11/debconf.dat
      Mode: 644
      # Это сложно -- определить какие вопросы
      # принадлежат X; здесь должна использоваться сложная
      # древовидная структура, чтобы я мог просто сравнить с выражением ^X/
      # Уф.
      Accept-Name: xserver|xfree86|xbase

note: type: Plain text
en:   # This is our company's global, read-only
      # (for me!) debconf database.
      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
      # I don't want any passwords that might be
      # floating around in there.
      Reject-Type: password
      # If this db is not accessible for whatever
      # reason, carry on anyway.
      Required: false
ru:   # Это наша глобальная база данных 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

note: type: Plain text
en:   # I use this database to hold
      # passwords safe and secure.
      Name: passwords
      Driver: File
      Filename: /etc/debconf/passwords
      Mode: 600
      Accept-Type: password
ru:   # Я использую эту базу данных для хранения
      # паролей невредимыми и в безопасности.
      Name: passwords
      Driver: File
      Filename: /etc/debconf/passwords
      Mode: 600
      Accept-Type: password

note: type: Plain text
en:   # Let's put them all together
      # in a database stack.
      Name: stack
      Driver: Stack
      Stack: passwords, X, mydb, company
      # So, all passwords go to the password database.
      # Most X configuration stuff goes to the X
      # database, and anything else goes to my main
      # database. Values are looked up in each of those
      # in turn, and if none has a particular value, it
      # is looked up in the company-wide LDAP database
      # (unless it's a password).
ru:   # Сложим все их вместе
      # в стек базы данных.
      Name: stack
      Driver: Stack
      Stack: passwords, X, mydb, company
      # Итак, все пароли хранятся в базе данных паролей.
      # Большинство настроек X берутся из базы данных X,
      # а всё остальное берётся из моей главной базы
      # данных. Значения ищутся в каждой из них по очереди,
      # и если значение не находится, то просматривается
      # LDAP база данных компании
      # (за исключением значений паролей).

note: type: Plain text
en:   # A database is also used to hold templates. We
      # don't need to make this as fancy.
      Name: templates
      Driver: File
      Mode: 644
      Format: 822
      Filename: /var/cache/debconf/templates
ru:   # В базе данных также хранятся шаблоны. Тут
      # нам не нужно ничего изобретать.
      Name: templates
      Driver: File
      Mode: 644
      Format: 822
      Filename: /var/cache/debconf/templates

note: type: SH
en: NOTES
ru: ЗАМЕЧАНИЯ

note: type: Plain text
en: If you use something like ${HOME} in this file, it will be replaced with the value of the named environment variable.
ru: Если вы задействуете что-то типа ${HOME} в этом файле, то оно будет заменено значением с именем переменной окружения.

note: type: Plain text
en: Environment variables can also be used to override the databases on the fly, see B<debconf>(7)
ru: Переменные окружения также могут использоваться для изменения базы данных на лету, смотрите B<debconf>(7).

note: type: Plain text
en: The field names (the part of the line before the colon) is case-insensitive. The values, though, are case sensitive.
ru: Имена полей (часть строки перед двоеточием) не зависят от регистра символов. Но значения зависят от регистра символов.

note: type: SH
en: PLANNED ENHANCEMENTS
ru: ПЛАНИРУЕМЫЕ УЛУЧШЕНИЯ

note: type: Plain text
en: More drivers and formats. Some ideas include: A SQL driver, with the capability to access a remote database.  A DHCP driver, that makes available some special things like hostname, IP address, and DNS servers.  A driver that pulls values out of public DNS records TXT fields.  A format that is compatible with the output of cdebconf.  An override driver, which can override the value field or flags of all requests that pass through it.
ru: Ещё драйверов и форматов. Есть идея включить: драйвер SQL с возможностью доступа к удалённой базе данных, драйвер DHCP, который сделает доступными некоторые специальные вещи типа имени машины, IP адрес и DNS серверы, драйвер, который стягивает значения из публичных DNS записей полей TXT, формат, совместимый с выводом cdebconf, драйвер override, который сможет заменять значения поля или флагов во всех запросах, переданных через него.

note: type: SH
en: FILES
ru: ФАЙЛЫ

note: type: Plain text
en: confmodule - communicate with Debian configuration system FrontEnd.
ru: confmodule - связь с интерфейсом системы настройки Debian.

note: type: Plain text
en: This is a library of shell functions that eases communication with Debian's configuration management system. It can communicate with a FrontEnd via the debconf protocol. The design is that each command in the protocol is represented by one function in this module. The functionname is the same as the command, except it is prefixed with "db_" and is lower-case. Call the function and pass in any parameters you want to follow the command. Any textual return code from the FrontEnd will be returned to you in the $RET variable, while the numeric return code from the FrontEnd will be returned as a return code (and so those return codes must be captured or ignored).
ru: Это библиотека функций на языке оболочки командной строки, которая позволяет легко взаимодействовать с системой управления настройкой Debian. Она может взаимодействовать с интерфейсной программой через debconf протокол. Конструкция библиотеки такова, что каждая команда в протоколе представлена одной функцией. Имя функции совпадает с названием команды, если не считать префикс «db_» и записи строчными буквами. При вызове функции передаются любые параметры, те же что и у команды. Любой текстовый возвращаемый интерфейсной программой код будет возвращён в переменной $RET, а числовой возвращаемый интерфейсной программой код будет возвращён как код завершения (и эти возвращаемые коды должны быть сохранены или проигнорированы).

note: type: Plain text
en: Once this library is loaded, any text you later output will go to standard
    error, rather than standard output. This is a good thing in general, because
    text sent to standard output is interpreted by the FrontEnd as commands. If
    you do want to send a command directly to the FrontEnd, you must output it
    to file descriptor 3, like this:
      echo GET foo/bar E<gt>&3
ru: После того, как библиотека загружена, все последующие выходные данные
    будут перенаправлены в стандартный поток ошибок, а не в стандартный выходной
    поток. В общем, это хорошо, так как текст посылаемый в стандартный вывод,
    воспринимается интерфейсной программой как команды. Если вы хотите послать
    команду интерфейсной программе напрямую, то нужно выдать её в файловый
    дескриптор 3, например:
      echo GET foo/bar E<gt>&3

note: type: Plain text
en: The library checks to make sure it is actually speaking to a FrontEnd by examining the DEBIAN_HAS_FRONTEND variable. If it is set, a FrontEnd is assumed to be running. If not, the library turns into one, and runs a copy of the script that loaded the library connected to it. This means that if you source this library, you should do so very near to the top of your script, because everything before the sourcing of the library may well be run again.
ru: Библиотека проверяет, что запущена именно интерфейсная программа, просматривая переменную окружения DEBIAN_HAS_FRONTEND. Если она установлена, то предполагается, что запущена интерфейсная программа. Если нет, то библиотека запускает одну из интерфейсных программ и выполняет копию сценария, который загрузил библиотеку, подключая его к интерфейсной программе. Это означает, что если источник библиотека, то вы должны выполнить её в сценарии как можно раньше, так как всё до загрузки библиотеки может выполниться ещё раз.

note: type: Plain text
en: B<debconf-devel>(7), B<dpkg-preconfigure>(8), B<dpkg-reconfigure>(8), debconf_specification in the debian-policy package
ru: B<debconf-devel>(7), B<dpkg-preconfigure>(8), B<dpkg-reconfigure>(8), debconf_specification из пакета debian-policy

note: type: Plain text
en: debconf - Debian package configuration system
ru: debconf - система настройки пакетов в Debian

note: type: Plain text
en: Debconf is a configuration system for Debian packages. There is a rarely-used command named debconf, documented in B<debconf>(1)
ru: Debconf — это система настройки пакетов в Debian. Она содержит редко используемую команду debconf, описанную в B<debconf>(1)

note: type: Plain text
en: Debconf provides a consistent interface for configuring packages, allowing you to choose from several user interface frontends. It supports preconfiguring packages before they are installed, which allows large installs and upgrades to ask you for all the necessary information up front, and then go do the work while you do something else. It lets you, if you're in a hurry, skip over less important questions and information while installing a package (and revisit it later).
ru: Debconf предоставляет единообразный интерфейс для настройки пакетов, позволяя вам выбирать из нескольких пользовательских программ настройки. Она поддерживает предварительную настройку пакетов перед их установкой, что позволяет выполнять большие объёмы установок и обновлений, выяснив в начале всю необходимую информацию, и затем продолжить работу, в то время как вы можете заняться чем-то другим. Она позволяет, если вы торопитесь, пропускать менее важные вопросы и информацию при установке пакета (и вернуться к этому позже).

note: type: SH
en: Preconfiguring packages
ru: Предварительная настройка пакетов

note: type: Plain text
en: Debconf can configure packages before they are even installed onto your system. This is useful because it lets all the questions the packages are going to ask be asked at the beginning of an install, so the rest of the install can proceed while you are away getting a cup of coffee.
ru: С помощью Debconf можно выполнить настройку пакетов перед тем как они будут установлены в систему. Хорошо, когда можно ответить на все вопросы пакетов в начале установки и пойти пить кофе пока производится установка.

note: type: Plain text
en: If you use apt (version 0.5 or above), and you have apt-utils installed, each package apt installs will be automatically preconfigured. This is controlled via I</etc/apt/apt.conf.d/70debconf>
ru: Если вы используете apt (версии 0.5 или выше) и установлен пакет apt-utils, то каждый пакет при установке с помощью apt будет предварительно настраиваться. Это управляется через I</etc/apt/apt.conf.d/70debconf>

note: type: Plain text
en: Sometimes you might want to preconfigure a package by hand, when you're not installing it with apt. You can use B<dpkg-preconfigure>(8)  to do that, just pass it the filenames of the packages you want to preconfigure. You will need apt-utils installed for that to work.
ru: Иногда может понадобиться предварительно настроить пакет вручную, в случае если не используется apt для установки. Для этого вы можете использовать B<dpkg-preconfigure>(8), просто указав при запуске имена файла пакетов, которые нужно предварительно настроить. Для этого должен быть установлен пакет apt-utils.

note: type: SH
en: Reconfiguring packages
ru: Изменение настроек пакетов

note: type: Plain text
en: Suppose you installed the package, and answered debconf's questions, but now that you've used it awhile, you realize you want to go back and change some of your answers. In the past, reinstalling a package was often the thing to do when you got in this situation, but when you reinstall the package, debconf seems to remember you have answered the questions, and doesn't ask them again (this is a feature).
ru: Предположим вы установили пакет и ответили на вопросы debconf, но после недолгого использования решили, что хотите изменить некоторые ответы на вопросы. Раньше, переустановка пакета помогала в этом, но теперь при переустановке пакета окажется, что debconf запомнил ответы на вопросы и не задаст их снова (это особенность).

note: type: Plain text
en: Luckily, debconf makes it easy to reconfigure any package that uses it.
    Suppose you want to reconfigure debconf itself. Just run, as root:
      dpkg-reconfigure debconf
ru: К счастью, debconf позволяет легко перенастроить любой пакет его использующий.
    Предположим, вы хотите перенастроить сам debconf. Просто запустите суперпользователем:
      dpkg-reconfigure debconf

note: type: Plain text
en: This will ask all the questions you saw when debconf was first installed.  It may ask you other questions as well, since it asks even low priority questions that may have been skipped when the package was installed.  You can use it on any other package that uses debconf, as well.
ru: Вам будут заданы все вопросы, которые вы видели при установке debconf. Также могут появиться дополнительные вопросы, так как задаются вопросы с более низким приоритетом, которые могли быть пропущены при установке пакета. Вы можете перенастроить любой пакет, который использует debconf.

note: type: SH
en: Frontends
ru: Интерфейсы

note: type: Plain text
en: One of debconf's unique features is that the interface it presents to you is only one of many, that can be swapped in at will. There are many debconf frontends available:
ru: Одним из уникальных свойств debconf является то, что при желании можно использовать любой из многих интерфейсов. Доступные интерфейсы debconf:

note: type: TP
en: B<dialog>
ru: B<диалоговый>

note: type: Plain text
en: The default frontend, this uses the B<whiptail>(1)  or B<dialog>(1)  programs to display questions to you. It works in text mode.
ru: Интерфейс по умолчанию, использует программы B<whiptail>(1) или B<dialog>(1) для показа вопросов. Работает в текстовом режиме.

note: type: TP
en: B<readline>
ru: B<из командной строки>

note: type: Plain text
en: The most traditional frontend, this looks quite similar to how Debian configuration always has been: a series of questions, printed out at the console using plain text, and prompts done using the readline library. It even supports tab completion. The libterm-readline-gnu-perl package is strongly recommended if you chose to use this frontend; the default readline module does not support prompting with default values.  At the minimum, you'll need the perl-modules package installed to use this frontend.
ru: Наиболее традиционный интерфейс, он подобен тому, как всегда выполнялась настройка Debian: серия вопросов, вывод на консоль простым текстом, и приглашение, использующее библиотеку readline. Он даже поддерживает автодополнение по tab. Настоятельно рекомендуется пакет libterm-readline-gnu-perl, если вы выбрали этот интерфейс; модуль readline по умолчанию не поддерживает вывод значений по умолчанию. Как минимум, вам нужно установить пакет perl-modules для использования этого интерфейса.

note: type: Plain text
en: This frontend has some special hotkeys. Pageup (or ctrl-u)  will go back to the previous question (if that is supported by the package that is using debconf), and pagedown (or ctrl-v) will skip forward to the next question.
ru: Этот интерфейс поддерживает несколько специальных горячих клавиш. С помощью Pageup (или ctrl-u) можно вернуться к предыдущему вопросу (если это поддерживается пакетом, который использует debconf), и по pagedown (or ctrl-v) можно перейти к следующему вопросу.

note: type: Plain text
en: This is the best frontend for remote admin work over a slow connection, or for those who are comfortable with unix.
ru: Это самый лучший интерфейс для удалённого администрирования через медленное соединение, или для тех кому больше нравится работать с unix.

note: type: TP
en: B<noninteractive>
ru: B<пакетный>

note: type: Plain text
en: This is the anti-frontend. It never interacts with you at all, and makes the default answers be used for all questions. It might mail error messages to root, but that's it; otherwise it is completely silent and unobtrusive, a perfect frontend for automatic installs. If you are using this front-end, and require non-default answers to questions, you will need to preseed the debconf database; see the section below on Unattended Package Installation for more details.
ru: Это анти-интерфейс. Он вообще не взаимодействует с вами и для всех вопросов использует ответы по умолчанию. Изредка он может посылать по почте сообщения суперпользователю о пакете, но это всё; он молчалив и скромен, идеальный интерфейс для автоматической установки. Если вы используете этот интерфейс, и вам нужны ответы не по умолчанию, то нужно заранее ввести их в базу данных debconf; подробности смотрите в разделе далее «Установка пакета без обслуживания».

note: type: Plain text
en: This is a modern X GUI using the gtk and gnome libraries. Of course, it requires a valid DISPLAY to work; debconf will fall back to other frontends if it can't work. Note that this frontend requires you have the libgtk3-perl package installed.
ru: Это современный графический X-интерфейс, использующий библиотеки gtk и gnome. Естественно, для работы требуется правильное значение DISPLAY, иначе debconf перейдёт на другие интерфейсы. Заметим, что этому интерфейсу требуется установленный пакет libgtk3-perl.

note: type: TP
en: B<editor>
ru: B<из текстового редактора>

note: type: Plain text
en: This is for those fanatics who have to do everything in a text editor. It runs your editor on a file that looks something like a typical unix config file, and you edit the file to communicate with debconf. Debconf's author prefers to not comment regarding the circumstances that led to this frontend being written.
ru: Для фанатиков, любящих всё делать из текстового редактора. Он запускает ваш редактор с файлом, который выглядит как обычный файл настройки unix, и вы редактируете файл для связи с debconf. Автор debconf предпочитает не комментировать обстоятельства, которые сподвигли к написанию этого интерфейса.

note: type: TP
en: B<web>
ru: B<веб-интерфейс>

note: type: Plain text
en: This frontend acts as a web server, that you connect to with your web browser, to browse the questions and answer them.  It has a lot of promise, but is a little rough so far.  When this frontend starts up, it will print out the location you should point your web browser to. You have to run the web browser on the same machine you are configuring, for security reasons.
ru: Этот интерфейс работает как веб сервер, к которому вы подключаетесь с помощью веб браузера для получения вопросов и ответов на них. Это звучит многообещающе, но пока немного не доделано. При запуске интерфейса, он выводит адрес, который вы должны указать в веб-браузере. С целью безопасности запускайте веб-браузер на той же машине, которую настраиваете.

note: type: Plain text
en: Do keep in mind that this is not a very secure frontend.  Anyone who has access to the computer being configured can currently access the web server and configure things while this frontend is running. So this is more of a proof of concept than anything.
ru: Помните, что это очень небезопасный интерфейс. Любой, кто получит доступ к компьютеру во время настройки может подключиться к веб-серверу и выполнить настройку во время работы интерфейса. Поэтому это не более чем доказательство концепции.

note: type: Plain text
en: You can change the default frontend debconf uses by reconfiguring
    debconf. On the other hand, if you just want to change the frontend
    for a minute, you can set the DEBIAN_FRONTEND environment variable to
    the name of the frontend to use. For example:
      DEBIAN_FRONTEND=readline apt-get install slrn
ru: Вы можете изменить интерфейс по умолчанию debconf выполнив перенастройку
    debconf. С другой стороны, если вы просто хотите изменить интерфейс
    ненадолго, вы можете установить в переменной окружения DEBIAN_FRONTEND
    название нужного интерфейса. Пример:
      DEBIAN_FRONTEND=readline apt-get install slrn

note: type: Plain text
en: The B<dpkg-reconfigure>(8)  and B<dpkg-preconfigure>(8)  commands also let you pass I<--frontend=> to them, followed by the frontend you want them to use.
ru: Команды B<dpkg-reconfigure>(8) и B<dpkg-preconfigure>(8) также позволяют задать интерфейс с помощью параметра I<--frontend=>.

note: type: Plain text
en: Note that not all frontends will work in all circumstances. If a frontend fails to start up for some reason, debconf will print out a message explaining why, and fall back to the next-most similar frontend.
ru: Заметим, что не все интерфейсы работают во всех случаях. Если интерфейс не удалось запустить по какой-то причине, debconf покажет сообщение объясняющее почему, и перейдёт к запуску другого похожего интерфейса.

note: type: SH
en: Priorities
ru: Приоритеты

note: type: Plain text
en: Another nice feature of debconf is that the questions it asks you are prioritized. If you don't want to be bothered about every little thing, you can set up debconf to only ask you the most important questions.  On the other hand, if you are a control freak, you can make it show you all questions. Each question has a priority. In increasing order of importance:
ru: Другим замечательным свойством debconf является то, что задаваемые вопросы имеют приоритет. Если вы не хотите беспокоиться о каждом пустяке, то можете указать debconf задавать наиболее важные вопросы. С другой стороны, если вы фанат контроля, то можете сделать так, что будут показываться все вопросы. Каждый вопрос имеет приоритет. В порядке увеличения важности:

note: type: Plain text
en: Very trivial questions that have defaults that will work in the vast majority of cases.
ru: Очень простые вопросы, для которых значения по умолчанию подойдут в большинстве случаев.

note: type: Plain text
en: Normal questions that have reasonable defaults.
ru: Обычные вопросы с разумными значениями по умолчанию.

note: type: Plain text
en: Questions that don't have a reasonable default.
ru: Вопросы без разумных значений по умолчанию.

note: type: Plain text
en: Questions that you really, really need to see (or else).
ru: Вопросы, которые нужно, действительно нужно посмотреть (а не то...).

note: type: Plain text
en: Only questions with a priority equal to or greater than the priority you choose will be shown to you. You can set the priority value by reconfiguring debconf, or temporarily by passing I<--priority=> followed by the value to the B<dpkg-reconfigure>(8)  and B<dpkg-preconfigure>(8)  commands, or by setting the DEBIAN_PRIORITY environment variable.
ru: Будут показаны только вопросы с выбранным вами приоритетом и выше. Вы можете установить значение приоритета с помощью перенастройки debconf, или временно, передав I<--priority=> значение командам B<dpkg-reconfigure>(8) и B<dpkg-preconfigure>(8), или установив переменную окружения DEBIAN_PRIORITY.

note: type: SH
en: Backend Database
ru: Среда хранения базы данных

note: type: Plain text
en: Debconf uses a rather flexible and potentially complicated backend database for storing data such as the answers to questions. The file B</etc/debconf.conf> is used to configure this database. If you need to set up something complicated, like make debconf read a remote database to get defaults, with local overrides, read the B<debconf.conf>(5)  man page for all the gory details. Generally, the backend database is located in B</var/cache/debconf/> .
ru: Debconf использует чрезвычайно гибкую и потенциально сложную среду базы данных для хранения вопросов и ответов. Для настройки базы данных используется файл B</etc/debconf.conf>. Если вам нужно сделать более сложную настройку, например заставить debconf читать значения по умолчанию из удалённой базы данных, сохраняя локальные замены, обратитесь к справочной странице B<debconf.conf>(5). Как правило база данных расположена в каталоге B</var/cache/debconf/>.

note: type: SH
en: Unattended Package Installation
ru: Установка пакета без обслуживания

note: type: Plain text
en: If you have many machines to manage you will sometimes find yourself in the position of needing to perform an unattended installation or upgrade of packages on many systems, when the default answers to some configuration questions are not acceptable. There are many ways to approach this; all involve setting up a database and making debconf use it to get the answers you want.
ru: Если вы обслуживаете много машин, то в какой-то момент вам потребуется выполнить установку или обновление пакетов на многих системах, но ответы о настройке по умолчанию вас не устраивают. Есть много способов сделать это; во всех нужно будет настроить базу данных и заставить debconf использовать её, чтобы получить ответы нужные вам.

note: type: Plain text
en: You should really read B<debconf.conf>(5)  before this section, as you need to understand how debconf's databases work.
ru: Вам определённо следует прочитать B<debconf.conf>(5) перед этим разделом, так как вы должны понимать как работают базы данных debconf.

note: type: Plain text
en: The easiest way to set up the database is to install the packages on one machine and answer their questions as usual. Or you might just use B<dpkg-preconfigure>(8)  to configure a set of packages without actually installing them. Or you might even decide to write a plain text debconf database by hand or something.
ru: Самый простой путь настроить базу данных &mdash; установить пакеты на одну машину, отвечая на все вопросы как обычно. Или вы можете просто использовать B<dpkg-preconfigure>(8) для настройки списка пакетов без их реальной установки. Также вы можете даже решиться на написание текстового файла базы данных debconf вручную или каким-то другим способом.

note: type: Plain text
en: Once you have the database, you need to figure out how to make the remote systems use it. This depends of course on the configuration of those systems and what database types they are set up to use.
ru: После того как есть база данных, вам нужно выяснить как её задействовать с удалённой машины. Это естественно зависит от настройки этих систем и какой тип базы данных на них настроен.

note: type: Plain text
en: If you are using the LDAP debconf database, an entire network of debian machines can also have any or all package installation questions answered automatically by a single LDAP server.
ru: Если вы пользуетесь LDAP базой данных debconf, то вся сеть машин debian может брать все ответы на вопросы любого или всех пакетов с одного сервера LDAP.

note: type: Plain text
en: But perhaps you're using something a little bit easier to set up like, say, the default debconf database configuration, or you just don't want your remote systems to use LDAP all the time. In this case the best approach is to temporarily configure the remote systems to stack your database underneath their own existing databases, so they pull default values out of it. Debconf offers two environment variables, DEBCONF_DB_FALLBACK and DEBCONF_DB_OVERRIDE, to make it easy to do this on the fly. Here is a sample use:
ru: Но возможно вы будете использовать что-то более лёгкое в настройке, скажем, настройку базы данных debconf по умолчанию, или просто не хотите, чтобы удалённые системы постоянно использовали LDAP. В этом случае самое лучшее — временно поместить на удалённых системах вашу базу данных в стек ниже существующих баз данных, так чтобы из неё брались значения по умолчанию. Debconf предлагает две переменные окружения, DEBCONF_DB_FALLBACK и DEBCONF_DB_OVERRIDE, для лёгкого выполнения этого на лету. Пример:

note: type: Plain text
en: This makes the debconf on the remote host read in the data that is piped across the ssh connection and interpret it as a plain text format debconf database. It then uses that database as a fallback database -- a read-only database that is queried for answers to questions if the system's main debconf database lacks answers.
ru: Это заставляет debconf на удалённой машине прочитать данные, которые были переданы по каналу через соединение ssh и рассматривать их как базу данных debconf формата простого текста. Затем он использует эту базу данных как резервную: базу данных только для чтения, из которой берутся ответы на вопросы, если их нет в системной главной базе данных debconf.

note: type: Plain text
en: Here's another way to use the DEBCONF_DB_FALLBACK environment variable:
ru: Вот другой способ использования переменной окружения DEBCONF_DB_FALLBACK:

note: type: Plain text
en: Here ssh is used to set up a tunneled LDAP connection and run debconf.  Debconf is told to use the LDAP server as the fallback database. Note the use of "{host:localhost}" to configure how debconf accesses the LDAP database by providing the "host" field with a value of "localhost".
ru: Здесь используется ssh для настройки туннеля до LDAP и запуска debconf. Для debconf указывается использовать сервер LDAP в качестве резервной базы данных. Заметим, что для настройки доступа debconf к базе данных LDAP используется «{host:localhost}» , то есть поле «host» имеет значение «localhost».

note: type: Plain text
en: Here's another method:
ru: Другой метод:

note: type: Plain text
en: Here you copy the database over with scp, and then ssh over and make debconf use the file you copied over. This illustrates a shorthand you can use in the DEBCONF_DB_FALLBACK parameters -- if a field name is left off, it defaults to "filename".
ru: Здесь вы копируете базу данных с помощью scp, и затем через ssh debconf использует скопированный файл. Здесь показано как можно использовать сокращённую запись параметров DEBCONF_DB_FALLBACK — если поле имени отсутствует, то по умолчанию используется «имя файла».

note: type: Plain text
en: There is only one problem with these uses of the DEBCONF_DB_FALLBACK parameter: While the fallback database can provide answers to questions the other debconf databases have never seen, it is only queried as a fallback; after the other databases. If you need to instead temporarily override an existing value on the remote host, you should instead use the DEBCONF_DB_OVERRIDE variable. Like DEBCONF_DB_FALLBACK, it sets up a temporary database, but this database is consulted before any others, and can be used to override existing values.
ru: Есть только одна проблема при использовании параметра DEBCONF_DB_FALLBACK: резервная база данных предоставляет ответы на вопросы, на которые не нашлось ответов в других базах данных, она служит только как резервная; после других баз данных. Если вам нужно вместо временной заменить существующие значения на удалённом узле, вы должны использовать переменную DEBCONF_DB_OVERRIDE. Подобно DEBCONF_DB_FALLBACK, она указывает на временную базу данных, но эта база данных просматривается раньше всех остальных, и может использоваться для замены существующих значений.

note: type: SH
en: Developing for Debconf
ru: Разработка с Debconf

note: type: Plain text
en: Package developers and others who want to develop packages that use debconf should read B<debconf-devel>(7)  .
ru: Разработчикам пакетов и всем, кто хочет разрабатывать пакеты, использующие debconf, нужно прочитать B<debconf-devel>(7).

note: type: Plain text
en: Briefly, debconf communicates with maintainer scripts or other programs via standard input and output, using a simple line-oriented command language similar to that used by common internet protocols such as SMTP. Programs use this protocol to ask debconf to display questions to the user, and retrieve the user's answers. The questions themselves are defined in a separate file, called the "templates file", which has a format not unlike a debian control file.
ru: Вкратце, debconf связывается с сценариями сопровождающего или другими программами через стандартные ввод и вывод, используя простой командный язык, одна команда на строку протокола, похожий на распространённые протоколы интернет типа SMTP. Программы через протокол просят debconf показать вопросы пользователю и получить ответы. Сами вопросы хранятся в отдельном файле, называемом «файл templates», который имеет формат почти не отличающийся от формата debian файла control.

note: type: Plain text
en: Debian packages which use debconf typically provide both a templates file and a "config" script (run to preconfigure the package) in the control metadata section of the package.
ru: Пакеты Debian, которые используют debconf, обычно предоставляют и файл templates и сценарий «config» (запускается во время предварительной настройки пакета), хранящиеся в управляющем разделе метаданных пакета.

note: type: SH
en: ENVIRONMENT
ru: ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ

note: type: Plain text
en: Used to temporarily change the frontend debconf uses. See above.
ru: Используется для временного изменения интерфейса debconf. Смотрите ранее.

note: type: Plain text
en: Used to temporarily change the minimum priority of question debconf will display. See above.
ru: Используется для временного изменения минимального приоритета задаваемых вопросов debconf. Описание смотрите ранее.

note: type: Plain text
en: Turns on debugging output on standard error. May be set to a facility name or a regular expression which matches a facility name (such as '.*' to output all debug info). The facility names include:
ru: Отправлять отладочный вывод в стандартный поток ошибок. Может быть задано имя функции(facility) или регулярное выражение описывающее нужные функции (типа «.*», которое заставляет выводить всю отладочную информацию). Имена функций:

note: type: Plain text
en: Debugging info of interest to a debconf user.
ru: Отладочная информация, интересная пользователю debconf.

note: type: Plain text
en: Debugging info of interest to a package developer.
ru: Отладочная информация, интересная разработчику пакета.

note: type: Plain text
en: Debugging info about the backend database.
ru: Отладочная информация о среде хранения базы данных.

note: type: Plain text
en: Set to "yes" to disable some warnings that debconf may display. Does not suppress display of fatal errors.
ru: Установите в «yes», чтобы выключить некоторые предупреждения, которые может выдавать debconf. Критические ошибки всё равно выводятся.

note: type: Plain text
en: Set to "yes" to enable terse mode, in which debconf frontends cut down on the verbiage as much as possible.
ru: Установите в «yes», чтобы включить краткий режим вывода, в котором интерфейсы debconf сокращают свой поток сообщений насколько возможно.

note: type: Plain text
en: Stack a database after the normally used databases, so that it is used as a fallback to get configuration information from. See "Unattended Package Installation" above. If the value of the variable is the name of an existing database in debconf.conf, then that database will be used.  Otherwise, the environment variable can be used to configure a database on the fly, by telling the type of database, and optionally passing field:value settings, inside curly braces after the type. Spaces are used to separate fields, so you cannot specify a field value containing whitespace.
ru: База данных, использующаяся после всех обычных баз, поэтому она может использоваться как резервная для получения настройки. Смотрите ранее «Установка пакета без обслуживания». Если значение переменной — имя существующей базы данных в debconf.conf, то будет использоваться эта база данных. Иначе, переменная окружения может быть использована для настройки базы данных на лету, с помощью задания типа базы данных и необязательного передаваемых настроек поле:значение внутри фигурных скобок после типа. Для разделения полей используются пробелы, поэтому вы не можете указывать значение поля с пробелами.

note: type: Plain text
en: Thus, this uses the fallbackdb in debconf.conf:
      DEBCONF_DB_FALLBACK=fallbackdb
ru: Соответственно, здесь используется fallbackdb из debconf.conf:
      DEBCONF_DB_FALLBACK=fallbackdb

note: type: Plain text
en: While this sets up a new database of type File, and tells it a filename to
    use and turns off backups:
      DEBCONF_DB_FALLBACK=File{Filename:/root/config.dat Backup:no}
ru: А здесь устанавливается новая база данных с типом File, указывается имя файла
    для неё и выключается резервное копия:
      DEBCONF_DB_FALLBACK=File{Filename:/root/config.dat Backup:no}

note: type: Plain text
en: And as a shorthand, this sets up a database of type File with a filename:
      DEBCONF_DB_FALLBACK=File{/root/config.dat}
ru: И для краткости, здесь устанавливается база данных с типом File и именем файла:
      DEBCONF_DB_FALLBACK=File{/root/config.dat}

note: type: Plain text
en: Note that if a fallback database is set up on the fly, it will be read-only by default.
ru: Заметим, что если резервная база данных устанавливается на лету, то по умолчанию она доступна только для чтения.

note: type: Plain text
en: Stack a database before the normally used databases, so that it can override values from them. The value of the variable works the same as does the value of DEBCONF_DB_FALLBACK.
ru: База данных, использующаяся перед всеми обычными базами, поэтому она может изменить их значения. Значение переменной задаётся так же как и для переменной DEBCONF_DB_FALLBACK.

note: type: Plain text
en: Use a given database instead of the normally used databases.  This may be useful for testing with a separate database without having to create a separate debconf.conf, or to avoid locking the normal databases.
ru: Использовать указанную базу данных вместо обычных. Это может быть полезно для тестирования с отдельной базой данных без создания отдельного файла debconf.conf, или чтобы избежать блокировки обычных баз данных.

note: type: Plain text
en: If this environment variable is set, debconf will ignore a user's ~/.debconfrc file, and use the system one instead.  If it is set to the name of a regular file, debconf will use that file in preference to the system configuration files.
ru: Если эта переменная окружения установлена, debconf будет игнорировать пользовательский файл ~/.debconfrc, и использовать вместо него системный. Если в ней задано имя обычного файла, то debconf будет использовать этот файл вместо системных файлов настройки.

note: type: Plain text
en: If this environment variable is set, debconf will use dialog in preference to whiptail for the dialog frontend.
ru: Если эта переменная окружения установлена, то debconf будет использовать dialog вместо whiptail для интерфейса dialog.

note: type: Plain text
en: If this environment variable is set, debconf will use Xdialog in preference to whiptail for the dialog frontend.
ru: Если эта переменная окружения установлена, то debconf будет использовать Xdialog вместо whiptail для интерфейса dialog.

note: type: Plain text
en: Set to "true" to cause the seen flag to be set for questions asked in the noninteractive frontend.
ru: Установка в «true» вызовет установку флага seen для вопросов заданных неинтерактивным интерфейсом.

note: type: SH
en: BUGS
ru: ОШИБКИ

note: type: Plain text
en: Probably quite a few, there's a lot of code here.
ru: Вероятно имеются как и в любом другом коде большого размера.

note: type: Plain text
en: If you do file a bug report, be sure to include the following information:
ru: При отправке отчёта об ошибке проверьте, что включили следующую информацию:

note: type: Plain text
en: The debconf frontend you were using when the problem occurred
ru: Название интерфейса debconf при работе с которым возникла ошибка

note: type: Plain text
en: What you did to trigger the problem.
ru: Что вы сделали что возникла ошибка.

note: type: Plain text
en: The full text of any error messages. If you can reproduce the bug, do so with DEBCONF_DEBUG='.*' set and exported. This speeds up debugging a lot.
ru: Полный текст любых сообщений об ошибках. Если вы можете повторить эту ошибку, сделайте это с установленной переменной DEBCONF_DEBUG='.*'. Это намного ускорит отладку.

note: type: Plain text
en: debconf - developers guide
ru: debconf - руководство разработчика

note: type: Plain text
en: This is a guide for developing packages that use debconf.
ru: Данное руководство помогает при разработке пакетов, использующих debconf.

note: type: Plain text
en: This manual assumes that you are familiar with debconf as a user, and are familiar with the basics of debian package construction.
ru: Предполагается, что вы знакомы с debconf как пользователь, а также знакомы с основами создания пакетов debian.

note: type: Plain text
en: This manual begins by explaining two new files that are added to debian packages that use debconf. Then it explains how the debconf protocol works, and points you at some libraries that will let your programs speak the protocol. It discusses other maintainer scripts that debconf is typically used in: the postinst and postrm scripts. Then moves on to more advanced topics like shared debconf templates, debugging, and some common techniques and pitfalls of programming with debconf. It closes with a discussion of debconf's current shortcomings.
ru: Это руководство начинается с описания двух новых файлов, которые добавляются в пакеты debian, если они используют debconf. Затем объясняется работа протокола debconf и описываются некоторые библиотеки, которые позволят вашим программам работать с ним. В частности обсуждаются другие сценарии для сопровождения, которые обычно используются с debconf: сценарии postinst и postrm. Далее рассматриваются более сложные темы, например, общие шаблоны debconf, отладка и некоторые основные приёмы и ловушки при программировании с debconf. Завершает руководство описание имеющихся недостатков debconf.

note: type: SH
en: THE CONFIG SCRIPT
ru: СЦЕНАРИЙ НАСТРОЙКИ

note: type: Plain text
en: Debconf adds an additional maintainer script, the config script, to the set of maintainer scripts that can be in debian packages (the postinst, preinst, postrm, and prerm). The config script is responsible for asking any questions necessary to configure the package.
ru: Debconf добавляет дополнительный сценарий сопровождения, сценарий config, который служит для настройки сопровождающих сценариев, имеющихся в пакетах debian (postinst, preinst, postrm и prerm). Сценарий config отвечает за выдачу всех вопросов настройки пакета.

note: type: Plain text
en: Note: It is a little confusing that dpkg refers to running a package's postinst script as "configuring" the package, since a package that uses debconf is often fully pre-configured, by its config script, before the postinst ever runs. Oh well.
ru: Замечание: часто смущает тот факт, что dpkg ссылается на запущенный сценарий пакета postinst как на «настроечный», хотя пакет, который использует debconf часто полностью настроен своим сценарием config ещё до того как postinst даже будет запущен. Такие дела.

note: type: Plain text
en: Like the postinst, the config script is passed two parameters when it is run. The first tells what action is being performed, and the second is the version of the package that is currently installed. So, like in a postinst, you can use dpkg --compare-versions on $2 to make some behavior happen only on upgrade from a particular version of a package, and things like that.
ru: Как и postinst, сценарию config передаётся два параметра при запуске. В первом задаётся действие, которое нужно выполнить, а во втором — версия установленного в данный момент пакета. Как и в postinst, вы можете применить dpkg --compare-versions к $2, чтобы выполнить данную команду только при обновлении с определённой версии пакета и тому подобных операций.

note: type: Plain text
en: The config script can be run in one of three ways:
ru: Сценарий config может быть запущен в трёх случаях:

note: type: Plain text
en: If a package is pre-configured, with dpkg-preconfigure, its config script is run, and is passed the parameters "configure", and installed-version.
ru: Во время предварительной настройки пакета из dpkg-preconfigure, который запускает сценарий config с параметрами «configure» и номером установленной версии.

note: type: Plain text
en: When a package's postinst is run, debconf will try to run the config script then too, and it will be passed the same parameters it was passed when it is pre-configured. This is necessary because the package might not have been pre-configured, and the config script still needs to get a chance to run. See HACKS for details.
ru: При запуске postinst из пакета, debconf также попытается запустить сценарий config и передать те же параметры, что и в случае с предварительной настройкой пакета. Это необходимо, так как пакет может не быть предварительно настроен, и сценарию config даётся ещё одна попытка отработать. Подробней смотрите в разделе ХАКИ.

note: type: Plain text
en: If a package is reconfigured, with dpkg-reconfigure, its config script it run, and is passed the parameters "reconfigure" and installed-version.
ru: При повторной настройке пакета с помощью dpkg-reconfigure, где сценарий config запускается с параметрами «reconfigure» и номером установленной версии.

note: type: Plain text
en: Note that since a typical package install or upgrade using apt runs steps 1 and 2, the config script will typically be run twice. It should do nothing the second time (to ask questions twice in a row is annoying), and it should definitely be idempotent. Luckily, debconf avoids repeating questions by default, so this is generally easy to accomplish.
ru: Заметим, что так как типичная установка или обновление с помощью apt попадают под случаи 1 и 2, сценарий config обычно запускается дважды. Он ничего не должен делать во второй раз (отвечать на вопросы второй раз подряд раздражает), и определённо должен быть идемпотентен. К счастью, debconf избегает повторения вопросов по умолчанию, поэтому это легко  достигается.

note: type: Plain text
en: Note that the config script is run before the package is unpacked. It should only use commands that are in essential packages. The only dependency of your package that is guaranteed to be met when its config script is run is a dependency (possibly versioned) on debconf itself.
ru: Заметим, что сценарий config запускается перед распаковкой пакета. В нём должны использоваться только команды из пакетов первой необходимости. Единственная зависимость пакета, которая будет удовлетворена до запуска сценария config — это сам debconf (возможно указать версию).

note: type: Plain text
en: The config script should not need to modify the filesystem at all. It just examines the state of the system, and asks questions, and debconf stores the answers to be acted on later by the postinst script. Conversely, the postinst script should almost never use debconf to ask questions, but should instead act on the answers to questions asked by the config script.
ru: Сценарию config ничего не нужно изменять в файловой системе. Он должен просто проверить состояние системы и задать вопросы, а debconf сохранит ответы, которые требуют действий позже из сценария postinst. И наоборот, сценарий postinst не должен использовать debconf для задания вопросов, а вместо этого должен полагаться на ответы, полученные при работе сценария config.

note: type: SH
en: THE TEMPLATES FILE
ru: ФАЙЛ TEMPLATES

note: type: Plain text
en: A package that uses debconf probably wants to ask some questions. These questions are stored, in template form, in the templates file.
ru: Пакету, использующему debconf, вероятно требуется задать некоторые вопросы. Эти вопросы хранятся в форме шаблона в файле templates.

note: type: Plain text
en: Like the config script, the templates file is put in the control.tar.gz section of a deb. Its format is similar to a debian control file; a set of stanzas separated by blank lines, with each stanza having a RFC822-like form:
ru: Как и сценарий config, файл templates находится в секции control.tar.gz deb файла. Его формат похож на формат debian файла control; секции строк, разделённые символами новой строки, каждая строка задана в RFC822-подобной форме:

note: type: Plain text
en:   Template: foo/bar
      Type: string
      Default: foo
      Description: This is a sample string question.
       This is its extended description.
       .
       Notice that:
        - Like in a debian package description, a dot
          on its own line sets off a new paragraph.
        - Most text is word-wrapped, but doubly-indented
          text is left alone, so you can use it for lists
          of items, like this list. Be careful, since
          it is not word-wrapped, if it's too wide
          it will look bad. Using it for short items
          is best (so this is a bad example).
ru:   Template: foo/bar
      Type: string
      Default: foo
      Description: Это пример строки вопроса.
       Это её дополнительное описание.
       .
       Заметим что:
        - как и в описании пакета debian точка
          в отдельной строке начинает новый параграф.
        - для большого текста выполняется перенос на новую строку, но текст
          с двойным отступом выводится как есть,
          вы можете использовать это для показа списков
          как сделано здесь. Осторожно, так как
          перенос не выполняется, это очень плохо сказывается на слишком
          длинных строках. Используйте это для коротких элементов
          (поэтому это плохой пример).

note: type: Plain text
en:   Template: foo/baz
      Type: boolean
      Description: Clear enough, no?
       This is another question, of boolean type.
ru:   Template: foo/baz
      Type: boolean
      Description: Вроде всё просто?
       Это другой вопрос, логического типа.

note: type: Plain text
en: For some real-life examples of templates files, see /var/lib/dpkg/info/debconf.templates, and other .templates files in that directory.
ru: Несколько рабочих примеров для файлов templates можно найти в /var/lib/dpkg/info/debconf.templates и других файлах .templates в этом каталоге.

note: type: Plain text
en: Let's look at each of the fields in turn..
ru: Давайте рассмотрим каждое из полей по очереди..

note: type: Plain text
en: The name of the template, in the 'Template' field, is generally prefixed with the name of the package. After that the namespace is wide open; you can use a simple flat layout like the one above, or set up "subdirectories" containing related questions.
ru: Название шаблона в поле «Template» обычно начинается с названия пакета. Далее можно использовать что угодно; вы можете использовать простую схему как в предыдущем примере или настроить «подкаталоги», содержащие похожие вопросы.

note: type: Plain text
en: The type of the template determines what kind of widget is displayed to the user. The currently supported types are:
ru: Тип шаблона, который определяет какого вида будет показан элемент. Поддерживаются:

note: type: Plain text
en: Results in a free-form input field that the user can type any string into.
ru: Поле ввода произвольных данных, в которое пользователь может ввести любую строку.

note: type: Plain text
en: Prompts the user for a password. Use this with caution; be aware that the password the user enters will be written to debconf's database. You should probably clean that value out of the database as soon as is possible.
ru: Предлагает пользователю ввести пароль. Используйте с осторожностью; этот пароль будет сохранён в базу данных debconf. Вероятно, вы должны удалить это значение из базы как можно быстрее.

note: type: Plain text
en: A true/false choice.
ru: Выбор true/false.

note: type: Plain text
en: A choice between one of a number of values. The choices must be specified in a field named 'Choices'. Separate the possible values with commas and spaces, like this:
ru: Выбор одного из указанных значений. Значения должны быть заданы в поле «Choices». Разделителями значений могут быть запятые и пробелы:

note: type: Plain text
en:   Choices: yes, no, maybe
ru:   Choices: да, нет, может_быть

note: type: Plain text
en: Like the select data type, except the user can choose any number of items from the choices list (or choose none of them).
ru: Как и в типе данных select, выбор из списка, кроме того, что пользователь может выбрать сразу несколько значений из списка (или ни одного из них).

note: type: Plain text
en: Rather than being a question per se, this datatype indicates a note that can be displayed to the user. It should be used only for important notes that the user really should see, since debconf will go to great pains to make sure the user sees it; halting the install for them to press a key.  It's best to use these only for warning about very serious problems, and the error datatype is often more suitable.
ru: Вместо вопроса как такового, этот тип данных задаёт примечание, которое может быть показано пользователю. Данный тип должен использоваться только для важных сообщений, которые пользователи обязательно должны увидеть, так как debconf обязательно сделает так, чтобы пользователь увидел это; установка остановится, пока не будет нажата клавиша. Данный тип лучше использовать только для предупреждений о серьёзных проблемах.

note: type: Plain text
en: This datatype is used for error messages, such as input validation errors.  Debconf will show a question of this type even if the priority is too high or the user has already seen it.
ru: Этот тип данных используется для сообщений об ошибках, таких как ошибки ввода данных. Debconf покажет вопрос этого типа даже если приоритет самый высокий и пользователь уже видел этот вопрос.

note: type: Plain text
en: This datatype is used for titles, to be set with the SETTITLE command.
ru: Этот тип данных используется для заголовков, которые устанавливаются командой SETTITLE.

note: type: Plain text
en: This datatype can be used for fragments of text, such as labels, that can be used for cosmetic reasons in the displays of some frontends. Other frontends will not use it at all. There is no point in using this datatype yet, since no frontends support it well. It may even be removed in the future.
ru: Данный тип данных может быть использован для показа частей текста, например ярлыков, которые могут использоваться в косметических целях отображения некоторыми интерфейсами. Некоторые интерфейсы вообще не используют этот тип. Пока нет общих принципов по использованию его, так как нет интерфейсов, которые поддерживают его хорошо. Может в будущем он будет вообще удалён.

note: type: Plain text
en: The 'Default' field tells debconf what the default value should be. For multiselect, it can be a list of choices, separated by commas and spaces, similar to the 'Choices' field. For select, it should be one of the choices. For boolean, it is "true" or "false", while it can be anything for a string, and it is ignored for passwords.
ru: Поле «Default» указывает debconf, какое должно быть значение по умолчанию. Для multiselect это может быть список значений, разделённых запятыми или пробелами, как в поле «Choices». Для select — это одно значение из списка. Для boolean — это «true» или «false», хотя может использоваться любая строка, и она игнорируется для паролей.

note: type: Plain text
en: Don't make the mistake of thinking that the default field contains the "value" of the question, or that it can be used to change the value of the question. It does not, and cannot, it just provides a default value for the first time the question is displayed. To provide a default that changes on the fly, you'd have to use the SET command to change the value of a question.
ru: Не подумайте, что поле значения по умолчанию содержит «ответ» на вопрос, или что он может быть использован для замены ответа на вопрос. Это не так, и не может быть так, он только предоставляет ответ по умолчанию при первом показе вопроса. Чтобы изменить значение по умолчанию на лету, используйте команду SET.

note: type: Plain text
en: The 'Description' field, like the description of a Debian package, has two parts: A short description and an extended description. Note that some debconf frontends don't display the long description, or might only display it if the user asks for help. So the short description should be able to stand on its own.
ru: Поле «Description» подобно полю описания в пакете Debian, имеет две части: короткое описание и расширенное описание. Заметим, что некоторые интерфейсы к debconf не отображают длинное описание, или могут показать его, только если пользователь попросит показать помощь. Поэтому короткое описание должно отображать всю суть вопроса.

note: type: Plain text
en: If you can't think up a long description, then first, think some more. Post to debian-devel. Ask for help. Take a writing class! That extended description is important. If after all that you still can't come up with anything, leave it blank. There is no point in duplicating the short description.
ru: Если вы не можете придумать длинного описания, то сначала подумайте ещё немного. Напишите в debian-devel. Попросите помочь. Возьмите урок по написанию! Длинное описание очень важно. Если после всего этого ничего не приходит в голову, оставьте поле пустым. Нет смысла дублировать то, что уже написано в коротком описании.

note: type: Plain text
en: Text in the extended description will be word-wrapped, unless it is prefixed by additional whitespace (beyond the one required space). You can break it up into separate paragraphs by putting " ." on a line by itself between them.
ru: Текст в расширенном описании будет переноситься по словам, если он не начинается с дополнительного пробельного символа (после первого обязательного пробела). Вы можете разбить его на параграфы поместив « .» в пустой строке между параграфами.

note: type: SH
en: QUESTIONS
ru: ВОПРОСЫ

note: type: Plain text
en: A question is an instantiated template. By asking debconf to display a question, your config script can interact with the user. When debconf loads a templates file (this happens whenever a config or postinst script is run), it automatically instantiates a question from each template. It is actually possible to instantiate several independent questions from the same template (using the REGISTER command), but that is rarely necessary. Templates are static data that comes from the templates file, while questions are used to store dynamic data, like the current value of the question, whether a user has seen a question, and so on. Keep the distinction between a template and a question in mind, but don't worry too much about it.
ru: Вопрос — это проиллюстрированный шаблон. Прося debconf показать вопрос, таким образом ваш сценарий config может взаимодействовать с пользователем. Когда debconf загружает файл templates (это происходит при запуске сценария config или postinst), он автоматически показывает вопрос каждого шаблона. На самом деле можно показать несколько независимых вопросов из одного шаблона (с помощью команды REGISTER), но это требуется редко. Шаблоны — это статические данные из файла templates, а вопросы используются для хранения динамических данных, таких как имеющийся ответ на вопрос, видел ли пользователь уже этот вопрос и тому подобное. Помните об этом различии между шаблоном и вопросом, но не стоит сильно забивать этим голову.

note: type: SH
en: SHARED TEMPLATES
ru: ОБЩИЕ ШАБЛОНЫ

note: type: Plain text
en: It's actually possible to have a template and a question that are shared among a set of packages. All the packages have to provide an identical copy of the template in their templates files. This can be useful if a bunch of packages need to ask the same question, and you only want to bother the user with it once. Shared templates are generally put in the shared/ pseudo-directory in the debconf template namespace.
ru: Фактически, есть возможность иметь один шаблон и вопрос сразу для нескольких пакетов. Все пакеты могут предоставлять идентичную копию шаблона в своих файлах templates. Это может быть полезно, если набору пакетов требуется задать один и тот же вопрос, а вы хотите побеспокоить пользователя только один раз. Общие шаблоны обычно помещаются в псевдокаталог shared/ в пространстве имён шаблонов debconf.

note: type: SH
en: THE DEBCONF PROTOCOL
ru: ПРОТОКОЛ DEBCONF

note: type: Plain text
en: Config scripts communicate with debconf using the debconf protocol. This is a simple line-oriented protocol, similar to common internet protocols such as SMTP. The config script sends debconf a command by writing the command to standard output. Then it can read debconf's reply from standard input.
ru: Сценарии config взаимодействуют с debconf по протоколу debconf. Это простой однострочный протокол, похожий на основные протоколы интернета, типа SMTP. Сценарий config посылает debconf команду, записывая эту команду в стандартный вывод. Затем, он может прочитать ответ debconf со стандартного ввода.

note: type: Plain text
en: Debconf's reply can be broken down into two parts: A numeric result code (the first word of the reply), and an optional extended result code (the remainder of the reply). The numeric code uses 0 to indicate success, and other numbers to indicate various kinds of failure. For full details, see the table in Debian policy's debconf specification document.
ru: Ответы debconf можно разделить на две части: числовой код результата (первое слово в ответе) и необязательный расширенный код результата (оставшаяся часть ответа). В числовом коде значение 0 соответствует успешному выполнению, а другие числа указывают на различного вида неудачи. Подробней смотрите таблицу в политике Debian, раздел спецификации debconf.

note: type: Plain text
en: The extended return code is generally free form and unspecified, so you should generally ignore it, and should certainly not try to parse it in a program to work out what debconf is doing. The exception is commands like GET, that cause a value to be returned in the extended return code.
ru: Расширенный код результата имеет любой вид и никак не стандартизован, поэтому нужно игнорировать его и не пытаться использовать в своей программе для выяснения что делает debconf. Исключение составляют команды типа GET, которая создаёт значение для возврата в расширенном коде результата.

note: type: Plain text
en: Generally you'll want to use a language-specific library that handles the nuts and bolts of setting up these connections to debconf and communicating with it.
ru: Обычно вы будете использовать библиотеку, которая работает на низком уровне для установления связи с debconf и взаимодействия с ним.

note: type: Plain text
en: For now, here are the commands in the protocol. This is not the definitive definition, see Debian policy's debconf specification document for that.
ru: А теперь обсудим команды протокола. Это не полное описание, за ним обращайтесь к документу о политике Debian, раздел спецификации debconf.

note: type: TP
en: B<VERSION number>
ru: B<VERSION номер>

note: type: Plain text
en: You generally don't need to use this command. It exchanges with debconf the protocol version number that is being used. The current protocol version is 2.0, and versions in the 2.x series will be backwards-compatible. You may specify the protocol version number you are speaking and debconf will return the version of the protocol it speaks in the extended result code. If the version you specify is too low, debconf will reply with numeric code 30.
ru: Обычно не нужно использовать эту команду. Она позволяет договориться с debconf о том, какая версия протокола должна быть использована. Текущая версия протокола — 2.0, а версии ветки 2.x обратно совместимы. Вы можете указать номер версии протокола и debconf вернёт версию протокола в расширенном коде результата. Если указанная вами версия слишком стара, debconf вернёт числовой код 30.

note: type: TP
en: B<CAPB capabilities>
ru: B<CAPB возможности>

note: type: Plain text
en: You generally don't need to use this command. It exchanges with debconf a list of supported capabilities (separated by spaces). Capabilities that both you and debconf support will be used, and debconf will reply with all the capabilities it supports.
ru: Обычно не нужно использовать эту команду. Она позволяет обменяться с debconf списком поддерживаемых возможностей (разделяются пробелами). Будут использованы возможности, которые поддерживаются вами и debconf, а debconf вернёт список всех поддерживаемых им возможностей.

note: type: Plain text
en: If 'escape' is found among your capabilities, debconf will expect commands you send it to have backslashes and newlines escaped (as \e\e and \en respectively) and will in turn escape backslashes and newlines in its replies. This can be used, for example, to substitute multi-line strings into templates, or to get multi-line extended descriptions reliably using METAGET. In this mode, you must escape input text yourself (you can use B<debconf-escape>(1)  to help with this if you want), but the confmodule libraries will unescape replies for you.
ru: Если среди ваших возможностей будет «escape», то debconf будет ожидать, что в посылаемых вами командах символы обратный слеш и новой строки экранированы (\e\e и \en соответственно), а в своих ответах будет также это делать. Это может быть использовано, например, для подстановки многострочных строк в шаблонах, или для получения многострочных расширенных описаний, использующихся в METAGET. В этом режиме вы должны сами экранировать входной текст (для этого вы можете использовать команду B<debconf-escape>(1), если хотите), а библиотеки confmodule будут снимать экранирования в ответах за вас.

note: type: TP
en: B<SETTITLE question>
ru: B<SETTITLE вопрос>

note: type: Plain text
en: This sets the title debconf displays to the user, using the short description of the template for the specified question. The template should be of type title. You rarely need to use this command since debconf can automatically generate a title based on your package's name.
ru: Устанавливает заголовок, который debconf показывает пользователю, используя короткое описание шаблона указанного вопроса. Шаблон должен быть типа title. Обычно редко используется, так как debconf может автоматически генерировать заголовок на основе имени пакета.

note: type: Plain text
en: Setting the title from a template means they are stored in the same place as the rest of the debconf questions, and allows them to be translated.
ru: Установка заголовка из шаблона означает, что они хранятся в том же месте что и все вопросы debconf, и их можно переводить на другие языки.

note: type: TP
en: B<TITLE string>
ru: B<TITLE строка>

note: type: Plain text
en: This sets the title debconf displays to the user to the specified string.  Use of the SETTITLE command is normally to be preferred as it allows for translation of the title.
ru: Устанавливает заголовок, который debconf показывает пользователю, используя заданную строку. Использование команды SETTITLE предпочтительно, так как позволяет переводить заголовок на другие языки.

note: type: TP
en: B<INPUT priority question>
ru: B<INPUT приоритет вопрос>

note: type: Plain text
en: Ask debconf to prepare to display a question to the user. The question is not actually displayed until a GO command is issued; this lets several INPUT commands be given in series, to build up a set of questions, which might all be asked on a single screen.
ru: Просит debconf подготовить к показу вопрос пользователю. Вопрос не показывается до тех пор пока не будет дана команда GO; это позволяет последовательно задать несколько команд INPUT для накопления набора вопросов, которые могут быть заданы все разом на одном экране.

note: type: Plain text
en: The priority field tells debconf how important it is that this question be shown to the user. The priority values are:
ru: Поле приоритета говорит debconf насколько важен вопрос, который будет показан пользователю. Значения приоритета:

note: type: Plain text
en: Very trivial items that have defaults that will work in the vast majority of cases; only control freaks see these.
ru: Очень простые элементы со значениями по умолчанию, которые работают в подавляющем большинстве случаев; только параноики увидят их.

note: type: Plain text
en: Normal items that have reasonable defaults.
ru: Обычные элементы с корректными значениями по умолчанию.

note: type: Plain text
en: Items that don't have a reasonable default.
ru: Элементы, у которых нет приемлемых значений по умолчанию.

note: type: Plain text
en: Items that will probably break the system without user intervention.
ru: Элементы, которые вероятно сломают систему, если не будет вмешательства пользователя.

note: type: Plain text
en: Debconf decides if the question is actually displayed, based on its priority, and whether the user has seen it before, and which frontend is being used. If the question will not be displayed, debconf replies with code 30.
ru: Debconf сам решает нужно ли вообще показывать вопрос, основываясь на этом приоритете и том, видел ли уже пользователь этот вопрос и какой интерфейс используется для показа. Если вопрос не будет показан, debconf возвращает код 30.

note: type: Plain text
en: Tells debconf to display the accumulated set of questions (from INPUT commands) to the user.
ru: Указывает debconf показать накопленные вопросы (переданные ранее командами INPUT) пользователю.

note: type: Plain text
en: If the backup capability is supported and the user indicates they want to back up a step, debconf replies with code 30.
ru: Если поддерживается возможность backup и пользователь потребовал вернуться на шаг назад, то debconf возвратит код 30.

note: type: Plain text
en: Clears the accumulated set of questions (from INPUT commands) without displaying them.
ru: Очистить накопленные вопросы (из команд INPUT) и не показывать их.

note: type: Plain text
en: Some debconf frontends can display a number of questions to the user at once.  Maybe in the future a frontend will even be able to group these questions into blocks on screen. BEGINBLOCK and ENDBLOCK can be placed around a set of INPUT commands to indicate blocks of questions (and blocks can even be nested). Since no debconf frontend is so sophisticated yet, these commands are ignored for now.
ru: Некоторые интерфейсы debconf могут показывать пользователю сразу несколько вопросов одновременно. Может быть в будущем интерфейсы даже смогут группировать такие вопросы по блокам на экране. BEGINBLOCK и ENDBLOCK могут указываться вокруг набора команд INPUT, чтобы обозначить блоки вопросов (и блоки могут быть вложенными). Так как пока ни один интерфейс к debconf не поддерживает их, в данный момент эти команды игнорируются.

note: type: Plain text
en: This command tells debconf that you're done talking to it. Often debconf can detect termination of your program and this command is not necessary.
ru: Эта команда указывает debconf на завершения взаимодействия с ним. Часто debconf может сам обнаружить завершение вашей программы и эта команда не обязательна.

note: type: TP
en: B<GET question>
ru: B<GET вопрос>

note: type: Plain text
en: After using INPUT and GO to display a question, you can use this command to get the value the user entered. The value is returned in the extended result code.
ru: После отработки INPUT и GO для показа вопроса, вы можете использовать эту команду для получения значения введённого пользователем. Значение возвращается в виде расширенного кода результата.

note: type: TP
en: B<SET question value>
ru: B<SET вопрос ответ>

note: type: Plain text
en: This sets the value of a question, and it can be used to override the default value with something your program calculates on the fly.
ru: Задаёт ответ на вопрос; это можно использовать для замены ответа по умолчанию чем-то, что ваша программа вычислила во время работы.

note: type: TP
en: B<RESET question>
ru: B<RESET вопрос>

note: type: Plain text
en: This resets the question to its default value (as is specified in the 'Default' field of its template).
ru: Сбрасывает ответ на вопрос в значение по умолчанию (как указано в поле «Default» в шаблоне).

note: type: TP
en: B<SUBST question key value>
ru: B<SUBST вопрос ключ значение>

note: type: Plain text
en: Questions can have substitutions embedded in their 'Description' and 'Choices' fields (use of substitutions in 'Choices' fields is a bit of a hack though; a better mechanism will eventually be developed). These substitutions look like "${key}". When the question is displayed, the substitutions are replaced with their values. This command can be used to set the value of a substitution. This is useful if you need to display some message to the user that you can't hard-code in the templates file.
ru: Вопросы могут содержать подстановки в полях «Description» и «Choices» (хотя использование подстановок в полях «Choices» считается хаком; со временем будет разработан лучший способ). Эти подстановки выглядят как "${ключ}". Когда вопрос отображается, подстановки заменяются на нужные значения. Эта команда может быть использована для задания значения подстановки. Это полезно, если вам требуется показать какое-то сообщение пользователю, которое нельзя однозначно записать в файл templates.

note: type: Plain text
en: Do not try to use SUBST to change the default value of a question; it won't work since there is a SET command explicitly for that purpose.
ru: Не пытайтесь использовать SUBST для замены ответа по умолчанию на вопрос; это не сработает, так как для этого служит команда SET.

note: type: TP
en: B<FGET question flag>
ru: B<FGET вопрос флаг>

note: type: Plain text
en: Questions can have flags associated with them. The flags can have a value of "true" or "false". This command returns the value of a flag.
ru: Вопросы могут иметь связанные с ними флаги. Флаги могут иметь значение «true» или «false». Эта команда возвращает значение флага.

note: type: TP
en: B<FSET question flag value>
ru: B<FSET вопрос флаг значение>

note: type: Plain text
en: This sets the value of a question's flag. The value must be either "true" or "false".
ru: Устанавливает значение флага вопроса. Значение должно быть или «true» или «false».

note: type: Plain text
en: One common flag is the "seen" flag. It is normally only set if a user has already seen a question. Debconf usually only displays questions to users if they have the seen flag set to "false" (or if it is reconfiguring a package).  Sometimes you want the user to see a question again -- in these cases you can set the seen flag to false to force debconf to redisplay it.
ru: Распространённым флагом является флаг «seen». Обычно он устанавливается только если пользователь уже видел вопрос. Debconf обычно показывает только те вопросы пользователю, у которых флаг seen установлен в «false» (или если происходит процесс перенастройки пакета). Иногда вам нужно чтобы пользователь увидел вопрос снова — в этом случае вы можете установить флаг seen в значение «false», чтобы заставить debconf показать вопрос ещё раз.

note: type: TP
en: B<METAGET question field>
ru: B<METAGET вопрос поле>

note: type: Plain text
en: This returns the value of any field of a question's associated template (the Description, for example).
ru: Возвращает значение любого поля вопроса из соответствующего шаблона (например, Description).

note: type: TP
en: B<REGISTER template question>
ru: B<REGISTER шаблон вопрос>

note: type: Plain text
en: This creates a new question that is bound to a template. By default each template has an associated question with the same name. However, any number of questions can really be associated with a template, and this lets you create more such questions.
ru: Создаёт новый вопрос, который привязывается к шаблону. По умолчанию, каждый шаблон имеет соответствующий вопрос с тем же именем. Однако, с шаблоном можно связать любое число вопросов, и это позволяет создать много таких вопросов.

note: type: TP
en: B<UNREGISTER question>
ru: B<UNREGISTER вопрос>

note: type: Plain text
en: This removes a question from the database.
ru: Удаляет вопрос из базы данных.

note: type: Plain text
en: Call this in your postrm when your package is purged. It removes all of your package's questions from debconf's database.
ru: Вызывайте эту команду из сценария postrm при вычистке пакета. Она удалит все вопросы пакета из базы данных debconf.

note: type: TP
en: B<X_LOADTEMPLATEFILE /path/to/templates [owner]>
ru: B<X_LOADTEMPLATEFILE /путь/к/templates [владелец]>

note: type: Plain text
en: This extension loads the specified template file into debconf's database.  The owner defaults to the package that is being configured with debconf.
ru: Это расширение загружает указанный файл template в базу данных debconf. По умолчанию, владельцем считается пакет, который в данный момент настраивается debconf.

note: type: Plain text
en: Here is a simple example of the debconf protocol in action.
ru: Вот простой пример протокола debconf в действии.

note: type: Plain text
en:   INPUT medium debconf/frontend
      30 question skipped
      FSET debconf/frontend seen false
      0 false
      INPUT high debconf/frontend
      0 question will be asked
      GO
      [ Here debconf displays a question to the user. ]
      0 ok
      GET no/such/question
      10 no/such/question doesn't exist
      GET debconf/frontend
      0 Dialog
ru:   INPUT medium debconf/frontend
      30 question skipped
      FSET debconf/frontend seen false
      0 false
      INPUT high debconf/frontend
      0 question will be asked
      GO
      [ Здесь debconf показывает вопрос пользователю. ]
      0 ok
      GET no/such/question
      10 no/such/question doesn't exist
      GET debconf/frontend
      0 Dialog

note: type: SH
en: LIBRARIES
ru: БИБЛИОТЕКИ

note: type: Plain text
en: Setting things up so you can talk to debconf, and speaking the debconf protocol by hand is a little too much work, so some thin libraries exist to relieve this minor drudgery.
ru: Настройка окружения для работы с debconf и общение с debconf по протоколу вручную требует слишком больших затрат, поэтому для этого существуют промежуточные библиотеки, которые освобождают человека от этой монотонной работы.

note: type: Plain text
en: For shell programming, there is the /usr/share/debconf/confmodule library, which you can source at the top of a shell script, and talk to debconf in a fairly natural way, using lower-case versions of the debconf protocol commands, that are prefixed with "db_" (ie, "db_input" and "db_go"). For details, see B<confmodule>(3)  .
ru: Для программирования на языке оболочки командной строки существует библиотека /usr/share/debconf/confmodule, которую вы можете указать в начале сценария оболочки, и общаться с debconf в довольно естественной манере, используя команды debconf протокола записанные строчными буквами, которые начинаются с «db_» (то есть, «db_input» и «db_go»). Подробней смотрите в B<confmodule>(3).

note: type: Plain text
en: Perl programmers can use the B<Debconf::Client::ConfModule>(3pm)  perl module, and python programmers can use the debconf python module.
ru: Программисты на perl могут использовать модуль B<Debconf::Client::ConfModule>(3pm), а программисты на python могут использовать модуль debconf.

note: type: Plain text
en: The rest of this manual will use the /usr/share/debconf/confmodule library in example shell scripts. Here is an example config script using that library, that just asks a question:
ru: В последующих примерах сценариев оболочки руководства будет использована библиотека /usr/share/debconf/confmodule. Вот пример сценария config, который задаёт вопрос с помощью этой библиотеки:

note: type: Plain text
en: Notice the uses of "|| true" to prevent the script from dying if debconf decides it can't display a question, or the user tries to back up. In those situations, debconf returns a non-zero exit code, and since this shell script is set -e, an untrapped exit code would make it abort.
ru: Заметим, что использование "|| true" предотвращает сценарий от завершения работы, если debconf решит, что не может показать вопрос, или когда пользователь решит вернуться к предыдущему вопросу. В таких ситуациях debconf возвращает ненулевой код возврата, и так как в сценарии оболочки указана set -e, неотловленный код выхода прервёт его работу.

note: type: Plain text
en: And here is a corresponding postinst script, that uses the user's answer to the question to see if the system should be rebooted (a rather absurd example..):
ru: А вот соответствующий сценарий postinst, который использует пользовательский ответ на вопрос, должна ли система быть перезагружена (слегка абсурдный пример..):

note: type: Plain text
en: Notice the use of the $RET variable to get at the extended return code from the GET command, which holds the user's answer to the question.
ru: Заметим, что используемая переменная $RET получает расширенный код возврата от команды GET, который содержит ответ пользователя на вопрос.

note: type: SH
en: THE POSTINST SCRIPT
ru: СЦЕНАРИЙ POSTINST

note: type: Plain text
en: The last section had an example of a postinst script that uses debconf to get the value of a question, and act on it. Here are some things to keep in mind when writing postinst scripts that use debconf:
ru: В последнем разделе был приведён пример сценария postinst, который использует debconf для получения ответа на вопрос и выполняет соответствующие действия. Есть несколько вещей о которых нужно помнить при написании сценариев postinst, использующих debconf:

note: type: Plain text
en: Avoid asking questions in the postinst. Instead, the config script should ask questions using debconf, so that pre-configuration will work.
ru: Не задавайте вопросов из сценария postinst. Вопросы должен задавать сценарий config с помощью debconf, для того чтобы работал механизм предварительной настройки.

note: type: Plain text
en: Always source /usr/share/debconf/confmodule at the top of your postinst, even if you won't be running any db_* commands in it.  This is required to make sure the config script gets a chance to run (see HACKS for details).
ru: Всегда включайте /usr/share/debconf/confmodule в самом начале сценария postinst, даже если не будет использоваться никаких команд db_*. Это нужно для того, чтобы дать шанс запуститься сценарию config (подробней смотрите в разделе ХАКИ).

note: type: Plain text
en: Avoid outputting anything to stdout in your postinst, since that can confuse debconf, and postinst should not be verbose anyway. Output to stderr is ok, if you must.
ru: Избегайте вывода чего-либо в stdout из сценария postinst, так как это debconf может неправильно понять и вообще, сценарий postinst не должен быть слишком разговорчивым. Если очень нужно — выводите в stderr.

note: type: Plain text
en: If your postinst launches a daemon, make sure you tell debconf to STOP at the end, since debconf can become a little confused about when your postinst is done otherwise.
ru: Если сценарий postinst запускается в режиме демона, убедитесь, что вы послали debconf команду STOP в конце работы, так как debconf не сможет отловить момент когда postinst закончил с ним работать.

note: type: Plain text
en: Make your postinst script accept a first parameter of "reconfigure". It can treat it just like "configure". This will be used in a later version of debconf to let postinsts know when they are reconfigured.
ru: Пишите сценарий postinst так, чтобы он принимал первым параметром «reconfigure». Он может трактовать его как «configure». Это будет использовано в следующих версиях debconf, чтобы указать сценариям postinst когда они должны выполнять перенастройку.

note: type: SH
en: OTHER SCRIPTS
ru: ДРУГИЕ СЦЕНАРИИ

note: type: Plain text
en: Besides the config script and postinst, you can use debconf in any of the other maintainer scripts. Most commonly, you'll be using debconf in your postrm, to call the PURGE command when your package is purged, to clean out its entries in the debconf database. (This is automatically set up for you by B<dh_installdebconf>(1)B<,> by the way.)
ru: Кроме сценариев config и postinst, вы можете использовать debconf в любом сценарии сопровождения пакета. Наиболее часто вы будете использовать debconf в сценарии postrm, чтобы вызвать команду PURGE при удалении пакета для удаления всех записей о пакете из базы данных debconf (кстати, это настраивается автоматически с помощью B<dh_installdebconf>(1)).

note: type: Plain text
en: A more involved use of debconf would be if you want to use it in the postrm when your package is purged, to ask a question about deleting something. Or maybe you find you need to use it in the preinst or prerm for some reason. All of these uses will work, though they'll probably involve asking questions and acting on the answers in the same program, rather than separating the two activities as is done in the config and postinst scripts.
ru: Также debconf может быть использован в сценарии postrm при вычистке пакета чтобы задать вопрос об удалении чего-либо. Или может быть по какой-то причине вам может потребоваться использовать его в preinst или prerm. Везде он будет работать, хотя это вероятно приведёт к выдаче одинаковых вопросов и реакции на ответы в программе, а не к двум разным действиям, как это происходит со сценариями config и postinst.

note: type: Plain text
en: Note that if your package's sole use of debconf is in the postrm, you should make your package's postinst source /usr/share/debconf/confmodule, to give debconf a chance to load up your templates file into its database. Then the templates will be available when your package is being purged.
ru: Заметим, что если ваш пакет использует debconf только в сценарии postrm, вы должны добавить вызов /usr/share/debconf/confmodule в начало сценария postinst, чтобы дать debconf шанс загрузить файл templates в свою базу данных. Затем templates будет доступен во время вычистке пакета.

note: type: Plain text
en: You can also use debconf in other, standalone programs. The issue to watch out for here is that debconf is not intended to be, and must not be used as a registry. This is unix after all, and programs are configured by files in /etc, not by some nebulous debconf database (that is only a cache anyway and might get blown away). So think long and hard before using debconf in a standalone program.
ru: Также вы можете использовать debconf просто в работе программ. Но не забывайте, что debconf не предназначен для этого, и не должен использоваться как своеобразный реестр. Это всё-таки unix, и настройки программ хранятся в файлах в каталоге /etc, а не в какой-то мутной базе данных debconf (которая в конечном счёте просто кэш и может сломаться). Так что тридцать раз подумайте перед тем как использовать debconf в простых программах.

note: type: Plain text
en: There are times when it can make sense, as in the apt-setup program which uses debconf to prompt the user in a manner consistent with the rest of the debian install process, and immediately acts on their answers to set up apt's sources.list.
ru: Есть ситуации когда это имеет смысл, например в программе apt-setup, которая использует debconf для того чтобы пользователь завершил процесс установки debian в похожем интерфейсе, и сразу же применяет эти ответы для настройки файла sources.list программы apt.

note: type: SH
en: LOCALIZATION
ru: ЛОКАЛИЗАЦИЯ

note: type: Plain text
en: Debconf supports localization of templates files. This is accomplished by adding more fields, with translated text in them. Any of the fields can be translated. For example, you might want to translate the description into Spanish. Just make a field named 'Description-es' that holds the translation. If a translated field is not available, debconf falls back to the normal English field.
ru: Debconf поддерживает локализацию файлов templates. Это достигается добавлением дополнительных полей с переведённым текстом. Любые поля можно переводить. Например, есть желание перевести описание на испанский. Просто создайте поле с именем «Description-es», в котором есть перевод. Если переведённое поле недоступно, debconf использует обычный английский вариант.

note: type: Plain text
en: Besides the 'Description' field, you should translate the 'Choices' field of a select or multiselect template. Be sure to list the translated choices in the same order as they appear in the main 'Choices' field. You do not need to translate the 'Default' field of a select or multiselect question, and the value of the question will be automatically returned in English.
ru: Помимо поля «Description», вы можете перевести поле «Choices» из шаблона select или multiselect. Убедитесь, что переведённые значения в списке расположены в том же порядке что и в основном поле «Choices». Вам не нужно переводить поле «Default» из вопроса select или multiselect, ответ на вопрос будет автоматически возвращён на английский.

note: type: Plain text
en: You will find it easier to manage translations if you keep them in separate files; one file per translation. In the past, the B<debconf-getlang>(1)  and B<debconf-mergetemplate>(1)  programs were used to manage debian/template.ll files. This has been superseded by the B<po-debconf>(7)  package, which lets you deal with debconf translations in .po files, just like any other translations. Your translators will thank you for using this new improved mechanism.
ru: Вы обнаружите, что для облегчения управления переводами лучше хранить их в отдельных файлах; один файл на перевод. Раньше для управления файлами debian/template.ll использовались программы B<debconf-getlang>(1) и B<debconf-mergetemplate>(1). Теперь эту функцию выполняет пакет B<po-debconf>(7), который позволяет работать с переводами debconf в .po файлах как с любыми другими переводами. Ваши переводчики будут благодарны вам за использование этого нового усовершенствованного механизма.

note: type: Plain text
en: For the details on po-debconf, see its man page. If you're using debhelper, converting to po-debconf is as simple as running the B<debconf-gettextize>(1)  command once, and adding a Build-Dependency on po-debconf and on debhelper (E<gt>= 4.1.13).
ru: Подробней о po-debconf смотрите в его справочной странице. Если вы используете debhelper, переведите его в po-debconf просто запустив один раз команду B<debconf-gettextize>(1) и добавьте зависимость в Build-Dependency от po-debconf и от debhelper (E<gt>= 4.1.13).

note: type: SH
en: PUTTING IT ALL TOGETHER
ru: СОБЕРЁМ ВСЁ ВМЕСТЕ

note: type: Plain text
en: So you have a config script, a templates file, a postinst script that uses debconf, and so on. Putting these pieces together into a debian package isn't hard. You can do it by hand, or can use B<dh_installdebconf>(1)  which will merge your translated templates, copy the files into the right places for you, and can even generate the call to PURGE that should go in your postrm script. Make sure that your package depends on debconf (E<gt>= 0.5), since earlier versions were not compatible with everything described in this manual. And you're done.
ru: Итак, у вас есть сценарий config, файл templates, сценарий postinst, использующие debconf и так далее. Поместить все эти части в пакет debian несложно. Вы можете сделать это вручную или с помощью B<dh_installdebconf>(1), которая объединяет переведённые шаблоны, копирует файлы в нужные места, и даже генерирует вызов PURGE, который должен быть в сценарии postrm. Убедитесь, что ваш пакет зависит от debconf (E<gt>= 0.5), так как более ранние версии несовместимы с всем описанным в руководстве. Всё.

note: type: Plain text
en: Well, except for testing, debugging, and actually using debconf for more interesting things than asking a few basic questions. For that, read on..
ru: Да, за исключением тестирования, отладки и реального использования debconf для более интересных вещей чем простое задание вопросов. Об этом читайте далее..

note: type: SH
en: DEBUGGING
ru: ОТЛАДКА

note: type: Plain text
en: So you have a package that's supposed to use debconf, but it doesn't quite work. Maybe debconf is just not asking that question you set up. Or maybe something weirder is happening; it spins forever in some kind of loop, or worse. Luckily, debconf has plenty of debugging facilities.
ru: Итак, у вас есть пакет, который предположительно использует debconf, но он не совсем работает. Может быть debconf не только задаёт вопросы при настройке. Или может быть что-то странное случается; он крутится в каком-то вечном цикле или хуже. К счастью, debconf обладает множеством средств отладки.

note: type: Plain text
en: The first thing to reach for is the DEBCONF_DEBUG environment variable.  If you set and export DEBCONF_DEBUG=developer, debconf will output to stderr a dump of the debconf protocol as your program runs. It'll look something like this -- the typo is made clear:
ru: Наипервейшая вещь — это переменная окружения DEBCONF_DEBUG. Если вы сделаете export DEBCONF_DEBUG=developer, то debconf будет выводить в stderr дамп протокола debconf при работе. Это выглядит как-то так(сразу видно опечатку):

note: type: Plain text
en: It's rather useful to use debconf's readline frontend when you're debugging (in the author's opinion), as the questions don't get in the way, and all the debugging output is easily preserved and logged.
ru: Для отладки довольно полезно использовать интерфейс debconf readline(по мнению автора), поскольку вопросы не мешают и весь отладочный вывод легко сохранить.

note: type: Plain text
en: If this environment variable is set to 'true', the frontend will display the values in Choices-C fields (if present) of select and multiselect templates rather than the descriptive values.
ru: Если значение данной переменной окружения равно «true», то интерфейсная программа будет показывать значения шаблонов Choices-C (если есть) выбора и множественного выбора, вместо описательных значений.

note: type: Plain text
en: Another useful tool is the B<debconf-communicate>(1)  program. Fire it up and you can speak the raw debconf protocol to debconf, interactively. This is a great way to try stuff out on the fly.
ru: Другим полезным инструментом является программа B<debconf-communicate>(1). Просто запустите её и вы сможете интерактивно вводить команды протокола debconf непосредственно в debconf. Это отличный способ попробовать команды на лету.

note: type: Plain text
en: If a user is reporting a problem, B<debconf-show>(1)  can be used to dump out all the questions owned by your package, displaying their values and whether the user has seen them.
ru: Если пользователь сообщил о проблеме, можно использовать B<debconf-show>(1), чтобы скопировать все вопросы пакета, показать их ответы и узнать какие из них видел пользователь.

note: type: Plain text
en: To avoid the often tedious build/install/debug cycle, it can be useful to load up your templates with B<debconf-loadtemplate>(1)  and run your config script by hand with the B<debconf>(1)  command. However, you still have to do that as root, right? Not so good.  And ideally you'd like to be able to see what a fresh installation of your package looks like, with a clean debconf database.
ru: Чтобы избежать утомительного цикла сборка/установка/отладка, можно загрузить файл templates с помощью B<debconf-loadtemplate>(1) и запустить сценарий config вручную с помощью команды B<debconf>(1). Однако, вам по прежнему требуются права суперпользователя? Не очень здорово. И в идеале вы хотели бы увидеть как проходит новая установка, с чистой базой данных debconf.

note: type: Plain text
en: It turns out that if you set up a ~/.debconfrc file for a normal user, pointing at a personal config.dat and template.dat for the user, you can load up templates and run config scripts all you like, without any root access. If you want to start over with a clean database, just blow away the *.dat files.
ru: Оказывается, если вы настроите файл ~/.debconfrc для обычного пользователя, указав в нём личный config.dat и template.dat, то сможете загружать файлы templates и запускать сценарий config как хочется, без полномочий суперпользователя. Если нужно ещё раз запуститься с чистой базой данных, просто удалите файлы *.dat.

note: type: Plain text
en: For details about setting this up, see B<debconf.conf>(5)B<,> and note that /etc/debconf.conf makes a good template for a personal ~/.debconfrc file.
ru: Подробности настройки смотрите в B<debconf.conf>(5)B<,> и заметим, что файл /etc/debconf.conf отлично подойдёт как шаблон для личного файла ~/.debconfrc.

note: type: SH
en: ADVANCED PROGRAMMING WITH DEBCONF
ru: УГЛУБЛЁННОЕ ПРОГРАММИРОВАНИЕ С DEBCONF

note: type: SS
en: Config file handling
ru: Работа с файлами настройки

note: type: Plain text
en: Many of you seem to want to use debconf to help manage config files that are part of your package. Perhaps there is no good default to ship in a conffile, and so you want to use debconf to prompt the user, and write out a config file based on their answers. That seems easy enough to do, but then you consider upgrades, and what to do when someone modifies the config file you generate, and dpkg-reconfigure, and ...
ru: Многие из вас хотели бы использовать debconf для управления файлами настройки пакета. Возможно в файлах настройки недостаточно настроек по умолчанию и поэтому вы бы хотели использовать debconf для опроса пользователя и основываясь на его ответах создавать файл настройки. Кажется, что этого легко достичь, но когда вы задумаетесь об обновлении, или когда кто-то ещё изменит файл настройки, созданный вами и про dpkg-reconfigure и ...

note: type: Plain text
en: There are a lot of ways to do this, and most of them are wrong, and will often earn you annoyed bug reports. Here is one right way to do it. It assumes that your config file is really just a series of shell variables being set, with comments in between, and so you can just source the file to "load" it.  If you have a more complicated format, reading (and writing) it becomes a bit trickier.
ru: Есть много способов сделать это и большинство из них неправильные, а вы будете получать раздражающие отчёты об ошибках. Есть один правильный путь достижения этого. В нём предполагается, что ваш файл настройки состоит из простого набора устанавливаемых переменных оболочки с комментариями, и поэтому вы можете просто выполнить файл для его «загрузки». Если у вас более сложный формат, чтение (и запись) становятся более сложными.

note: type: Plain text
en: Your config script will look something like this:
ru: Ваш сценарий config будет выглядеть так:

note: type: Plain text
en:  # Load config file, if it exists.
     if [ -e $CONFIGFILE ]; then
     	. $CONFIGFILE || true
ru:  # Загрузить файл настройки, если он существует.
     if [ -e $CONFIGFILE ]; then
     	. $CONFIGFILE || true

note: type: Plain text
en:  	# Store values from config file into
     	# debconf db.
     	db_set mypackage/foo "$FOO"
     	db_set mypackage/bar "$BAR"
     fi
ru:  	# Сохранить значения из файла настройки в
     	# базу данных debconf.
     	db_set mypackage/foo "$FOO"
     	db_set mypackage/bar "$BAR"
     fi

note: type: Plain text
en:  # Ask questions.
     db_input medium mypackage/foo || true
     db_input medium mypackage/bar || true
     db_go || true
ru:  # Задать вопросы.
     db_input medium mypackage/foo || true
     db_input medium mypackage/bar || true
     db_go || true

note: type: Plain text
en: And the postinst will look something like this:
ru: А сценарий postinst будет выглядеть так:

note: type: Plain text
en:  # Generate config file, if it doesn't exist.
     # An alternative is to copy in a template
     # file from elsewhere.
     if [ ! -e $CONFIGFILE ]; then
     	echo "# Config file for my package" E<gt> $CONFIGFILE
     	echo "FOO=" E<gt>E<gt> $CONFIGFILE
     	echo "BAR=" E<gt>E<gt> $CONFIGFILE
     fi
ru:  # Сгенерировать файл настройки, если он не существует.
     # Или скопировать из файла шаблона
     # откуда-то ещё.
     if [ ! -e $CONFIGFILE ]; then
     	echo "# Config file for my package" E<gt> $CONFIGFILE
     	echo "FOO=" E<gt>E<gt> $CONFIGFILE
     	echo "BAR=" E<gt>E<gt> $CONFIGFILE
     fi

note: type: Plain text
en:  # Substitute in the values from the debconf db.
     # There are obvious optimizations possible here.
     # The cp before the sed ensures we do not mess up
     # the config file's ownership and permissions.
     db_get mypackage/foo
     FOO="$RET"
     db_get mypackage/bar
     BAR="$RET"
     cp -a -f $CONFIGFILE $CONFIGFILE.tmp
ru:  # Выполнить подстановку значений из базы данных debconf.
     # Здесь явно возможна оптимизация.
     # Команда cp перед sed проверяет, что мы не испортили
     # права доступа и владельца файла настройки.
     db_get mypackage/foo
     FOO="$RET"
     db_get mypackage/bar
     BAR="$RET"
     cp -a -f $CONFIGFILE $CONFIGFILE.tmp

note: type: Plain text
en:  # If the admin deleted or commented some variables but then set
     # them via debconf, (re-)add them to the conffile.
     test -z "$FOO" || grep -Eq '^ *FOO=' $CONFIGFILE || \e
     	echo "FOO=" E<gt>E<gt> $CONFIGFILE
     test -z "$BAR" || grep -Eq '^ *BAR=' $CONFIGFILE || \e
     	echo "BAR=" E<gt>E<gt> $CONFIGFILE
ru:  # Если администратор удалил или закомментировал какие-то переменные, но
     # после задал их через debconf, добавим(пересоздадим) их в файле
     # настройки.
     test -z "$FOO" || grep -Eq '^ *FOO=' $CONFIGFILE || \e
     	echo "FOO=" E<gt>E<gt> $CONFIGFILE
     test -z "$BAR" || grep -Eq '^ *BAR=' $CONFIGFILE || \e
     	echo "BAR=" E<gt>E<gt> $CONFIGFILE

note: type: Plain text
en: Consider how these two scripts handle all the cases. On fresh installs the questions are asked by the config script, and a new config file generated by the postinst. On upgrades and reconfigures, the config file is read in, and the values in it are used to change the values in the debconf database, so the admin's manual changes are not lost. The questions are asked again (and may or may not be displayed). Then the postinst substitutes the values back into the config file, leaving the rest of it unchanged.
ru: Рассмотрим как эти два сценария обрабатывают все возможные ситуации. При начальной установке сценарий config задаёт вопросы и новый файл настройки генерируется сценарием postinst. При обновлении или перенастройке файл настройки читается и его значения используются для изменения значений в базе данных debconf, поэтому значения, изменённые администратором, не теряются. Вопросы задаются снова (могут показываться, а могут и нет). Затем сценарий postinst выполняет подстановку значений обратно в файл настройки, не изменяя всего остального.

note: type: SS
en: Letting the user back up
ru: Позволить пользователю возвращаться назад

note: type: Plain text
en: Few things are more frustrating when using a system like debconf than being asked a question, and answering it, then moving on to another screen with a new question on it, and realizing that hey, you made a mistake, with that last question, and you want to go back to it, and discovering that you can't.
ru: Некоторые вещи ещё сильнее разочаровывают при использовании систем типа debconf: после заданного вопроса и ответа на него, переходишь к другому экрану с новым вопросом, и отвечая понимаешь, что совершил ошибку в последнем вопросе и хочешь вернуться обратно и обнаруживаешь, что не можешь сделать этого.

note: type: Plain text
en: Since debconf is driven by your config script, it can't jump back to a previous question on its own but with a little help from you, it can accomplish this feat. The first step is to make your config script let debconf know it is capable of handling the user pressing a back button.  You use the CAPB command to do this, passing backup as a parameter.
ru: Так как debconf управляется вашим сценарием config, он не может прыгнуть обратно на предыдущий вопрос сам, но с небольшой вашей помощью, он сможет выполнить этот подвиг. Первый шаг — в сценарии config дать понять debconf, что сценарий config способен обрабатывать нажатие кнопки назад пользователем. Для этого используйте команду CAPB, передав backup в качестве параметра.

note: type: Plain text
en: Then after each GO command, you must test to see if the user asked to back up (debconf returns a code of 30), and if so jump back to the previous question.
ru: Затем, после каждой команды GO вы должны выполнять тест, чтобы увидеть просил ли пользователь вернуться назад (debconf возвратит код 30), и, если это произошло, возвратиться к предыдущему вопросу.

note: type: Plain text
en: There are several ways to write the control structures of your program so it can jump back to previous questions when necessary. You can write goto-laden spaghetti code. Or you can create several functions and use recursion. But perhaps the cleanest and easiest way is to construct a state machine. Here is a skeleton of a state machine that you can fill out and expand.
ru: Есть несколько способов написания управляющих структур в вашей программе для возвращения к предыдущему вопросу при необходимости. Вы можете написать код, использующий кучу команд перехода goto. Или вы можете создать несколько функций и использовать рекурсию. Но возможно самым понятным и простым является создание конечного автомата. Вот скелет конечного автомата, который можно заполнить и расширить.

note: type: Plain text
en:  STATE=1
     while true; do
     	case "$STATE" in
      	1)
      		# Two unrelated questions.
     		db_input medium my/question || true
     		db_input medium my/other_question || true
     	;;
     	2)
     		# Only ask this question if the
     		# first question was answered in
     		# the affirmative.
            	db_get my/question
     		if [ "$RET" = "true" ]; then
     			db_input medium my/dep_question || true
     		fi
      	;;
     	*)
     		# The default case catches when $STATE is greater than the
     		# last implemented state, and breaks out of the loop. This
     		# requires that states be numbered consecutively from 1
     		# with no gaps, as the default case will also be entered
     		# if there is a break in the numbering
     		break # exits the enclosing "while" loop
      	;;
      	esac
ru:  STATE=1
     while true; do
     	case "$STATE" in
      	1)
      		# Два несвязных вопроса.
     		db_input medium my/question || true
     		db_input medium my/other_question || true
     	;;
     	2)
     		# Задавать этот вопрос, только если
     		# на первый был получен
     		# положительный ответ.
            	db_get my/question
     		if [ "$RET" = "true" ]; then
     			db_input medium my/dep_question || true
     		fi
      	;;
     	*)
     		# Действие по умолчанию возникает, когда $STATE больше чем последнее
     		# введённое состояние и прерывает цикл. Для
     		# этого требуется, чтобы состояния были пронумерованы последовательно с 1
     		# без перерывов, так как в этом случае возникает событие по умолчанию
     		break # выход из обёртывающего цикла "while"
      	;;
      	esac

note: type: Plain text
en:  if [ $STATE -eq 0 ]; then
     	# The user has asked to back up from the first
     	# question. This case is problematical. Regular
     	# dpkg and apt package installation isn't capable
     	# of backing up questions between packages as this
     	# is written, so this will exit leaving the package
     	# unconfigured - probably the best way to handle
     	# the situation.
     	exit 10
     fi
ru:  if [ $STATE -eq 0 ]; then
     	# Пользователь хочет выйти из первого вопроса.
     	# Это проблематичный случай. Обычная установка
     	# пакетов с помощью dpkg и apt не даёт
     	# вернуться к вопросам между пакетами как здесь написано,
     	# поэтому завершить работу, оставив пакет ненастроенным,
     	# вероятно, лучший путь обработки этой ситуации.
     	exit 10
     fi

note: type: Plain text
en: Note that if all your config script does is ask a few unrelated questions, then there is no need for the state machine. Just ask them all, and GO; debconf will do its best to present them all in one screen, and the user won't need to back up.
ru: Заметим, что если ваш сценарий config задаёт несколько несвязных между собой вопросов, то конечный автомат не нужен. Просто задайте их все и GO; debconf покажет их все на одном экране, и пользователю не нужно возвращаться назад.

note: type: SS
en: Preventing infinite loops
ru: Предотвращение бесконечных циклов

note: type: Plain text
en: One gotcha with debconf comes up if you have a loop in your config script. Suppose you're asking for input and validating it, and looping if it's not valid:
ru: Это может произойти с debconf, если в сценарии config есть цикл. Предположим, вы задаёте вопрос и проверяете ответ, и всё это в цикле пока ответ не станет правильным:

note: type: Plain text
en: This looks ok at first glance. But consider what happens if the value of foo/bar is "" when this loop is entered, and the user has their priority set high, or is using a non-interactive frontend, and so they are not really asked for input. The value of foo/bar is not changed by the db_input, and so it fails the test and loops. And loops ...
ru: На первый взгляд всё выглядит хорошо. Но посмотрим что произойдёт, если значение foo/bar будет "" в начале цикла, а пользователь установил приоритет на высокий, или использует не интерактивный интерфейс, и поэтому вопрос на самом деле задан не будет. Значение foo/bar не изменяется в db_input, и тест не проходит и повторяется. И всё зацикливается …

note: type: Plain text
en: One fix for this is to make sure that before the loop is entered, the value of foo/bar is set to something that will pass the test in the loop. So for example if the default value of foo/bar is "1", then you could RESET foo/bar just before entering the loop.
ru: Одним вариантом исправления является задание значения foo/bar перед входом в цикл. Например, если значение по умолчанию foo/bar равно «1», то вы можете выполнить RESET foo/bar перед входом в цикл.

note: type: Plain text
en: Another fix is to check the return code of the INPUT command. If it is 30 then the user is not being shown the question you asked them, and you should break out of the loop.
ru: В другом варианте можно проверить код завершения команды INPUT. Если он равен 30, то пользователю вопрос показан не был, и вы должны прервать цикл.

note: type: SS
en: Choosing among related packages
ru: Выбор из похожих пакетов

note: type: Plain text
en: Sometimes a set of related packages can be installed, and you want to prompt the user which of the set should be used by default. Examples of such sets are window managers, or ispell dictionary files.
ru: Иногда может выполняться установка похожих по функциональности пакетов, и вы хотели бы предложить пользователю выбрать пакет, который должен использоваться по умолчанию. Примером таких наборов могут быть оконные менеджеры или файлы словарей ispell.

note: type: Plain text
en: While it would be possible for each package in the set to simply prompt, "Should this package be default?", this leads to a lot of repetitive questions if several of the packages are installed. It's possible with debconf to present a list of all the packages in the set and allow the user to choose between them. Here's how.
ru: Хотя можно для каждого пакета задавать простой вопрос «Использовать этот пакет по умолчанию?», но это приведёт к большому числу повторяющихся вопросов, если устанавливается несколько пакетов. С помощью debconf возможно создать список всех пакетов и позволить пользователю сделать из него выбор. Посмотрим как это делается.

note: type: Plain text
en: Make all the packages in the set use a shared template. Something like this:
ru: Сделайте так, чтобы все пакеты в наборе использовали общий шаблон. Например:

note: type: Plain text
en:  Template: shared/window-manager
     Type: select
     Choices: ${choices}
     Description: Select the default window manager.
      Select the window manager that will be started by
      default when X starts.
ru:  Template: shared/window-manager
     Type: select
     Choices: ${choices}
     Description: Выбор оконного менеджера по умолчанию.
      Определяет выбранный оконный менеджер, который запускается
      по умолчанию при запуске X.

note: type: Plain text
en: Each package should include a copy of the template. Then it should include some code like this in its config script:
ru: Каждый пакет должен содержать копию этого шаблона. Также нужно включить код в свой сценарий config, примерно такой:

note: type: Plain text
en: A bit of an explanation is called for. By the time your config script runs, debconf has already read in all the templates for the packages that are being installed. Since the set of packages share a question, debconf records that fact in the owners field. By a strange coincidence, the format of the owners field is the same as that of the choices field (a comma and space delimited list of values).
ru: Объяснение. Во время запуска сценария config, debconf уже прочитал все шаблоны для устанавливаемых пакетов. Так как эти пакеты используют общий вопрос, debconf записывает этот факт в поле владельцев. По странному совпадению формат поля владельцев такой же как и у поля выбора (запятая и пробел являются разделителями в списке значений).

note: type: Plain text
en: The METAGET command can be used to get the list of owners and the list of choices. If they are different, then a new package has been installed. So use the SUBST command to change the list of choices to be the same as the list of owners, and ask the question.
ru: Команда METAGET может использоваться для получения списка владельцев и списка выбора. Если они различаются, то это значит, что был установлен новый пакет. Поэтому используется команда SUBST для замены списка выбора на список владельцев и задаётся вопрос.

note: type: Plain text
en: When a package is removed, you probably want to see if that package is the currently selected choice, and if so, prompt the user to select a different package to replace it.
ru: При удалении пакета вы вероятно хотите проверить не является этот пакет выбранным в списке, и если так, то попросить пользователя выбрать другой пакет по умолчанию на замену.

note: type: Plain text
en: This can be accomplished by adding something like this to the prerm scripts of all related packages (replacing E<lt>packageE<gt> with the package name):
ru: Это можно выполнить добавив следующее в сценарии prerm всех похожих пакетов (заменив E<lt>packageE<gt> именем пакета):

note: type: Plain text
en:  if [ -e /usr/share/debconf/confmodule ]; then
     	. /usr/share/debconf/confmodule
     	# I no longer claim this question.
     	db_unregister shared/window-manager
ru:  if [ -e /usr/share/debconf/confmodule ]; then
     	. /usr/share/debconf/confmodule
     	# больше не задавать этот вопрос.
     	db_unregister shared/window-manager

note: type: Plain text
en:  	# See if the shared question still exists.
     	if db_get shared/window-manager; then
     		db_metaget shared/window-manager owners
     		db_subst shared/window-manager choices $RET
     		db_metaget shared/window-manager value
     		if [ "E<lt>packageE<gt>" = "$RET" ] ; then
     			db_fset shared/window-manager seen false
     			db_input high shared/window-manager || true
     			db_go || true
     		fi
ru:  	# Проверить, что общий вопрос ещё существует.
     	if db_get shared/window-manager; then
     		db_metaget shared/window-manager owners
     		db_subst shared/window-manager choices $RET
     		db_metaget shared/window-manager value
     		if [ "E<lt>packageE<gt>" = "$RET" ] ; then
     			db_fset shared/window-manager seen false
     			db_input high shared/window-manager || true
     			db_go || true
     		fi

note: type: Plain text
en:  		# Now do whatever the postinst script did
     		# to update the window manager symlink.
     	fi
     fi
ru:  		# Теперь сделать тоже что делает сценарий postinst
     		# для обновления символической ссылки оконного менеджера.
     	fi
     fi

note: type: SH
en: HACKS
ru: ХАКИ

note: type: Plain text
en: Debconf is currently not fully integrated into dpkg (but I want to change this in the future), and so some messy hacks are currently called for.
ru: В настоящее время debconf не полностью интегрирован с dpkg (но я хочу изменить это в будущем), и поэтому сейчас вызывается для некоторых неприятных хаков.

note: type: Plain text
en: The worst of these involves getting the config script to run. The way that works now is the config script will be run when the package is pre-configured. Then, when the postinst script runs, it starts up debconf again. Debconf notices it is being used by the postinst script, and so it goes off and runs the config script. This can only work if your postinst loads up one of the debconf libraries though, so postinsts always have to take care to do that. We hope to address this later by adding explicit support to dpkg for debconf. The B<debconf>(1)  program is a step in this direction.
ru: Худшие из них требуют запуска сценария config. Для этого в настоящий момент приходится запускать сценарий config во время предварительной настройки пакета. Также, при запуске сценария postinst, снова запускается debconf. Debconf понимает, что запускается из сценария postinst и поэтому останавливается и запускает сценарий config. Это работает, только если ваш postinst загружает хотя бы одну из библиотек debconf, поэтому postinst всегда делает это. Мы надеемся вернуться к этому позже добавив явную поддержку в dpkg для debconf. Программа B<debconf>(1) — это шаг в данном направлении.

note: type: Plain text
en: A related hack is getting debconf running when a config script, postinst, or other program that uses it starts up. After all, they expect to be able to talk to debconf right away. The way this is accomplished for now is that when such a script loads a debconf library (like /usr/share/debconf/confmodule), and debconf is not already running, it is started up, and a new copy of the script is re-execed. The only noticeable result is that you need to put the line that loads a debconf library at the very top of the script, or weird things will happen. We hope to address this later by changing how debconf is invoked, and turning it into something more like a transient daemon.
ru: Похожий хак — запуск debconf когда сценарии config, postinst или другие программы используют его при запуске. Не смотря ни на что, они ожидают что будут сразу общаться с debconf. Сейчас это выполняется, так что когда такой сценарий загружает библиотеку debconf (типа /usr/share/debconf/confmodule), а debconf ещё не запущен, он запускается, и новая копия сценария выполняется заново. Заметный результат в том, что вам нужно указывать строку загрузки библиотеки debconf как можно ближе к началу сценария, или могут случиться непонятные вещи. Мы надеемся вернуться к этой проблеме позже изменив вызов debconf, и превратить его в что-то подобное отдельного демона.

note: type: Plain text
en: It's rather hackish how debconf figures out what templates files to load, and when it loads them. When the config, preinst, and postinst scripts invoke debconf, it will automatically figure out where the templates file is, and load it. Standalone programs that use debconf will cause debconf to look for templates files in /usr/share/debconf/templates/progname.templates.  And if a postrm wants to use debconf at purge time, the templates won't be available unless debconf had a chance to load them in its postinst. This is messy, but rather unavoidable. In the future some of these programs may be able to use debconf-loadtemplate by hand though.
ru: Сравнимо с хаком и то, как debconf выясняет какие файл шаблонов загружены и когда их загружать. Когда сценарии config, preinst и postinst вызывают debconf, он автоматически выясняет где файл templates и загружает его. Отдельные программы, использующие debconf, заставляют debconf искать файл шаблонов в /usr/share/debconf/templates/имя_программы.templates. И если postrm хочет использовать debconf при вычистке, шаблоны будут недоступны если только у debconf не будет шанса загрузить их в postinst. Не неприятно, но неизбежно. Хотя в будущем некоторые из таких программ смогут использовать debconf-loadtemplate вручную.

note: type: Plain text
en: /usr/share/debconf/confmodule's historic behavior of playing with file descriptors and setting up a fd #3 that talks to debconf, can cause all sorts of trouble when a postinst runs a daemon, since the daemon ends up talking to debconf, and debconf can't figure out when the script terminates. The STOP command can work around this. In the future, we are considering making debconf communication happen over a socket or some other mechanism than stdio.
ru: Исторически сложившееся поведение /usr/share/debconf/confmodule играть с файловыми дескрипторами и устанавливать fd #3 через который происходит общение с debconf, может вызывать весь набор проблем при запуске из postinst демона, так как демон завершает общение с debconf, а debconf не может определить когда завершился сценарий. Команда STOP помогает обойти это. В будущем, мы рассмотрим создание связи с debconf через сокет или другой механизм отличный от stdio.

note: type: Plain text
en: Debconf sets DEBCONF_RECONFIGURE=1 before running postinst scripts, so a postinst script that needs to avoid some expensive operation when reconfigured can look at that variable. This is a hack because the right thing would be to pass $1 = "reconfigure", but doing so without breaking all the postinsts that use debconf is difficult. The migration plan away from this hack is to encourage people to write postinsts that accept "reconfigure", and once they all do, begin passing that parameter.
ru: Debconf устанавливает DEBCONF_RECONFIGURE=1 перед запуском сценариев postinst, поэтому сценарий postinst, которому требуется избежать некоторой затратной операции перед перенастройкой, может проверить наличие этой переменной. Это хак, так как правильно сделать это — передать $1 = «reconfigure», но этого делать нельзя, так как будут работать неправильно все сценарии postinst, использующие debconf. Разработан план перехода на приём сценариями postinst значения «reconfigure», и как только все сделают это, начнётся передача этого параметра.

note: type: Plain text
en: B<debconf>(7)  is the debconf user's guide.
ru: В B<debconf>(7) содержится руководство пользователя debconf.

note: type: Plain text
en: The debconf specification in debian policy is the canonical definition of the debconf protocol. /usr/share/doc/debian-policy/debconf_specification.txt.gz
ru: Описание debconf в политике debian является спецификацией протокола debconf. /usr/share/doc/debian-policy/debconf_specification.txt.gz

note: type: Plain text
en: B<debconf.conf>(5)  has much useful information, including some info about the backend database.
ru: B<debconf.conf>(5) содержит много полезной информации, включая описание среды хранения базы данных.
