Przekazujesz domyślne odpowiedzi na pytania dotyczące instalacji pakietu apt-get?

27

Próbuję napisać skrypt konfiguracyjny dla nowych serwerów, a jednym z pierwszych kroków jest zainstalowanie szeregu wymaganych pakietów, takich jak MySQL, phpMyAdmin itp. Przy użyciu apt-get installJednak, gdy dpkg próbuje je skonfigurować, prosi o podanie kilka opcji, takich jak hasło root MySQL, hasła phpMyAdmin, jakiego serwera użyć itp.

Ponieważ prawdopodobnie przekażę ten skrypt współpracownikom, którzy raczej nie przeczytają podpowiedzi, i pragnę po prostu go uruchomić i odejść, chciałbym wiedzieć, jak przekazać serię „domyślnych” odpowiedzi / wartości do użycia. Może to obejmować nazwy użytkownika / hasła / inne wartości dynamiczne przekazywane w wierszu polecenia.

-

Zdaję sobie sprawę, że posiadanie haseł w skrypcie jest kwestią bezpieczeństwa, ale jestem gotów je zignorować, szczególnie w bardziej ogólnym sensie instalowania pakietów, co sugeruje odpowiedź.

Tarka
źródło

Odpowiedzi:

44

Skorzystaj z wstępnej konfiguracji konfiguracji debconf.

Wykonaj instalację testową, aby uzyskać żądane wartości:

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

.. i ustaw hasło roota, gdy pojawi się monit podczas instalacji.

Następnie możesz sprawdzić, jak wyglądają ustawienia debconf dla tego, co właśnie zainstalowałeś (może być konieczne zainstalowanie 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

Jest tam trochę hałasu, ale ważną częścią są ustawienia hasła.

Następnie, aby uzyskać nową instalację, możesz całkowicie uniknąć monitów, ustawiając wcześniej hasło:

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

Brak monitów podczas instalacji.

Shane Madden
źródło
10
sudo apt-get install debconf-utilsjako niezbędne.
Andrew
To wygląda dokładnie tak, jak szukałem, dzięki! Niedługo spróbuję.
Tarka,
Poza znanym błędem polegającym na tym, że phpMyAdmin nie akceptuje wstępnie zaszczepionego hasła root MySQL, działa to doskonale!
Tarka,
1
Zastanawiam się, czy istnieje sposób na uzyskanie możliwych ustawień debconf z systemu pakietów bez instalowania pakietów?
stefan.at.wpf
17
export DEBIAN_FRONTEND=noninteractive
apt-get -q -y install _packages_
Michael Hampton
źródło
Czy masz odniesienie do tego, co czyta $ DEBIAN_FRONTEND?
Andrew
To było częścią Debiana od tak dawna, że ​​myślę, że tylko Ian mógł powiedzieć ci, kiedy został dodany.
Michael Hampton
1
@Andrew Jest czytany przez debconf , co faktycznie zajmuje się pytaniami.
mgorven
@mgorven Ahh, wcześniej nie zszedłem głębiej niż dpkg.
Andrew
AFAIK, to rozwiązanie pozwala jedynie pominąć monit i zaakceptować domyślne dla wszystkich odpowiedzi. Jeśli chcesz ustawić odpowiedź inną niż domyślna, musisz użyć innego rozwiązania, takiego jak debconf-set-selectionsmetoda.
MestreLion