Hledám automatizaci některých instalací balíčků pomocí bash skriptu; budou nainstalovány do již existujícího souborového systému chroot’d. Některé z balíčků však zahrnují interaktivní uživatelský vstup (tj. ddclient žádá o výběr poskytovatele dynamických DNS služeb), což se mi nepodařilo tak snadno automatizovat.
Přednastavení debconf se zdá být nejběžnějším způsobem automatizace instalací interaktivních balíčků, ale všechny příklady, které jsem četl, naznačují, že je to pro celou instalaci Debianu, nikoli pouze pro jednotlivé balíčky.
Sledoval jsem tento návod Jak automatizovat interaktivní instalace balíčků Debianu, ale ve skutečnosti to nevysvětluje specifika.
Předem děkuji!
Přijatá odpověď:
Bez použití „správného“ nástroje pro správu nasazení a konfigurace, jako je Ansible nebo Salt, debconf
přednastavení může být naprosto dostačující pro přednastavení balíčků Debianu. Není to vůbec omezeno na plnohodnotné instalace; lze jej použít na libovolný počet balíčků.
Nejjednodušší způsob, jak s tím začít, je ručně nakonfigurovat balíčky, které chcete nainstalovat, instalací balíčku a zodpovězením otázek. Poté spusťte debconf-get-selections
(z debconf-utils
balík); to bude seznam všech nastavení, která jsou uložena, včetně těch pro balíčky, které jste právě nainstalovali, spolu s textem otázky v komentářích — takže můžete snadno najít otázky, které chcete přednastavit. Formát je
<package> <debconf key> <type> <value>
Například
# System's default paper size:
# Choices: letter, a4, note, legal, executive, halfletter, halfexecutive, 11x17, statement, folio, quarto, 10x14, ledger, tabloid, a0, a1, a2, a3, a5, a6, a7, a8, a9, a10, b0, b1, b2, b3, b4, b5, c5, DL, Comm10, Monarch, archE, archD, archC, archB, archA, flsa, flse, csheet, dsheet, esheet
libpaper1 libpaper/defaultpaper select a4
Uložte nastavení, která chcete přednastavit, do souboru a poté spusťte debconf-set-selections
(v debconf
package) na cílovém systému, buď se souborem dostupným lokálně a pojmenovaným jako první argument, nebo jeho obsahem přes rouru:
cat preseed-file | ssh remotehost debconf-set-selections
Udělejte to před instalace balíčků na cílový systém.