Estoy escribiendo un script para una instalación desatendida de un paquete que está en nuestro repositorio, es un paquete de software con uno de los archivos de configuración marcados de Debian. ¿Hay alguna opción que pueda pasar apt-get
/ aptitude
para que acepte los nuevos archivos de configuración?
Básicamente necesito un apt
/ aptitude
equivalente de dpkg --force-confnew
Necesito responder la siguiente pregunta planteada mientras apt-get
se instala con una Y
Archivo de configuración `` / 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.
Información adicional:
Además, estoy pasando la sudo
contraseña en una tubería para ejecutar el comando
echo "mysudopass"|sudo -S apt-get mypackage
Esto indica un error en la instalación cuando la instalación está en la fase interactiva de configuración.
Estoy en Ubuntu 10.04
versión apta: apt 0.7.25.3
Por qué no puedo usar dpkg
: estos Debians se deben instalar desde Repo y no tengo Debians locales en mi máquina
Respuestas:
Puede pasar
dpkg
parámetros aapt-get
gustar estoCon
--force-confdef
si todavía existen archivos de configuración viejos, no van a conseguir reemplazado. Así que probablemente no lo use, solo lo estoy documentando para otros.sudo
no le pedirá una contraseña si niega la opción de autenticación para el usuario o agrega laNOPASSWD
etiqueta en la entrada específica. p.ejfuente
Puedes probar lo siguiente:
Pero tenga en cuenta que esto tiene implicaciones, como contraseñas predeterminadas vacías (tal vez desee alguna herramienta de implementación / configuración como marioneta, chef, tela ...?).
Consulte sudoers (5) sobre cómo permitir
sudo
invocaciones sin contraseña .fuente
Alternativamente a lo que sugirió forcefsck, le sugiero que agregue esto a la configuración de APT para que no tenga que agregar estas opciones difíciles de escribir todo el tiempo. Además, esto sería útil para actualizaciones desatendidas si tiene esta configuración.
Cree un
/etc/apt/apt.conf.d/71debconf
archivo para tener el siguiente contenido:Nota (de Geoff): este cambio sería un cambio global. Si tiene otros paquetes en el sistema que desea obtener actualizaciones desatendidas pero que también se han configurado manualmente, esta no sería la solución adecuada.
fuente
Además de las otras respuestas, es posible que también deba configurar el entorno UCF_FORCE_CONFFNEW = 1 .
Por ejemplo, openssh en debian stretch usa ucf (no debconf)
openssh-server/openssh-7.4p1/debian/openssh-server.postinst
para preguntar sobre el archivo de configuración. (Se puede ver laopenssh-server.postinst
usandodget
contra http://security.debian.org/debian-security/pool/updates/main/o/openssh/openssh_7.4p1-10+deb9u4.dsc )Hemos tenido que usar todos los trucos en esta página además de ser usuarios liberales de la preselección de debconf .
Sin embargo, nos detuvimos
export DEBIAN_FRONTEND=noninteractive
porque queremos saber si nos perdimos algo (eso podría ser importante). Nuestro caso de uso es un operador que comienza la operación. Se espera que la actualización no sea interactiva, pero el operador está presente si algo sale mal y se presenta un cuadro de diálogo. Tu situación puede ser diferente.Pero
export DEBIAN_FRONTEND=noninteractive
es tu proverbial mazo.Solo tenga cuidado: la configuración
-o Dpkg::Options::=--force-confnew
y / oUCF_FORCE_CONFFNEW=1
significa que todos los archivos de configuración de los paquetes instalados vuelven a los anteriores. Por ejemplo, en el caso deopenssh-server
,/etc/ssh/sshd_config
se restablecerá la configuración de fábrica. Y, por ejemploPermitRootLogin=yes
, será eliminado. Pero, por supuesto, no usas eso, ¡así que estarás bien! ;-)fuente