ответы на вопросы по установке пакетов с помощью debconf

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

sudo apt-get install foo

Так что что-то вроде этого было бы неприемлемо:

DEBIAN_FRONTEND=noninteractive apt-get install -y foo

Также обратите внимание, что foo устанавливается при новой установке Ubuntu.

Первое, что я попробовал, было это (в моем предварительном сценарии):

echo "postfix postfix/mailname string your.hostname.com" | debconf-set-selections
echo "postfix postfix/main_mailer_type string 'Internet Site'" | debconf-set-selections

Но это не сработало. Вопросы все же появились при установке.

Затем я попробовал это:

echo "postfix postfix/mailname string your.hostname.com" | debconf-set-selections
echo "postfix postfix/main_mailer_type string 'Internet Site'" | debconf-set-selections
DEBIAN_FRONTEND=noninteractive apt-get install -y postfix

И это:

echo "postfix postfix/mailname string your.hostname.com" | debconf-set-selections
echo "postfix postfix/main_mailer_type string 'Internet Site'" | debconf-set-selections
DEBIAN_FRONTEND=noninteractive apt-get install -y postfix << _EOT
y
EOT

И тогда я подумал:

Что, если бы debconf-utils были помещены в Pre-Depends? Это не сработало.

Однако, если я делаю следующее (из командной строки, а не из скрипта preinst), то установка работает без вопросов:

sudo apt-get install debconf-utils
echo "postfix postfix/mailname string your.hostname.com" | debconf-set-selections
echo "postfix postfix/main_mailer_type string 'Internet Site'" | debconf-set-selections
sudo apt-get install foo

Однако это неприемлемо для требований, которые мне дали.

Так что теперь я застрял. Если кто-нибудь может понять, что я делаю неправильно, это будет очень признательно, поскольку я некоторое время искал ответ.


person wc250    schedule 06.07.2015    source источник


Ответы (1)


Это кажется странным, вам не нужно устанавливать debconf-utils для установки данных для dpkg.

Если вы хотите запретить диалоговые окна, попробуйте использовать dpkg опции:
--force-confdef(force to keep default option without prompting)
--force-confold (force to keep old conf files)

В конце будет примерно так:
echo "postfix postfix/mailname string your.hostname.com" | debconf-set-selections
echo "postfix postfix/main_mailer_type string 'Internet Site'" | debconf-set-selections
sudo apt-get install -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" foo
Надеюсь, поможет. Если нет, пожалуйста, сообщите нам здесь.

person antonbormotov    schedule 07.07.2015
comment
Я добавил это в свой preinst (используя постфикс вместо foo). Диалоговые окна по-прежнему появлялись. - person wc250; 07.07.2015
comment
Я даже пробовал что-то еще в сценарии preinst: 1) источник модуля debconf 2) использование db_set postfix/mailname your.hostname.com Это тоже не сработало. - person wc250; 07.07.2015
comment
Я понимаю. Итак, не могли бы вы объяснить, почему последний приведенный вами пример не соответствует требованиям? - person antonbormotov; 07.07.2015