Como fazer * dpkg-reconfigure dash * como bash automaticamente

14

Eu quero criar uma imagem do docker a partir da imagem do ubuntu. É necessário alterar manualmente o sh do traço para o bash manualmente. (Porque é necessário instalar muitos pacotes rpm que contêm scripts bash)

dpkg-reconfigure dash

Existe algum método para deixar essa ação automaticamente sem o comportamento humano?

No meu Dockerfile, talvez esteja escrito como (Método 1)

RUN dpkg-reconfigure dash

Eu tentei outro método (método 2)

RUN ln -sf bash /bin/sh

Mas, ambos os métodos não podem funcionar.

Daniel YC Lin
fonte

Respostas:

3

Você pode fazer com que o debconf apenas faça perguntas altas ou críticas [1].

Ex:

dpkg-reconfigure -p critical dash

O dpkg-reconfigure usará a resposta padrão definida no script debconf. Você também pode usar o debconf-get-selections para obter respostas diferentes para instalação não interativa [2].

  1. https://wiki.debian.org/debconf
  2. http://blog.nutsfactory.net/2008/03/06/noninteractive-dpkg-installation-on-debian-system/
Rex Tsai
fonte
Se você quiser ver o que está acontecendo quando runing dpkg-reconfigure DEBCONF_DEBUG = traço crítico desenvolvedor dpkg-reconfigure -p
Rex Tsai
O debconf-get-selections está ausente. Não consigo encontrar em packages.debian.org/wheezy/all/debconf/filelist .
Daniel YC Lin
10
Eu uso debconf-show dashpara obter opções. echo "dash dash/sh boolean false" | debconf-set-selectionse DEBIAN_FRONTEND=noninteractive dpkg-reconfigure dashpara fazer configurações não interativas.
Daniel YC Lin
2
@DanielYCLin, se você adicionou isso como sua própria resposta, eu o aprovaria.
gazarsgo
25

Cole o comentário de Daniel como resposta aqui, pois ele não depende das configurações padrão de dpkg-reconfigure.

Para obter opções:

debconf-show dash

Para definir esta opção específica para false:

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

e para realmente reconfigurar o pacote:

DEBIAN_FRONTEND=noninteractive dpkg-reconfigure dash

Isso funcionou para mim em um 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
fonte