При инсталляции, переустановке или удалении пакетов может возникнуть необходимость внесения новых или изменения сохраненных ответов в базе debconf.

Ниже приведены примеры использования некоторых команд. Подробную информацию о команде можно получить из справки(man).

Для работы с базой ответов debconf нужно вначале установить пакет debconf-utils.

sudo aptitude install debconf-utils

Основные команды:

debconf-get-selections

Команда выводит содержимое базы данных debconf. Примеры:

sasha@ecss1:~/ssw1_3.14$ sudo debconf-get-selections | grep ecss-web-conf
ecss-web-conf	web-conf/mysql_db_port	string	3306
ecss-web-conf	web-conf/http_terminal_host	string	127.0.0.1
ecss-web-conf	web-conf/http_terminal_port	string	9999
ecss-web-conf	web-conf/mysql_db_host	string	127.0.0.1
ecss-web-conf	web-conf/docker_install	boolean	false
sasha@ecss1:~/ssw1_3.14$ sudo debconf-get-selections | grep mysql_ip
ecss-mysql	ecss-mysql/mysql_ip_pattern	string	192.168.%

debconf-set-selections

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

Примеры:

debconf-set-selections dc-answer.txt
echo "ecss-node ecss-configuration/ntp_server string 192.168.1.21" | sudo debconf-set-selections

debconf-communicate

Команда позволяет обращаться к debconf из командной строки. В необязательном параметре «пакет» указывается название пакета от имени которого производится обращение к debconf.

debconf-communicate читает команды из стандартного входного потока (stdin), которые задаются формате протокола команд debconf. Описание допустимых команд и их использование можно найти в спецификации к debconf.

Пример использования для очистки базы от сохраненных ответов:

for pk in $(sudo debconf-get-selections | grep mysql | awk '{print $1}' | grep mysql | sort | uniq); do sudo echo PURGE | sudo debconf-communicate $pk; done

Получение значения сохраненного ответа:

sasha@ecss1:~/ssw1_3.14$ echo get ecss-configuration/ntp_server_external | sudo debconf-communicate
0 ntp.ubuntu.com

debconf-show

Команда позволяет выполнить запрос к базе данных debconf различными способами.

Наиболее распространённый запрос — «debconf-show имя-пакета», по которому выдаются все элементы базы данных debconf принадлежащие этому пакету и их текущие значения. Вопросы, которые были уже заданы, отмечены символом «*».

Пример:

sasha@ecss1:~/ssw1_3.14$ sudo debconf-show ecss-mysql
* ecss-mysql/mysql_params_password: (password omitted)
  ecss-mysql/replica_password: (password omitted)
  ecss-mysql/delete_mysql_tc: false
  ecss-mysql/delete_mysql_ab: false
  ecss-mysql/snmp_port: 162
  ecss-mysql/mediator_host_ip: 127.0.0.1
  ecss-mysql/local_host_ip:
  ecss-mysql/remote_host_user: ssw
  ecss-mysql/delete_mysql_meet: false
  ecss-mysql/host1_ip:
  ecss-mysql/delete_mysql_wcf: false
  ecss-mysql/delete_mysql_calls: false
  ecss-mysql/delete_mysql_dialer: false
* ecss-mysql/mysql_ip_pattern: 192.168.%
  ecss-mysql/delete_mysql_audit: false
  ecss-mysql/remote_host_name: ecss2
  ecss-mysql/delete_mysql_stat: false
  ecss-mysql/host_ip_invalid_range:
  ecss-mysql/remote_host_ip:
  ecss-mysql/host2_ip:
  ecss-mysql/replica_user: replica
  ecss-mysql/delete_mysql_sub: false
  ecss-mysql/host2_user: ssw
* ecss-mysql/mysql_params_user: root
* ecss-mysql/configure_replication: false
  ecss-mysql/host2: ecss2