Chciałbym skonfigurować pakiet ubuntu poprzez dpkg-rekonfiguruj ze wszystkimi wartościami dostarczonymi w trybie nieinteraktywnym (w skrypcie).
W rzeczywistości moim przypadkiem jest konfiguracja firebirda ( http://www.firebirdsql.org/manual/ubusetup.html ), która przy użyciu polecenia:
sudo dpkg-reconfigure firebird2.5-superclassic -freadline
prosi mnie o 2 wartości, w których odpowiedzi brzmiałyby „Y” i „newpwd”.
Przykładowe dane wyjściowe wyglądają następująco:
sudo dpkg-reconfigure firebird2.5-superclassic -freadline
* Firebird 2.5 superclassic server not running
Configuring firebird2.5-superclassic
------------------------------------
Accept if you want Firebird server to start automatically.
If you only need the Firebird client and there are no databases that will be served by this host, decline.
Enable Firebird server? Y
Password for firebird 2.5
-------------------------
Firebird has a special user named SYSDBA, which is the user that has access to all databases. SYSDBA can also create new databases and users. Because of this, it
is necessary to secure SYSDBA with a password.
The password is stored in /etc/firebird/2.5/SYSDBA.password (readable only by root). You may modify it there (don't forget to update the security database too,
using the gsec utility), or you may use dpkg-reconfigure to update both.
To keep your existing password, leave this blank.
Password for SYSDBA:
* Starting Firebird 2.5 superclassic server...
...done.
* Firebird 2.5 superclassic server already running
Próbowałem here strings
za pomocą skryptu bash w następujący sposób:
sudo dpkg-reconfigure firebird2.5-superclassic -f readline << EOF
Y
newpwd
EOF
Jednak z jakiegoś powodu to nie działało i wymagało podania wartości.
Wszelkie pomysły, jak wprowadzić wymagane wartości do skryptu?
Pakiety Debiana używają debconf do zbierania ustawień czasu instalacji. Debconf obsługuje wiele nakładek, aby pytać użytkownika o wartości.
-f
Opcjadpkg-reconfigure
wybiera który Debconf frontend do użytku.readline
Nakładka jest przeznaczony do użytku interaktywnego. Nie używaj go w skrypcie automatycznym.Jeśli wartości domyślne są prawidłowe, po prostu użyj
noninteractive
interfejsu użytkownika.Jeśli chcesz podać różne wartości, masz dwie opcje. Możesz trzymać się
noninteractive
frontendu i przeglądać bazę danych debconf . Najprostszym sposobem na to jest zainstalowanie pakietu na jednym komputerze i skonfigurowanie go interaktywnie, a następnie wyodrębnienie odpowiednich części/var/cache/debconf/config.dat
i dostarczenie tego pliku do debconf:Inną metodą jest użycie
editor
interfejsu użytkownika i ustawienie zmiennej środowiskowejVISUAL
(lubEDITOR
, aleVISUAL
ma ona pierwszeństwo,EDITOR
jeśli jest ustawiona) na program, który pobiera plik zawierający bieżące ustawienia jako argument i zastępuje ten plik odpowiednimi ustawieniami.źródło
/var/cache/debconf/config.dat
. Możesz użyćdebconf-get-selections
zdebconf-utils
pakietu. Zobacz to na przykład.dpkg-reconfigure
, które, jak sądzę, OP chce zautomatyzować, ponieważ będzie to robił często.debconf-get-selections
może się tu przydać. Jeśli Peter chce to robić często z różnymi wartościami, powinien generowaćconfig.dat
dynamicznie (jest to prosty format). To jest łatwiejsze niżexpect
.expect
jest ścieżką desperacji. Na przykład rozpadnie się, jeśli nowa wersja pakietu wprowadzi nowe pytanie (w przeciwnym razie potrzebujesz znacznie bardziej wyrafinowanego skryptu).Użyj
debconf-set-selections
polecenia, aby wstawić nowe wartości do bazy danych debconf (/var/cache/debconf/config.dat
).Odpowiedź Eli nie była dla mnie jasna, więc wyjaśnię to krok po kroku.
Pierwszą rzeczą do zrobienia jest interaktywna instalacja pakietu i uzyskanie wybranych opcji przez (zmień
firebird
nazwę pakietu):lub:
Następnie wstępnie zaszczep bazę danych debconf odpowiedziami
debconf-set-selections
, na przykład:gdzie składnia to:
Oto kolejny przykład dla
ttf-mscorefonts-installer
pakietu:Uwaga: Wybrane dane wejściowe mogą pochodzić ze standardowego wejścia lub pliku.
Sprawdź:
man debconf-set-selections
więcej informacji.Alternatywnym sposobem jest użycie Kickstart .
źródło
Grzebałem w nim przez około godzinę, próbując skondensować rozwiązanie tego problemu do jednej linijki i w końcu to znalazłem: debconf-set-selections
Zmusi to debconf do użycia ustawień domyślnych i nie spowoduje błędu. Możesz także ustawić domyślne ustawienia konfiguracji dla dowolnego pakietu Debiana, więcej informacji znajdziesz na stronie man .
źródło
sudo dpkg-reconfigure debconf -f noninteractive
lubexport DEBIAN_FRONTEND=noninteractive
?Próbowałem wykonać skryptową rekonfigurację ustawień LDAP (pakiet ldap-auth-config) przy użyciu wyżej wspomnianej metody debconf-get-selections / set-selections, ale okazało się, że ten pakiet ignoruje ustawienia w debconf po pierwszej instalacji. Możesz użyć debconf do wstępnego uruchomienia przed instalacją, ale po instalacji ldap-auth-config woli zastąpić ustawienia debconf tym, co jest ustawione w zarządzanych plikach konfiguracyjnych systemu. Pakiet pam-auth-config ma takie samo zachowanie.
Mechanizm EDITOR / VISUAL jest również trudny w użyciu w tym przypadku, ponieważ ldap-auth-config wywołuje go wielokrotnie dla różnych zestawów pytań. Można to łatwiej obsłużyć za pomocą skryptu expect lub bezpośrednio modyfikując systemowe pliki konfiguracyjne. Tak więc nie zawsze łatwo jest się nie spodziewac!
źródło