Cómo hacer * dpkg-reconfigure dash * como bash automáticamente

14

Quiero construir una imagen acoplable a partir de la imagen de ubuntu. Es necesario cambiar el sh predeterminado de guión a bash manualmente. (Debido a que requiere instalar muchos paquetes rpm que contienen scripts bash)

dpkg-reconfigure dash

¿Hay algún método para permitir esta acción automáticamente sin el comportamiento humano?

En mi Dockerfile puede estar escrito como (Método 1)

RUN dpkg-reconfigure dash

He probado otro método (Método 2)

RUN ln -sf bash /bin/sh

Pero, ambos métodos no pueden funcionar.

Daniel YC Lin
fuente

Respuestas:

3

Puede hacer que debconf solo pida preguntas altas o críticas [1].

Ex:

dpkg-reconfigure -p critical dash

dpkg-reconfigure usará la respuesta predeterminada definida en el script debconf. También puede usar debconf-get-selections para obtener una respuesta diferente para la instalación no interactiva [2].

  1. https://wiki.debian.org/debconf
  2. http://blog.nutsfactory.net/2008/03/06/noninteractive-dpkg-installation-on-debian-system/
Rex Tsai
fuente
Si desea ver qué sucede al ejecutar dpkg-reconfigure DEBCONF_DEBUG = desarrollador dpkg-reconfigure -p guión crítico
Rex Tsai
Falta debconf-get-selections. No puedo encontrarlo en packages.debian.org/wheezy/all/debconf/filelist .
Daniel YC Lin
10
Yo uso debconf-show dashpara obtener opciones. echo "dash dash/sh boolean false" | debconf-set-selectionsy DEBIAN_FRONTEND=noninteractive dpkg-reconfigure dashpara hacer configuraciones no interactivas.
Daniel YC Lin
2
@DanielYCLin si agregaste eso como su propia respuesta, lo votaría.
gazarsgo
25

Pegar el comentario de Daniel como respuesta aquí ya que no se basa en la configuración predeterminada de dpkg-reconfigure.

Para obtener opciones:

debconf-show dash

Para configurar esta opción en particular para false:

echo "dash dash/sh boolean false" | debconf-set-selections

y para reconfigurar realmente el paquete:

DEBIAN_FRONTEND=noninteractive dpkg-reconfigure dash

Esto funcionó para mí desde un Dockerfile:

# make /bin/sh symlink to bash instead of dash:
RUN echo "dash dash/sh boolean false" | debconf-set-selections
RUN DEBIAN_FRONTEND=noninteractive dpkg-reconfigure dash
mgalgs
fuente