Cómo hacer que apt-get acepte nuevos archivos de configuración en una instalación desatendida de debian de Repo

21

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/ aptitudepara que acepte los nuevos archivos de configuración?

Básicamente necesito un apt/ aptitudeequivalente de dpkg --force-confnew

Necesito responder la siguiente pregunta planteada mientras apt-getse 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 sudocontraseñ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

Raman
fuente

Respuestas:

22

Puede pasar dpkgparámetros a apt-getgustar esto

apt-get -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confnew install pkgname1 pkgname2 ...

Con --force-confdefsi 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.

sudono le pedirá una contraseña si niega la opción de autenticación para el usuario o agrega la NOPASSWDetiqueta en la entrada específica. p.ej

someuser ALL = NOPASSWD: /usr/bin/apt-get
forcefsck
fuente
7

Puedes probar lo siguiente:

export DEBIAN_FRONTEND=noninteractive
apt-get -q -y install whatever-2

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 sudoinvocaciones sin contraseña .

sr_
fuente
3

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/71debconfarchivo para tener el siguiente contenido:

Dpkg::Options {
  "--force-confnew";
};

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.

Te Ri
fuente
Esta puede ser una buena opción, sin embargo, es importante tener en cuenta que esto sería un cambio GLOBAL. Si tiene otros paquetes en el sistema que desea obtener actualizaciones desatendidas pero que también ha configurado, esta no sería la solución adecuada.
Geoff
2

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.postinstpara preguntar sobre el archivo de configuración. (Se puede ver la openssh-server.postinstusando dgetcontra 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=noninteractiveporque 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=noninteractivees tu proverbial mazo.

Solo tenga cuidado: la configuración -o Dpkg::Options::=--force-confnewy / o UCF_FORCE_CONFFNEW=1significa que todos los archivos de configuración de los paquetes instalados vuelven a los anteriores. Por ejemplo, en el caso de openssh-server, /etc/ssh/sshd_configse restablecerá la configuración de fábrica. Y, por ejemplo PermitRootLogin=yes, será eliminado. Pero, por supuesto, no usas eso, ¡así que estarás bien! ;-)

Peter V. Mørch
fuente