Comment faire qu'apt-get accepte de nouveaux fichiers de configuration dans une installation sans assistance de debian depuis Repo

21

J'écris un script pour une installation sans assistance d'un paquet qui est dans notre dépôt, c'est un paquet logiciel avec l'un des fichiers de configuration marqués de Debian. Y a-t-il une option que je peux passer à apt-get/ aptitudepour qu'il accepte les nouveaux fichiers de configuration?

Fondamentalement, j'ai besoin d'un apt/ aptitudeéquivalent de dpkg --force-confnew

Je dois répondre à la question suivante posée lors de l' apt-getinstallation avec un Y


Fichier de configuration `` / opt / application / conf / XXX.conf` '

==> File on system created by you or by a script.
==> File also in package provided by package maintainer.

What would you like to do about it ?  Your options are:
Y or I  : install the package maintainer's version
N or O  : keep your currently-installed version
  D     : show the differences between the versions
  Z     : background this process to examine the 

The default action is to keep your current version.

Information additionnelle:

De plus, je passe le sudomot de passe dans un canal pour exécuter la commande

echo "mysudopass"|sudo -S apt-get mypackage

Cela signale une erreur dans l'installation lorsque l'installation est à la phase interactive de configuration.

Je suis sur Ubuntu 10.04
apt version: apt 0.7.25.3

Pourquoi je ne peux pas utiliser dpkg: ces Debians doivent être installés à partir de Repo et je n'ai pas de Debians locaux sur ma machine

Raman
la source

Réponses:

22

Vous pouvez passer des dpkgparamètres pour apt-getaimer ceci

apt-get -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confnew install pkgname1 pkgname2 ...

Avec --force-confdefsi les anciens fichiers de configuration existent encore, ils ne seront pas surchargée. Donc vous ne l'utiliserez probablement pas, je le documente juste pour les autres.

sudone demandera pas de mot de passe si vous annulez l'option d'authentification pour l'utilisateur ou ajoutez la NOPASSWDbalise dans l'entrée spécifique. par exemple

someuser ALL = NOPASSWD: /usr/bin/apt-get
forcefsck
la source
7

Vous pouvez essayer ce qui suit:

export DEBIAN_FRONTEND=noninteractive
apt-get -q -y install whatever-2

Mais notez que cela a des implications, comme les mots de passe par défaut vides (peut-être que vous souhaitez un outil de déploiement / configuration comme marionnette, chef, tissu ...?).

Voir sudoers (5) sur la façon d'autoriser les appels sans mot de passe sudo.

sr_
la source
3

Alternativement à ce que forcefsck a suggéré, je vous suggère d'ajouter ceci dans les paramètres APT afin que vous ne soyez pas obligé d'ajouter ces options difficiles à écrire tout le temps. En outre, cela serait utile pour les mises à niveau sans assistance si vous disposez de ces configurations.

Créez un /etc/apt/apt.conf.d/71debconffichier pour avoir le contenu suivant:

Dpkg::Options {
  "--force-confnew";
};

Remarque (de Geoff): ce changement serait un changement global. Si vous avez d'autres packages sur le système que vous souhaitez obtenir des mises à niveau sans assistance mais que vous avez également configurés manuellement, ce ne serait pas la solution appropriée.

Te Ri
la source
Cela peut être une bonne option, mais il est important de noter que ce serait un changement GLOBAL. Si vous avez d'autres packages sur le système que vous souhaitez obtenir des mises à niveau sans assistance mais que vous avez également configurés, ce ne serait pas la solution appropriée.
Geoff
2

En plus des autres réponses, vous devrez peut-être également définir l'environnement UCF_FORCE_CONFFNEW = 1 .

Par exemple, openssh dans Debian Stretch utilise ucf (pas debconf) openssh-server/openssh-7.4p1/debian/openssh-server.postinstpour demander le fichier de configuration. (Vous pouvez voir le openssh-server.postinsten utilisant dgetcontre http://security.debian.org/debian-security/pool/updates/main/o/openssh/openssh_7.4p1-10+deb9u4.dsc )

Nous avons dû utiliser toutes les astuces de cette page en plus d'être des utilisateurs libéraux de la préconfiguration debconf .

Nous nous sommes cependant arrêtés juste avant export DEBIAN_FRONTEND=noninteractivecar nous voulons savoir si nous avons raté quelque chose (cela pourrait être important). Notre cas d'utilisation est un opérateur qui démarre l'opération. La mise à niveau devrait être non interactive, mais l'opérateur est présent en cas de problème et une boîte de dialogue se présente. Votre situation peut être différente.

Mais export DEBIAN_FRONTEND=noninteractivec'est votre marteau proverbial.

Attention: le réglage -o Dpkg::Options::=--force-confnewet / ou UCF_FORCE_CONFFNEW=1signifie que tous les fichiers de configuration des packages installés reviennent aux fichiers en amont. Par exemple, dans le cas de openssh-server, votre /etc/ssh/sshd_configsera réinitialisé aux paramètres d'usine. Et par exemple PermitRootLogin=yessera supprimé. Mais bien sûr, vous ne l'utilisez pas, donc tout ira bien! ;-)

Peter V. Mørch
la source