如何将 *dpkg-reconfigure dash* 自动配置为 bash

Dan*_*Lin 18 ubuntu

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

dpkg-reconfigure dash
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以让这个动作在没有人类行为的情况下自动进行?

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

RUN dpkg-reconfigure dash
Run Code Online (Sandbox Code Playgroud)

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

RUN ln -sf bash /bin/sh
Run Code Online (Sandbox Code Playgroud)

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

mga*_*lgs 33

在这里粘贴 Daniel 的评论作为答案,因为它不依赖于dpkg-reconfigure.

获取选项:

debconf-show dash
Run Code Online (Sandbox Code Playgroud)

将此特定选项设置为false

echo "dash dash/sh boolean false" | debconf-set-selections
Run Code Online (Sandbox Code Playgroud)

并实际重新配置包:

DEBIAN_FRONTEND=noninteractive dpkg-reconfigure dash
Run Code Online (Sandbox Code Playgroud)

这从 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
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以使 debconf 只询问高级或关键问题[1]。

前任:

dpkg-reconfigure -p critical dash
Run Code Online (Sandbox Code Playgroud)

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/

  • 我使用“debconf-show dash”来获取选项。`echo "dash dash/sh boolean false" | debconf-set-selections` 和 `DEBIAN_FRONTEND=noninteractive dpkg-reconfigure dash` 进行非交互式配置。 (16认同)
  • @DanielYCLin,如果您将其添加为自己的答案,我会投票。 (2认同)