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ź.

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.


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_

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.