So wird * dpkg-reconfigure dash * als Bash automatisch ausgeführt


14

Ich möchte ein Docker-Image aus einem Ubuntu-Image erstellen. Es ist erforderlich, die Standardeinstellung sh manuell von dash auf bash zu ändern. (Da viele RPM-Pakete installiert werden müssen, die Bash-Skripte enthalten)

dpkg-reconfigure dash

Gibt es eine Methode, um diese Aktion automatisch ohne menschliches Verhalten ausführen zu lassen?

In meinem Dockerfile steht vielleicht (Methode 1)

RUN dpkg-reconfigure dash

Ich habe eine andere Methode ausprobiert (Methode 2)

RUN ln -sf bash /bin/sh

Aber beide Methoden können nicht funktionieren.

Antworten:


3

Sie können Debconf nur für hohe oder kritische Fragen stellen lassen [1].

Ex:

dpkg-reconfigure -p critical dash

dpkg-reconfigure verwendet die im debconf-Skript definierte Standardantwort. Sie können auch debconf-get-selections verwenden, um andere Antworten für nicht interaktive Installationen zu erhalten [2].

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

Wenn Sie sehen möchten, was beim Ausführen von dpkg-reconfigure DEBCONF_DEBUG = Entwickler dpkg-reconfigure -p kritischer Gedankenstrich
Rex Tsai

debconf-get-selections fehlt. Ich kann nicht in packages.debian.org/wheezy/all/debconf/filelist finden .
Daniel YC Lin

10
Ich benutze debconf-show dash, um Optionen zu bekommen. echo "dash dash/sh boolean false" | debconf-set-selectionsund DEBIAN_FRONTEND=noninteractive dpkg-reconfigure dashnicht interaktive Konfiguration.
Daniel YC Lin

2
@DanielYCLin Wenn du das als eigene Antwort hinzufügst, würde ich es befürworten.
Gazarsgo

24

Füge hier Daniels Kommentar als Antwort ein, da er nicht auf den Standardeinstellungen von basiert dpkg-reconfigure.

Optionen erhalten:

debconf-show dash

So legen Sie diese bestimmte Option fest auf false:

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

und um das Paket tatsächlich neu zu konfigurieren:

DEBIAN_FRONTEND=noninteractive dpkg-reconfigure dash

Das hat bei mir aus einem Dockerfile geklappt:

# 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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.