如何自动将* dpkg-重新配置破折号*作为bash


15

我想从ubuntu镜像构建一个docker镜像。需要将默认的sh从破折号手动更改为bash。(因为它需要安装许多包含bash脚本的rpm软件包)

dpkg-reconfigure dash

有没有什么方法可以自动执行此操作而无需人为行为?

在我的Dockerfile中,它可能写为(方法1)

RUN dpkg-reconfigure dash

我尝试了另一种方法(方法2)

RUN ln -sf bash /bin/sh

但是,两种方法都行不通。

Answers:


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-reconfigure DEBCONF_DEBUG =开发人员dpkg-reconfigure -p关键破折号时发生了什么
Rex Tsai

debconf-get-selections丢失。我在packages.debian.org/wheezy/all/debconf/filelist中找不到。
Daniel YC Lin

11
debconf-show dash用来获取选项。echo "dash dash/sh boolean false" | debconf-set-selectionsDEBIAN_FRONTEND=noninteractive dpkg-reconfigure dash进行非交互式配置。
Daniel YC Lin

2
@DanielYCLin如果您将其添加为自己的答案,我会投票赞成。
gazarsgo 2014年

26

将Daniel的评论粘贴为答案,因为它不依赖的默认设置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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.