Comment puis-je apt-get -y dist-upgrade sans une invite de configuration grub?

57

Per Faites en sorte que apt-get (ou aptitude) s'exécute avec -y mais ne demande pas le remplacement des fichiers de configuration?

J'ai fait ce qui suit:

ec2run ami-3c994355 --region us-east-1 -n 1 -t m1.large -z us-east-1d

Sur la machine:

sudo apt-get update
sudo apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade

Je reçois toujours une invite me demandant quel fichier de configuration je souhaite utiliser. Ce sont les lignes qui précèdent l'invite:

Setting up grub-pc (1.99-21ubuntu3.1) ...

alors:

                         ┌───────────────────────────────────────────────────────┤ Configuring grub-pc ├───────────────────────────────────────────────────────┐                              
                         │ A new version of configuration file /etc/default/grub is available, but the version installed currently has been locally modified.  │                              
                         │                                                                                                                                     │                              
                         │ What do you want to do about modified configuration file grub?                                                                      │                              
                         │                                                                                                                                     │                              
                         │                                     install the package maintainer's version                                                        │                              
    
posée fratrik 05.06.2012 - 19:27
la source

3 réponses

84

Le fichier /etc/default/grub est généré au moment de l'installation du package, ce qui est nécessaire car il s'intègre à debconf. Cela signifie qu'il ne peut pas être traité comme un fichier de configuration dpkg et que la gestion des fichiers de configuration de dpkg ne le sait pas.

Au lieu de cela, il utilise ucf , un outil Debian plus sophistiqué pour gérer la configuration. Ceci, malheureusement, ne comprend pas les options de dpkg, par conséquent, régler Dpkg::Options::="--force-confdef" ne va pas aider. Toutefois, il utilise sa propre méthode pour effectuer des mises à niveau sans invite via les variables d'environnement UCF_FORCE_CONFFNEW et UCF_FORCE_CONFFOLD .

ucf utilise debconf pour les invites, par conséquent, définir l'interface debconf sur noninteractive fera également taire le message. Si vous voulez vraiment des mises à jour non interactives, vous devrez le faire quand même - des paquets arbitraires peuvent poser des questions debconf (bien qu'ils ne le soient généralement pas pendant les mises à niveau).

Vous pouvez définir l’interface debconf comme un one-off en ajoutant DEBIAN_FRONTEND=noninteractive à votre environnement, ou la définir de manière permanente en exécutant dpkg-reconfigure debconf et en sélectionnant l’interface non interactive. Si vous utilisez le frontend non interactif, vous obtiendrez la réponse par défaut pour toutes les questions qu'un paquet pourrait poser.

Pour ucf , la réponse par défaut est "conserver le fichier existant".

Ainsi, la commande complète pour effectuer une mise à jour inconditionnelle garantie à 100 %¹ serait.

sudo DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade

¹: Il est techniquement possible que les paquets utilisent une autre méthode d’invite que debconf, mais cela est contraire à la politique de Debian. Si vous rencontrez un tel paquet, déposez un bogue.

    
réponse donnée RAOF 06.06.2012 - 05:28
la source
16

sortir de la réponse de RAOF et après avoir passé d'innombrables heures à chercher sur le Web pour être en mesure d'effectuer une mise à jour et une mise à niveau complètement inutilisables; dist-upgrade sur Ubuntu 12.04, je suis venu avec ceci grâce au fait que ce post ( lien ) indique que grub adhère à UCF et non aux options Dpkg lorsque vous souhaitez utiliser les mainteneurs de paquet grub menu.lst au lieu d’éventuelles modifications de menu.lst locales.

J'ai laissé les options Dpkg force-confnew dans d'autres paquets qui ne sont pas grub.

#!/bin/bash

unset UCF_FORCE_CONFFOLD
export UCF_FORCE_CONFFNEW=YES
ucf --purge /boot/grub/menu.lst

export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get -o Dpkg::Options::="--force-confnew" --force-yes -fuy dist-upgrade
    
réponse donnée metral 28.02.2013 - 20:31
la source
3

Les solutions précédentes ne fonctionneraient pas avec 16.04. Cela fonctionne de cette réponse sur le débordement de pile :

sudo DEBIAN_FRONTEND=noninteractive apt-get -y -o DPkg::options::="--force-confdef" -o DPkg::options::="--force-confold"  install grub-pc
    
réponse donnée StringsOnFire 08.01.2017 - 16:37
la source

Lire d'autres questions sur les étiquettes