Solution 1 :
Si vous définissez DEBIAN_FRONTEND=noninteractive
(pour empêcher l'apparition des invites debconf) et ajoutez force-confold
et force-confdef
à votre /etc/dpkg/dpkg.cfg
fichier, vous devriez avoir une expérience d'installation de package complètement non interactive. Tout paquet qui vous demande encore des informations a un bogue critique pour la publication (et je dis cela à la fois en tant que drogué de l'automatisation et en tant que développeur Debian).
Solution 2 :
Florian Lohoff a publié un moyen d'obtenir ce que womble a suggéré en une seule commande :
DEBIAN_FRONTEND=noninteractive \
apt-get \
-o Dpkg::Options::="--force-confnew" \
--force-yes \
-fuy \
dist-upgrade
Bien sûr, vous pouvez également utiliser -o Dpkg::Options::="--force-confnew --force-confdef"
(recherchez la page de manuel dpkg pour confnew). Je ne sais pas dans quels cas cela ferait une différence cependant. J'ai personnellement besoin de la mise à niveau non interactive pour mettre à jour les images vanille, auquel cas je suppose que je choisis toujours le nouveau fichier de configuration (sans --force-confdef
) est une chose raisonnable.
Solution 3 :
Même si la réponse de womble ci-dessus est généralement bonne, cela n'a pas fonctionné pour moi et j'ai dû faire des recherches supplémentaires pour rester à 100% sans surveillance. J'ai pensé partager le résultat de manière concise pour simplifier les choses pour les futurs visiteurs.
Ce qui suit est un script qui s'exécutera selon les recommandations de mise à jour des notes de publication de Debian 8 (principalement) avec des indicateurs et des variables d'environnement qui le rendront sans surveillance. (le echo
s sont juste pour le débogage et peuvent être supprimés - bien que je recommande de les conserver, donc si le script est bloqué, vous saurez où)
#!/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
Solution 4 :
>=Apt 1.1
Si vous utilisez Apt 1.1 ou supérieur, --force-yes
est obsolète, vous devez donc utiliser les options commençant par --allow
à la place, par ex. --allow-downgrades
, --allow-remove-essential
, --allow-change-held-packages
.
Donc la commande est :
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
Source :CFE-2360 : Rendez compte de la version du module de package apt_get.
Connexe :
- apt-get update non interactif
- Comment puis-je demander à apt-get d'ignorer les étapes de configuration post-installation interactives ?
- Mise à jour apt non interactive