Protože Falcot Corp má mnoho počítačů, ale omezený počet pracovníků, jeho administrátoři se pokouší udělat upgrady tak automatické, jak to jen jde. Programy, které to mají na starosti proto musí běžet bez lidského zásahu.
As we have already mentioned (see sidebar
JDEME DÁLE Předcházení otázkám na soubor nastavení),
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).
Případ APTu je jednoduchý: volba -y
(nebo --assume-yes
) říká APTu posuzovat odpovědi na veškeré dotazy odpovědí “yes”.
6.9.3. Nastavení příkazu debconf
Případ příkazu debconf
zaslouží detailnější popis. Tento program byl, od svého počátku, navržen ke kontrole důležitosti a významu dotazů zobrazených uživateli, stejně jako způsobu, kterým jsou zobrazeny. Proto jeho nastavení vyžaduje minimální prioritu dotazů; pouze otázky nad minimální prioritu jsou zobrazeny. debconf
předpokládá přednastavenou odpověď (definovanou správcem balíčku) na dotazy, které se rozhodl přeskočit.
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.
K přenastavení příkazu debconf
se používá nástroj dpkg-reconfigure
z balíčku debconf; náležitý příkaz je dpkg-reconfigure debconf
. Za poznámku stojí, že nastavené hodnoty mohou být přechodně přepsány proměnnými prostředí, pokud je třeba (například DEBIAN_FRONTEND
řídí rozhraní, jak je popsáno na stránce manuálu debconf(7)).
6.9.4. Ovládání komunikace na příkazové řádce
Posledním zdrojem vzájemné komunikace a ten nejtěžší k tomu se ho zbavit, je nastavovací skript spouštěný příkazem dpkg
. Zde bohužel neexistuje nějaké standardní řešení a žádné řešení není jasně lepší než to druhé.
Všeobecně platným přístupem je potlačit standardní vstup tím, že se do něj přesměruje prázdný obsah pomocí command </dev/null
nebo tím, že se zásobuje nekonečným proudem nových řádků. Žádná z těchto metod není stoprocentně spolehlivá, ale obvykle vede k použití přednastavených odpovědí, protože většina skriptů považuje nepřítomnost odpovědi za akceptování přednastavené hodnoty.
Kombinací předcházejících prvků je možné navrhnout malý a relativně spolehlivý skript, který může zaopatřit automatické upgrady.
Příklad 6.5. Upgradovací skript bez interaktivity
export DEBIAN_FRONTEND=noninteractive
yes '' | apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade