Y a-t-il un moyen de faire un apt-get dist-upgrade
Dans Debian, cela ne répond pas seulement automatiquement "oui" à toutes les questions posées, mais utilise également des valeurs par défaut raisonnables comme des réponses aux questions suffisantes de manière sophistiquée pour exiger diverses boîtes de dialogue interactives à apparaître? Je pense ici aux trucs Keymap qui apparaît lorsque vous mettez à niveau libc6
et des choix d'images du noyau.
L'objectif est de pouvoir initier à distance un assez grand dist-upgrade
- Même pour une machine qui est sévèrement derrière l'époque - et ne pas avoir à le goûter du tout, à moins que quelque chose soit horriblement, désastreusement faux.
C'est sûrement possible?
Merci d'avance!
Si vous définissez DEBIAN_FRONTEND=noninteractive
(arrêter Debconf invite à apparaître) et ajoutez force-confold
et force-confdef
à ton /etc/dpkg/dpkg.cfg
Fichier, vous devez avoir une expérience d'installation de package complètement non interactive. Tout emballage qui vous invite toujours à des informations ait un bogue critique de publication (et je dis cela comme une automatisation junkie -et en tant que développeur Debian).
Florian Lohoff Publié Un moyen d'obtenir ce que Womble a suggéré dans 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 Page DPKG pour Confnef). Je ne suis pas sûr dans quels cas cela ferait une différence cependant. J'ai personnellement besoin de la mise à niveau non interactive pour amener les images à la vanille à jour, auquel cas je suppose toujours choisir le nouveau fichier de configuration (sans --force-confdef
) est une chose raisonnable.
Même si la réponse de Womble ci-dessus est généralement bonne, elle n'a pas fonctionné pour moi et je devais faire des recherches supplémentaires pour aller à 100% sans surveillance. Je pensais que je partagerai le résultat de manière concise pour rendre les choses plus simples pour les futurs visiteurs.
Ce qui suit est un script qui fonctionnera selon les recommandations de mise à niveau de Notes de publication de Debian 8 (principalement) ainsi que des drapeaux et des variables d'environnement qui le feront sans surveillance. (Les echo
s sont juste pour le débogage et pourraient être supprimés - bien que je recommande de les garder afin que le script soit 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
Si vous utilisez APT 1.1 ou plus, --force-yes
a été obsolète , vous devez donc utiliser les options commençant par --allow
Au lieu de cela, par exemple. --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
Remarque: utilisez --force-confold
Pour garder vieux, et --force-confnew
Pour conserver de nouvelles configures.
Source: CFE-2360: faire au courant de la version du module de package apt_get .
En rapport: