Передача ответов по умолчанию на вопросы об установке пакета apt-get?

27

Я пытаюсь написать сценарий конфигурации для новых серверов, и одним из первых шагов является установка ряда необходимых пакетов, таких как MySQL, phpMyAdmin и т. Д. apt-get installОднако, когда dpkg пытается их настроить, он запрашивает у вас несколько опций, таких как пароль root для MySQL, пароли phpMyAdmin, какой сервер использовать и т. д.

Поскольку я, скорее всего, передам этот сценарий коллегам, которые вряд ли прочитают подсказки, и мое желание просто запустить его и уйти, я хотел бы знать, как передать серию ответов «по умолчанию» / значения для этого использовать. Это может включать имена пользователей / пароли / другие динамические значения, передаваемые в командной строке.

-

Я понимаю, что наличие паролей в скрипте - это проблема безопасности, но я готов их игнорировать, особенно в более общем смысле установки пакетов, что подразумевает ответ на этот вопрос.

Тарка
источник

Ответы:

44

Используйте предварительное задание конфигурации debconf.

Выполните тестовую установку, чтобы получить нужные значения:

root@test1:~# apt-get install mysql-server

..и установить пароль root при появлении запроса во время установки.

Затем вы можете проверить, как выглядят настройки debconf для того, что вы только что установили (вам может потребоваться установить debconf-utils):

root@test1:~# debconf-get-selections | grep mysql-server
mysql-server-5.5        mysql-server/root_password_again        password
mysql-server-5.5        mysql-server/root_password      password
mysql-server-5.5        mysql-server/error_setting_password     error
mysql-server-5.5        mysql-server-5.5/postrm_remove_databases        boolean false
mysql-server-5.5        mysql-server-5.5/start_on_boot  boolean true
mysql-server-5.5        mysql-server-5.5/nis_warning    note
mysql-server-5.5        mysql-server-5.5/really_downgrade       boolean false
mysql-server-5.5        mysql-server/password_mismatch  error
mysql-server-5.5        mysql-server/no_upgrade_when_using_ndb  error

Там есть некоторый шум, но важная часть - настройки пароля.

Затем для новой установки вы можете полностью избежать запросов, предварительно установив пароль:

root@test2:~# echo "mysql-server-5.5 mysql-server/root_password_again password Som3Passw0rd" | debconf-set-selections
root@test2:~# echo "mysql-server-5.5 mysql-server/root_password password Som3Passw0rd" | debconf-set-selections
root@test2:~# apt-get install mysql-server

Никаких подсказок во время этой установки.

Шейн Мэдден
источник
10
sudo apt-get install debconf-utilsкак нужно.
Андрей
Это похоже на то, что я искал, спасибо! Я попробую в ближайшее время.
Тарка
Помимо известной ошибки, когда phpMyAdmin не принимает предварительно отобранный пароль root для MySQL, это работает отлично!
Тарка
1
просто интересно, есть ли способ получить возможные настройки debconf из системы пакетов без установки пакетов?
stefan.at.wpf
17
export DEBIAN_FRONTEND=noninteractive
apt-get -q -y install _packages_
Майкл Хэмптон
источник
У вас есть ссылка на то, что читает $ DEBIAN_FRONTEND?
Андрей
Это было частью Debian так долго, что я думаю, что только Ян действительно мог сказать вам, когда он был добавлен.
Майкл Хэмптон
1
@Andrew Это читает debconf , который на самом деле занимается вопросами.
Мгорвен
@mgorven Ааа, я не пошел намного глубже, чем dpkg раньше.
Андрей
AFAIK, это решение позволяет только пропустить приглашение и принять значение по умолчанию для всех ответов. Если вы хотите задать ответ не по умолчанию, вы должны использовать другое решение, такое как debconf-set-selectionsметод.
МестреЛион