วิธีทำ * dpkg-reconfigure dash * เป็น bash โดยอัตโนมัติ


15

ฉันต้องการสร้างภาพนักเทียบท่าจากภาพอูบุนตู จำเป็นต้องเปลี่ยนค่าเริ่มต้น sh จากเส้นประเป็นทุบตีด้วยตนเอง (เพราะต้องการติดตั้งแพ็คเกจ rpm จำนวนมากซึ่งมี bash script)

dpkg-reconfigure dash

มีวิธีใดที่จะให้การกระทำนี้โดยอัตโนมัติโดยไม่มีพฤติกรรมของมนุษย์?

ใน Dockerfile ของฉันมันอาจจะเขียนเป็น (วิธีที่ 1)

RUN dpkg-reconfigure dash

ฉันลองวิธีอื่นแล้ว (วิธีที่ 2)

RUN ln -sf bash /bin/sh

แต่วิธีการทั้งสองไม่สามารถทำงานได้

คำตอบ:


3

คุณสามารถทำให้ debconf ถามคำถามที่มีความสำคัญสูงเท่านั้น [1]

Ex:

dpkg-reconfigure -p critical dash

dpkg-reconfigure จะใช้คำตอบเริ่มต้นที่กำหนดไว้ในสคริปต์ debconf คุณยังสามารถใช้ตัวเลือก debconf-get เพื่อเลือกคำตอบที่แตกต่างกันสำหรับการติดตั้งแบบไม่โต้ตอบ [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 dash critical
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-selectionsและDEBIAN_FRONTEND=noninteractive dpkg-reconfigure dashทำการกำหนดค่าแบบไม่โต้ตอบ
Daniel YC Lin

2
@DanielYCLin ถ้าคุณเพิ่มนั่นเป็นคำตอบของตัวเองฉันจะ upvote มัน
gazarsgo

26

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.