Передача відповідей за замовчуванням на запитання щодо встановлення пакета apt-get?


27

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

Оскільки я, ймовірно, передаватиму цей сценарій колегам, які навряд чи прочитають підказки, і моє бажання просто запустити його та піти, я хотів би знати, як передавати серію відповідей за замовчуванням / значення для його використання. Це може включати імена користувачів / паролі / інші динамічні значення, передані в командному рядку.

-

Я усвідомлюю, що наявність паролів у скрипті є проблемою безпеки, але я готовий проігнорувати це, особливо в більш загальному сенсі встановлення пакетів, що відповідь на це означатиме.

Відповіді:


44

Скористайтеся попередньою конфігурацією debconf.

Зробіть пробну установку, щоб отримати потрібні значення:

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

..і встановити кореневий пароль, коли буде запропоновано під час встановлення.

Потім ви можете перевірити, як виглядають налаштування 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 не приймає попередньо посіяний пароль MySQL root, це працює чудово!
Тарка

1
просто цікаво, чи є можливість отримати можливі параметри debconf з пакетної системи без встановлення пакунків?
stefan.at.wpf

17
export DEBIAN_FRONTEND=noninteractive
apt-get -q -y install _packages_

Чи є у вас посилання на те, що читається $ DEBIAN_FRONTEND?
Андрій

Це було частиною Debian так довго, що я думаю, що тільки Ian міг реально сказати вам, коли він був доданий.
Майкл Хемптон

1
@Andrew Це читає debconf , саме це насправді стосується питань.
mgorven

@mgorven А-а, я раніше не заглиблювався набагато глибше, ніж dpkg.
Андрій

AFAIK, це рішення дозволяє лише пропустити підказку та прийняти за замовчуванням всі відповіді. Якщо ви хочете встановити відповідь за замовчуванням, вам слід скористатися іншим рішенням, наприклад debconf-set-selectionsметодом.
MestreLion

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.