Comment faire * dpkg-reconfigure dash * comme bash automatiquement

14

Je veux construire une image docker à partir d'une image ubuntu. Il est nécessaire de changer manuellement le sh par défaut de dash en bash. (Parce qu'il nécessite d'installer de nombreux packages rpm qui contiennent des scripts bash)

dpkg-reconfigure dash

Existe-t-il une méthode pour laisser cette action automatiquement sans comportement humain?

Dans mon Dockerfile, il peut être écrit comme (Méthode 1)

RUN dpkg-reconfigure dash

J'ai essayé une autre méthode (méthode 2)

RUN ln -sf bash /bin/sh

Mais, les deux méthodes ne peuvent pas fonctionner.

Daniel YC Lin
la source

Réponses:

3

Vous pouvez faire en sorte que debconf ne demande que des questions élevées ou critiques [1].

Ex:

dpkg-reconfigure -p critical dash

dpkg-reconfigure utilisera la réponse par défaut définie dans le script debconf. Vous pouvez également utiliser debconf-get-selections pour sélectionner une réponse différente pour une installation non interactive [2].

  1. https://wiki.debian.org/debconf
  2. http://blog.nutsfactory.net/2008/03/06/noninteractive-dpkg-installation-on-debian-system/
Rex Tsai
la source
Si vous voulez voir ce qui se passe lors de l'exécution de dpkg-reconfigure DEBCONF_DEBUG = développeur dpkg-reconfigure -p dash critique
Rex Tsai
debconf-get-selections est manquant. Je ne trouve pas dans packages.debian.org/wheezy/all/debconf/filelist .
Daniel YC Lin
10
J'utilise debconf-show dashpour obtenir des options. echo "dash dash/sh boolean false" | debconf-set-selectionset DEBIAN_FRONTEND=noninteractive dpkg-reconfigure dashpour effectuer une configuration non interactive.
Daniel YC Lin
2
@DanielYCLin si vous avez ajouté cela comme sa propre réponse, je voterais pour.
gazarsgo
25

Coller le commentaire de Daniel comme réponse ici car il ne repose pas sur les paramètres par défaut de dpkg-reconfigure.

Pour obtenir des options:

debconf-show dash

Pour définir cette option particulière sur false:

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

et pour reconfigurer réellement le package:

DEBIAN_FRONTEND=noninteractive dpkg-reconfigure dash

Cela a fonctionné pour moi à partir d'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
la source