¿Cómo averiguar los nombres de las variables para debconf-set-selections?
On febrero 13, 2021 by admin Digamos que quiero instalar mysql
desde un script sin que me hagan preguntas de configuración como qué root contraseña que quiero establecer con apt
. Luego, preseleccionaría las debconf
variables:
echo mysql-server-5.5 mysql-server/root_password password xyzzy | debconf-set-selections echo mysql-server-5.5 mysql-server/root_password_again password xyzzy | debconf-set-selections
Obtuve esto de un tutorial. Lo que no me queda claro: ¿Cómo averiguó el chico los nombres de las variables? ¿Cómo supo que tenía que establecer mysql-server-5.5 mysql-server/root_password password
y mysql-server-5.5 mysql-server/root_password_again
respectivamente?
Sé que podría extraer el paquete .deb
emitiendo dpkg-deb -R package.deb EXTRACTDIR/
– pero no veo dónde se almacenan esas variables.
¿Cómo puedo averiguar las debconf
de cualquier otro paquete?
Respuesta
Puede inspeccionar lo que se almacena en debconf
usando debconf-get-selections
. Esto es útil si ya ha realizado la instalación.
Alternativamente, estas configuraciones se utilizan en los scripts de mantenimiento del paquete . Con el comando dpkg-deb
que ha ejecutado, estos se encuentran en el DEBIAN
subdirectorio de EXTRACTDIR
.
Como ejemplo, de lightdm
:
$ grep db_ lightdm/DEBIAN -R lightdm/DEBIAN/postrm: db_purge lightdm/DEBIAN/prerm: db_unregister shared/default-x-display-manager lightdm/DEBIAN/prerm: if db_get shared/default-x-display-manager; then lightdm/DEBIAN/prerm: db_metaget shared/default-x-display-manager owners lightdm/DEBIAN/prerm: db_subst shared/default-x-display-manager choices "$RET" lightdm/DEBIAN/prerm: db_get shared/default-x-display-manager lightdm/DEBIAN/prerm: if db_get "$RET"/daemon_name; then lightdm/DEBIAN/prerm: db_fset shared/default-x-display-manager seen false lightdm/DEBIAN/prerm: db_input critical shared/default-x-display-manager || true lightdm/DEBIAN/prerm: db_go lightdm/DEBIAN/prerm: db_get shared/default-x-display-manager lightdm/DEBIAN/prerm: db_get "$RET"/daemon_name lightdm/DEBIAN/postinst: if db_get shared/default-x-display-manager; then lightdm/DEBIAN/postinst: if db_get "$DEFAULT_DISPLAY_MANAGER"/daemon_name; then lightdm/DEBIAN/postinst:db_stop lightdm/DEBIAN/config:if db_metaget shared/default-x-display-manager owners; then lightdm/DEBIAN/config:if db_metaget shared/default-x-display-manager choices; then lightdm/DEBIAN/config: db_subst shared/default-x-display-manager choices "$OWNERS" || : lightdm/DEBIAN/config: db_fset shared/default-x-display-manager seen false || : lightdm/DEBIAN/config: db_set shared/default-x-display-manager "$CURRENT_DEFAULT" lightdm/DEBIAN/config: if db_get shared/default-x-display-manager; then lightdm/DEBIAN/config: db_set shared/default-x-display-manager lightdm lightdm/DEBIAN/config: db_fset shared/default-x-display-manager seen true lightdm/DEBIAN/config: db_input high shared/default-x-display-manager || : lightdm/DEBIAN/config: db_go || : lightdm/DEBIAN/config:if db_get shared/default-x-display-manager; then
Los distintos db_*
son funciones auxiliares para manejar debconf
, obtenidas de /usr/share/debconf/confmodule
.
Entonces , en el caso de lightdm
, shared/default-x-display-manager
es una clave debconf
importante.
Respuesta
Puede obtener las variables para un paquete específico instalado usando debconf-show packagename
ej.
$ sudo debconf-show mysql-server-5.7 * mysql-server/root_password: (password omitted) * mysql-server/root_password_again: (password omitted) mysql-server-5.7/start_on_boot: true mysql-server/no_upgrade_when_using_ndb: mysql-server/password_mismatch: mysql-server-5.7/really_downgrade: false mysql-server-5.7/nis_warning: mysql-server-5.7/postrm_remove_databases: false mysql-server-5.7/installation_freeze_mode_active:
Puede obtener una lista de todos los paquetes instalados que tienen variables en la base de datos usando debconf-show --listowners
, así que si «no está seguro de cuál es el nombre del paquete, puede hacer algo como
# debconf-show --listowners | grep mysql | xargs debconf-show * mysql-server/root_password: (password omitted) * mysql-server/root_password_again: (password omitted) mysql-server-5.7/postrm_remove_databases: false mysql-server-5.7/nis_warning: mysql-server-5.7/installation_freeze_mode_active: mysql-server/password_mismatch: mysql-server-5.7/start_on_boot: true mysql-server/no_upgrade_when_using_ndb: mysql-server-5.7/really_downgrade: false
Deja una respuesta