6.9. Automatyczne Uaktualnienia
W związku z tym, że Falcot Corp posiada wiele komputerów, ale ograniczoną siłę roboczą, jego administratorzy starają się jak najbardziej zautomatyzować proces uaktualniania. Dlatego programy zarządzające tym procesem powinny działać bez interwencji człowieka.
6.9.1. Konfigurowanie dpkg
As we have already mentioned (see sidebar
IDĄC DALEJ Unikanie pytań o pliki konfiguracyjne),
dpkg
can be instructed not to ask for confirmation when replacing a configuration file (with the
--force-confdef --force-confold
options). Interactions can, however, have three other sources: some come from APT itself, some are handled by
debconf
, and some happen on the command line due to package configuration scripts (sometimes handled by
ucf).
6.9.2. Konfigurowanie APTa
W przypadku APTa sprawa jest prosta: opcja -y
(lub --assume-yes
) mówi programowi, aby na wszystkie odpowiedzi odpowiadał "tak".
6.9.3. Konfigurowanie debconf
Omówienie przypadku debconf
zasługuje na więcej uwagi. Od początku istnienia tego programu, był on projektowany do kontroli trafności i ilości pytań wyświetlanych użytkownikowi oraz sposobu w jaki są pokazywane. Z tego powodu jego konfiguracja wymaga nadania minimalnego priorytetu dla pytań; tylko pytania powyżej minimalnego priorytetu są wyświetlane. debconf
zakłada domyślną odpowiedź (zdefiniowaną przez opiekuna pakietu) dla pytań, które zdecydował pominąć.
The other relevant configuration element is the interface used by the frontend. If you choose noninteractive
out of the choices, all user interaction is disabled. If a package tries to display an informative note, it will be sent to the administrator by email.
W celu zmiany konfiguracji debconf
należy użyć narzędzia dpkg-reconfigure
z pakietu debconf; omawianą komendą jest dpkg-reconfigure debconf
. Warto zauważyć, że w razie potrzeby wartości konfiguracyjne mogą być tymczasowo nadpisane zmiennymi środowiskowymi (przykładowo DEBIAN_FRONTEND
kontroluje interfejs, co zostało opisane na stronach pomocy debconf(7)).
6.9.4. Obsługa Interakcji Linii Komend
Ostatnim źródłem interakcji, najtrudniejszym do ominięcia, są skrypty konfiguracyjne uruchamiane przez dpkg
. Niestety nie mają one standardowego rozwiązania, a żadna odpowiedź nie jest znacząco lepsza niż inne.
The common approach is to suppress the standard input by redirecting the empty content of /dev/null
into it with command </dev/null
, or to feed it with an endless stream of newlines. None of these methods is 100 % reliable, but they generally lead to the default answers being used, since most scripts consider a lack of reply as an acceptance of the default value.
6.9.5. Cudowne Połączenie
Poprzez połączenie wcześniej wspomnianych elementów możliwe jest zaprojektowanie małego, dosyć niezawodnego skryptu do wykonywania automatycznych uaktualnień.
Przykład 6.5. Skrypt uaktualniający bez interakcji
export DEBIAN_FRONTEND=noninteractive
yes '' | apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade