Řešení 1:
Pokud nastavíte DEBIAN_FRONTEND=noninteractive
(chcete-li zastavit zobrazování výzev debconf) a přidejte force-confold
a force-confdef
na váš /etc/dpkg/dpkg.cfg
měli byste mít zcela neinteraktivní instalaci balíčku. Každý balíček, který vás stále žádá o informace, obsahuje chybu kritickou pro vydání (a to říkám jako narkoman v automatizaci a jako vývojář Debianu).
Řešení 2:
Florian Lohoff zveřejnil způsob, jak dostat to, co navrhoval womble, do jediného příkazu:
DEBIAN_FRONTEND=noninteractive \
apt-get \
-o Dpkg::Options::="--force-confnew" \
--force-yes \
-fuy \
dist-upgrade
Samozřejmě můžete také použít -o Dpkg::Options::="--force-confnew --force-confdef"
(na manuálové stránce dpkg vyhledejte confnew). Nejsem si jistý, v jakých případech by to znamenalo rozdíl. Osobně potřebuji neinteraktivní upgrade, aby byly vanilkové obrázky aktuální, v takovém případě předpokládám, že vždy vybírám nový konfigurační soubor (bez --force-confdef
) je rozumná věc.
Řešení 3:
I když je výše uvedená odpověď womble obecně dobrá, nefungovala pro mě a musel jsem provést další průzkum, abych zůstal 100% bez dozoru. Řekl jsem si, že se o výsledek podělím stručným způsobem, abych to budoucím návštěvníkům zjednodušil.
Následuje skript, který poběží podle doporučení k upgradu v poznámkách k vydání debianu 8 (většinou) spolu s příznaky a proměnnými prostředí, díky kterým bude bezobslužný. (echo
s jsou pouze pro ladění a mohou být odstraněny - i když doporučuji si je ponechat, takže pokud se skript zasekne, budete vědět kde)
#!/bin/bash
apt-get remove apt-listchanges --assume-yes --force-yes &&
#using export is important since some of the commands in the script will fire in a subshell
export DEBIAN_FRONTEND=noninteractive &&
export APT_LISTCHANGES_FRONTEND=none &&
#lib6c was an issue for me as it ignored the DEBIAN_FRONTEND environment variable and fired a prompt anyway. This should fix it
echo 'libc6 libraries/restart-without-asking boolean true' | debconf-set-selections &&
echo "executing wheezy to jessie" &&
find /etc/apt -name "*.list" | xargs sed -i '/^deb/s/wheezy/jessie/g' &&
echo "executing autoremove" &&
apt-get -fuy --force-yes autoremove &&
echo "executing clean" &&
apt-get --force-yes clean &&
echo "executing update" &&
apt-get update &&
echo "executing upgrade" &&
apt-get --force-yes -o Dpkg::Options::="--force-confold" --force-yes -o Dpkg::Options::="--force-confdef" -fuy upgrade &&
echo "executing dist-upgrade" &&
apt-get --force-yes -o Dpkg::Options::="--force-confold" --force-yes -o Dpkg::Options::="--force-confdef" -fuy dist-upgrade
Řešení 4:
>=Apt 1.1
Pokud používáte Apt 1.1 nebo vyšší, --force-yes
byla zastaralá, takže musíte použít možnosti začínající --allow
místo toho, např. --allow-downgrades
, --allow-remove-essential
, --allow-change-held-packages
.
Příkaz tedy zní:
DEBIAN_FRONTEND=noninteractive \
apt-get \
-o Dpkg::Options::=--force-confold \
-o Dpkg::Options::=--force-confdef \
-y --allow-downgrades --allow-remove-essential --allow-change-held-packages \
dist-upgrade
Zdroj:CFE-2360:Informujte o verzi modulu balíčku apt_get.
Související:
- neinteraktivní aktualizace apt-get
- Jak požádám apt-get, aby vynechal jakékoli interaktivní kroky konfigurace po instalaci?
- Neinteraktivní upgrade apt