12

Я хочу создать образ докера из образа Ubuntu. Требуется изменить значение по умолчанию sh с dash на bash вручную. (Потому что это требует установки многих пакетов RPM, которые содержат сценарии Bash)

dpkg-reconfigure dash

Есть ли способ, позволяющий автоматически выполнять это действие без человеческого поведения?

В моем Dockerfile это может быть записано как (Метод 1)

RUN dpkg-reconfigure dash

Я пробовал другой метод (метод 2)

RUN ln -sf bash /bin/sh

Но оба метода не могут работать.

2 ответа2

19

Вставка комментария Даниэля в качестве ответа здесь, поскольку он не зависит от настроек по умолчанию из dpkg-reconfigure .

Чтобы получить варианты:

debconf-show dash

Чтобы установить для этого параметра значение false:

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

и фактически перенастроить пакет:

DEBIAN_FRONTEND=noninteractive dpkg-reconfigure dash

Это сработало для меня из 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
3

Вы можете сделать debconf только для вопросов с высоким или критическим уровнем [1].

Пример:

dpkg-reconfigure -p critical dash

dpkg-reconfigure будет использовать ответ по умолчанию, определенный в сценарии debconf. Вы также можете использовать debconf-get-selections, чтобы подобрать другой ответ для неинтерактивной установки [2].

  1. https://wiki.debian.org/debconf
  2. http://blog.nutsfactory.net/2008/03/06/noninteractive-dpkg-installation-on-debian-system/

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .