Soluzione 1:
Se imposti DEBIAN_FRONTEND=noninteractive
(per impedire la visualizzazione dei prompt debconf) e aggiungere force-confold
e force-confdef
al tuo /etc/dpkg/dpkg.cfg
file, dovresti avere un'esperienza di installazione del pacchetto completamente non interattiva. Qualsiasi pacchetto che ti richiede ancora informazioni ha un bug critico per il rilascio (e lo dico sia come drogato di automazione e come sviluppatore Debian).
Soluzione 2:
Florian Lohoff ha pubblicato un modo per ottenere ciò che womble ha suggerito in un singolo comando:
DEBIAN_FRONTEND=noninteractive \
apt-get \
-o Dpkg::Options::="--force-confnew" \
--force-yes \
-fuy \
dist-upgrade
Ovviamente potresti anche usare -o Dpkg::Options::="--force-confnew --force-confdef"
(cercare confnew nella pagina man di dpkg). Non sono sicuro in quali casi questo farebbe la differenza però. Personalmente ho bisogno dell'aggiornamento non interattivo per aggiornare le immagini vanilla, nel qual caso suppongo di scegliere sempre il nuovo file di configurazione (senza --force-confdef
) è una cosa ragionevole.
Soluzione 3:
Anche se la risposta di womble sopra è generalmente buona, non ha funzionato per me e ho dovuto fare qualche ricerca aggiuntiva per rimanere incustodita al 100%. Ho pensato di condividere il risultato in modo conciso per rendere le cose più semplici per i futuri visitatori.
Quello che segue è uno script che verrà eseguito secondo le raccomandazioni sull'aggiornamento delle note di rilascio di Debian 8 (principalmente) insieme a flag e variabili d'ambiente che lo renderanno incustodito. (il echo
sono solo per il debug e potrebbero essere rimossi, anche se consiglio di tenerli così se lo script si blocca saprai dove)
#!/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
Soluzione 4:
>=Apt 1.1
Se stai usando Apt 1.1 o superiore, --force-yes
è stato deprecato, quindi devi usare le opzioni che iniziano con --allow
invece, ad es. --allow-downgrades
, --allow-remove-essential
, --allow-change-held-packages
.
Quindi il comando è:
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
Fonte:CFE-2360:Rendi consapevole la versione del modulo del pacchetto apt_get.
Correlati:
- apt-get update non interattivo
- Come faccio a chiedere ad apt-get di saltare eventuali passaggi di configurazione post-installazione interattiva?
- Aggiornamento apt non interattivo