Как сделать * dpkg-перенастроить dash * как bash автоматически


14

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

dpkg-reconfigure dash

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

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

RUN dpkg-reconfigure dash

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

RUN ln -sf bash /bin/sh

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

Ответы:


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/

Если вы хотите посмотреть, что происходит при запуске dpkg -configure DEBCONF_DEBUG = developer dpkg -configure -p критической черты
Рекс Цай

debconf-get-selections отсутствует. Я не могу найти в packages.debian.org/wheezy/all/debconf/filelist .
Даниэль YC Лин

10
Я использую, debconf-show dashчтобы получить варианты. echo "dash dash/sh boolean false" | debconf-set-selectionsи DEBIAN_FRONTEND=noninteractive dpkg-reconfigure dashсделать неинтерактивную настройку.
Даниэль YC Лин

2
@DanielYCLin, если бы вы добавили это в качестве своего собственного ответа, я бы высказался.
Газарсго

25

Вставка комментария Даниэля в качестве ответа здесь, поскольку он не зависит от настроек по умолчанию от 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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.