Je voudrais configurer le paquet ubuntu via dpkg-reconfigure avec toutes les valeurs fournies via le mode non interactif (dans le script).
En fait, mon cas est la configuration de Firebird ( http://www.firebirdsql.org/manual/ubusetup.html ), que lorsque vous utilisez la commande:
sudo dpkg-reconfigure firebird2.5-superclassic -freadline
me demande les 2 valeurs, où les réponses seraient «Y» et «newpwd».
L'échantillon de sortie ressemble à ceci:
sudo dpkg-reconfigure firebird2.5-superclassic -freadline
* Firebird 2.5 superclassic server not running
Configuring firebird2.5-superclassic
------------------------------------
Accept if you want Firebird server to start automatically.
If you only need the Firebird client and there are no databases that will be served by this host, decline.
Enable Firebird server? Y
Password for firebird 2.5
-------------------------
Firebird has a special user named SYSDBA, which is the user that has access to all databases. SYSDBA can also create new databases and users. Because of this, it
is necessary to secure SYSDBA with a password.
The password is stored in /etc/firebird/2.5/SYSDBA.password (readable only by root). You may modify it there (don't forget to update the security database too,
using the gsec utility), or you may use dpkg-reconfigure to update both.
To keep your existing password, leave this blank.
Password for SYSDBA:
* Starting Firebird 2.5 superclassic server...
...done.
* Firebird 2.5 superclassic server already running
J'ai essayé here strings
via un script bash comme ceci:
sudo dpkg-reconfigure firebird2.5-superclassic -f readline << EOF
Y
newpwd
EOF
Cependant, cela n'a pas fonctionné pour une raison quelconque et il a demandé que les valeurs soient fournies.
Des idées sur la façon de fournir les valeurs requises au script?
Les paquets Debian utilisent debconf pour collecter les paramètres de temps d'installation. Debconf prend en charge plusieurs interfaces pour inviter l'utilisateur à saisir des valeurs. L'
-f
option pourdpkg-reconfigure
sélectionner le frontend debconf à utiliser.Le
readline
frontend est conçu pour une utilisation interactive. Ne l'utilisez pas dans un script automatique.Si les valeurs par défaut sont correctes, utilisez simplement le
noninteractive
frontend.Si vous souhaitez fournir des valeurs différentes, vous avez deux options. Vous pouvez vous en tenir à l'
noninteractive
interface et préconfigurer la base de données debconf . La façon la plus simple de le faire est d'installer le paquet sur une machine et de le configurer de manière interactive, puis d'extraire les parties pertinentes de/var/cache/debconf/config.dat
et de fournir ce fichier à debconf:Une autre méthode consiste à utiliser le
editor
frontal et à définir la variable d'environnementVISUAL
(ouEDITOR
, maisVISUAL
a priorité surEDITOR
si elle est définie) dans un programme qui prend un fichier contenant les paramètres actuels comme argument et écrase ce fichier avec les paramètres souhaités.la source
/var/cache/debconf/config.dat
vous analyser . Vous pouvez utiliser àdebconf-get-selections
partir dudebconf-utils
package. Voir ceci par exemple.dpkg-reconfigure
, ce que je suppose que l'OP veut automatiser parce qu'il le fera fréquemment.debconf-get-selections
est susceptible d'être utile ici. Si Peter veut le faire souvent avec des valeurs différentes, il doit générerconfig.dat
dynamiquement (c'est un format simple). C'est plus facile queexpect
.expect
est le chemin du désespoir. Par exemple, il tombera en panne si une nouvelle version du package introduit une nouvelle question (ou bien vous avez besoin d'un script beaucoup plus sophistiqué).Utilisez la
debconf-set-selections
commande pour insérer de nouvelles valeurs dans la base de données debconf (/var/cache/debconf/config.dat
).La réponse d'Eli n'était pas claire pour moi, alors je vais l'expliquer étape par étape.
La première chose à faire est d'installer le package de manière interactive et d'obtenir les sélections choisies par (changez
firebird
le nom de votre package):ou:
Pré-amorcez ensuite la base de données debconf avec des réponses
debconf-set-selections
, par exemple:où la syntaxe est:
Voici un autre exemple de
ttf-mscorefonts-installer
package:Remarque: Les sélections d'entrée peuvent provenir de l'entrée standard ou du fichier.
Vérifiez:
man debconf-set-selections
pour plus d'informations.Une autre méthode consiste à utiliser Kickstart .
la source
Je fouille depuis environ une heure en essayant de condenser la solution pour cela en une ligne et je l'ai finalement trouvée: debconf-set-selections
Cela forcera debconf à utiliser les valeurs par défaut et ne vous dérangera pas. Vous pouvez également définir les paramètres de configuration par défaut pour n'importe quel paquet Debian, consultez la page de manuel pour plus d'informations.
la source
sudo dpkg-reconfigure debconf -f noninteractive
ouexport DEBIAN_FRONTEND=noninteractive
?J'ai essayé de faire une reconfiguration scriptée des paramètres LDAP (package ldap-auth-config) en utilisant la méthode debconf-get-selections / set-selections mentionnée ci-dessus, pour constater que ce package ignore les paramètres de debconf après l'installation initiale. Vous pouvez utiliser debconf pour pré-amorcer avant l'installation, mais après l'installation, ldap-auth-config préfère écraser vos paramètres debconf avec tout ce qui est défini dans les fichiers de configuration système qu'il gère. Le paquet pam-auth-config a le même comportement.
Le mécanisme EDITOR / VISUAL est également difficile à utiliser dans ce cas car ldap-auth-config l'invoque plusieurs fois pour différents ensembles de questions. Il peut être manipulé plus facilement avec un script attendu, ou en modifiant directement les fichiers de configuration du système. Donc, il n'est pas toujours facile d'éviter de se replier sur ce qui est attendu!
la source