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
/ aptitude
pour 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-get
installation 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 sudo
mot 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
Réponses:
Vous pouvez passer des
dpkg
paramètres pourapt-get
aimer ceciAvec
--force-confdef
si 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.sudo
ne demandera pas de mot de passe si vous annulez l'option d'authentification pour l'utilisateur ou ajoutez laNOPASSWD
balise dans l'entrée spécifique. par exemplela source
Vous pouvez essayer ce qui suit:
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
.la source
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/71debconf
fichier pour avoir le contenu suivant: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.
la source
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.postinst
pour demander le fichier de configuration. (Vous pouvez voir leopenssh-server.postinst
en utilisantdget
contre 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=noninteractive
car 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=noninteractive
c'est votre marteau proverbial.Attention: le réglage
-o Dpkg::Options::=--force-confnew
et / ouUCF_FORCE_CONFFNEW=1
signifie que tous les fichiers de configuration des packages installés reviennent aux fichiers en amont. Par exemple, dans le cas deopenssh-server
, votre/etc/ssh/sshd_config
sera réinitialisé aux paramètres d'usine. Et par exemplePermitRootLogin=yes
sera supprimé. Mais bien sûr, vous ne l'utilisez pas, donc tout ira bien! ;-)la source