Me gustaría configurar el paquete ubuntu a través de dpkg-reconfigure con todos los valores suministrados a través del modo no interactivo (en el script).
De hecho, mi caso es la configuración de firebird ( http://www.firebirdsql.org/manual/ubusetup.html ), que al usar el comando:
sudo dpkg-reconfigure firebird2.5-superclassic -freadline
me pregunta por los 2 valores, donde las respuestas serían 'Y' y 'newpwd'.
La salida de muestra se ve así:
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
Lo he intentado here strings
mediante un script bash como este:
sudo dpkg-reconfigure firebird2.5-superclassic -f readline << EOF
Y
newpwd
EOF
Sin embargo, esto no funcionó por alguna razón y solicitó que se suministraran los valores.
¿Alguna idea de cómo alimentar los valores necesarios para el script?
Los paquetes Debian usan debconf para recopilar la configuración del tiempo de instalación. Debconf admite múltiples interfaces para solicitar valores al usuario. La
-f
opción paradpkg-reconfigure
seleccionar qué interfaz de debconf usar.La
readline
interfaz está diseñada para uso interactivo. No lo use en un script automático.Si los valores predeterminados están bien, simplemente use la
noninteractive
interfaz.Si desea proporcionar valores diferentes, tiene dos opciones. Puede seguir con la
noninteractive
interfaz y preseleccionar la base de datos de debconf . La forma más fácil de hacer esto es instalar el paquete en una máquina y configurarlo de forma interactiva, luego extraer las partes relevantes/var/cache/debconf/config.dat
y suministrar este archivo a debconf:Otro método es usar el
editor
frontend y establecer la variable de entornoVISUAL
(oEDITOR
, peroVISUAL
tiene prioridad sobreEDITOR
si está configurada) en un programa que toma un archivo que contiene la configuración actual como argumento y sobrescribe ese archivo con la configuración que desee.fuente
/var/cache/debconf/config.dat
te analices a ti mismo. Puedes usardebconf-get-selections
desde eldebconf-utils
paquete. Ver esto por ejemplo.dpkg-reconfigure
, lo que supongo que el OP quiere automatizar porque lo hará con frecuencia.debconf-get-selections
es probable que sea útil aquí. Si Peter quiere hacer esto a menudo con valores diferentes, debe generarconfig.dat
dinámicamente (es un formato simple). Esto es más fácil queexpect
.expect
Es el camino de la desesperación. Por ejemplo, se desglosará si una nueva versión del paquete presenta una nueva pregunta (o si necesita un script mucho más sofisticado).Use el
debconf-set-selections
comando para insertar nuevos valores en la base de datos debconf (/var/cache/debconf/config.dat
).La respuesta de Eli no fue clara para mí, así que lo explicaré paso a paso.
Lo primero que debe hacer es instalar el paquete de forma interactiva y obtener las selecciones elegidas por (cambiar
firebird
el nombre de su paquete):o:
Luego pre-siembra la base de datos debconf con respuestas de
debconf-set-selections
, por ejemplo:donde es la sintaxis:
Aquí hay otro ejemplo para el
ttf-mscorefonts-installer
paquete:Nota: Las selecciones de entrada pueden ser de la entrada estándar o del archivo.
Consultar:
man debconf-set-selections
para más información.La forma alternativa es usar Kickstart .
fuente
He estado hurgando durante aproximadamente una hora solo tratando de condensar la solución para esto en una sola línea y finalmente lo encontré: debconf-set-selections
Esto obligará a debconf a usar los valores predeterminados y no molestarte. También puede establecer los valores predeterminados de configuración para cualquier paquete Debian; consulte la página de manual para obtener más información.
fuente
sudo dpkg-reconfigure debconf -f noninteractive
oexport DEBIAN_FRONTEND=noninteractive
?He estado intentando hacer una reconfiguración programada de la configuración de LDAP (paquete ldap-auth-config) usando el método debconf-get-selections / set-selections mencionado anteriormente, solo para descubrir que este paquete ignora la configuración en debconf después de la instalación inicial. Puede usar debconf para pre-inicializar antes de la instalación, pero después de instalar ldap-auth-config prefiere sobrescribir sus configuraciones de debconf con lo que esté configurado en los archivos de configuración del sistema que administra. El paquete pam-auth-config tiene el mismo comportamiento.
El mecanismo EDITOR / VISUAL también es difícil de usar en este caso porque ldap-auth-config lo invoca varias veces para diferentes conjuntos de preguntas. Se puede manejar más fácilmente con un script de espera o modificando directamente los archivos de configuración del sistema. Por lo tanto, ¡no siempre es fácil evitar volver a esperar!
fuente