GNU/Linux >> Znalost Linux >  >> Linux

100% neinteraktivní dist-upgrade Debianu

Ř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

Linux
  1. Nainstalujte OpenVPN Server na Debian 11/Debian 10

  2. Nainstalujte GitLab na Debian 10

  3. Nainstalujte Java 8 do debianu Jessie

  1. Jak nainstalovat skutečný Firefox na Debian?

  2. apt-get update hlásí chyby GPG

  3. yum ekvivalentní apt-get upgrade vs apt-get dist-upgrade?

  1. Debian apt-get wheezy sources.list

  2. Debian apt-get squeeze sources.list

  3. Debian apt-get stretch sources.list