6.8. 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.8.1. Konfigurowanie dpkg
Jak już zostało wspomniane (spójrz na fiszkę
IDĄC DALEJ Unikanie pytań o pliki konfiguracyjne),
dpkg
może zostać poinstruowany, aby pytać o potwierdzenie w przypadku zastępowania plików konfiguracyjnych (z opcjami
--force-confdef --force-confold
). Jednakże interakcje mogą mieć trzy inne źródła: jedne pochodzą z samego APTa, inne są obsługiwane przez
debconf
, a niektóre występują w linii komend w powiązaniu do skryptów konfiguracyjnych pakietu.
6.8.2. Konfigurowanie APTa
W przypadku APTa sprawa jest prosta: opcja -y
(lub --assume-yes
) mówi programowi, aby na wszystkie odpowiedzi odpowiadał "tak".
6.8.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ąć.
Kolejnym znaczącym elementem konfiguracji jest sposób komunikacji używany przez interfejs. Jeżeli zostanie wybrany noninteractive
, to wszystkie interakcje z użytkownikiem zostaną wyłączone. W przypadku, gdy pakiet będzie próbował wyświetlić informację, zostanie ona wysłana do administratora w wiadomości e-mail.
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.8.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.8.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.4. 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