30 votes

Comment automatiser la modification des fichiers de configuration lors de la mise à jour d'apt-get dans Ubuntu 12

J'aime utiliser "knife cloudstack server create ..." pour construire une nouvelle VM. Mon modèle de démarrage commence par un "apt-get update" et un "apt-get -y upgrade".

La mise à niveau s'arrête ensuite avec :

10.190.113.11 Configuration file `/etc/nscd.conf'
10.190.113.11  ==> Modified (by you or by a script) since installation.
10.190.113.11  ==> Package distributor has shipped an updated version.
10.190.113.11    What would you like to do about it ?  Your options are:
10.190.113.11     Y or I  : install the package maintainer's version
10.190.113.11     N or O  : keep your currently-installed version
10.190.113.11       D     : show the differences between the versions
10.190.113.11       Z     : start a shell to examine the situation
10.190.113.11  The default action is to keep your current version.
10.190.113.11 *** nscd.conf (Y/I/N/O/D/Z) [default=N] ?

Il y a donc deux problèmes :

Tout d'abord, puis-je faire en sorte qu'apt-get fasse quelque chose par défaut ? Il est évident qu'il n'y a aucun moyen de fournir une réponse.

Deuxièmement, je ne sais même pas quelle devrait être la bonne réponse à cette question. Le fichier de configuration qu'il remplace provient d'un modèle. Je n'ai pas encore cherché à savoir ce que fait "nscd". (On peut supposer que "Y" est la bonne réponse, mais la recherche nécessaire au moment de la question est décourageante).

36voto

Vous pouvez passer des arguments pour éviter de recevoir des invites. Voici ce qui fonctionne pour moi ;

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

--force-confold (mon choix) fera de ces "Que voulez-vous faire du fichier de configuration modifié ? Les questions sont réglées par défaut sur N (conservez la version actuellement installée)

--force-confold: do not modify the current configuration file, the new version is installed with a .dpkg-dist suffix. With this option alone, even configuration files that you have not modified are left untouched. You need to combine it with --force-confdef to let dpkg overwrite configuration files that you have not modified.
--force-confnew: always install the new version of the configuration file, the current version is kept in a file with the .dpkg-old suffix.
--force-confdef: ask dpkg to decide alone when it can and prompt otherwise. This is the default behavior of dpkg and this option is mainly useful in combination with --force-confold.
--force-confmiss: ask dpkg to install the configuration file if it’s currently missing (for example because you have removed the file by mistake).

Avertissement - certains fichiers de configuration modifiés peuvent endommager votre système s'ils sont conservés et ne sont pas compatibles avec la version mise à jour du paquet. Veuillez le tester avant de le déployer dans des solutions d'automatisation.

12voto

jammus Points 1796

Si vous ne souhaitez absolument pas répondre à des questions interactives, définissez le paramètre DEBIAN_FRONTEND variable frontale à noninteractive .

Cela peut être aussi simple que DEBIAN_FRONTEND=noninteractive apt-get upgrade .

Vous n'obtiendrez aucun message et les valeurs par défaut seront choisies. Dans la plupart des cas, cela signifie que vos fichiers de configuration ne seront pas modifiés et que vous vous retrouverez avec des fichiers nommés comme *.dpkg-new pour tous les endroits où un fichier de configuration n'a pas été modifié. Vous pouvez ensuite résoudre manuellement les modifications ou intégrer votre configuration locale dans le système à l'aide d'un système de gestion de la configuration ou autre.

Deuxièmement, je ne sais même pas quelle devrait être la bonne réponse à cette question

Frapper le D affichera la différence, que vous pourrez ensuite inspecter. Si vous êtes certain de n'avoir jamais modifié manuellement ce fichier, cliquez sur Y pour le remplacer est probablement sûr (vous avez vérifié la mise à jour de vos sauvegardes). C'EST VRAI !!! ). Choisir N conserve simplement l'ancien fichier, ce qui est également sûr dans 95 % des cas, sauf si le paquet a subi des modifications majeures, qui sont généralement couvertes par le journal des modifications/les notes de version que vous avez également lues avant d'exécuter la commande upgrade/dist-upgrade.

Ensuite, essayez simplement la commande dans votre environnement de test. Voyez si les choses ne fonctionnent pas. Si vous n'êtes vraiment pas sûr de vous, prenez le diff, lisez la documentation du paquet et faites des recherches.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X