ฉันจะป้องกัน apt-get / aptitude จากการแสดงไดอะล็อกระหว่างการติดตั้งได้อย่างไร?


28

ฉันกำลังพยายามสร้าง Ansible Playbook เพื่อปรับใช้เซิร์ฟเวอร์ Ubuntu 12.04 บางตัวใน Linode แต่ปัญหาของฉันดูเหมือนจะเป็น Ubuntu เมื่อฉันเรียกใช้ชุดของ apt-get หรือ aptitude ที่แตกต่างกันฉันจะได้รับกล่องโต้ตอบต่อไปนี้ที่ฉันต้องตอบเสมอ

กล่องโต้ตอบการกำหนดค่าแพคเกจ

ฉันต้องการคำตอบนี้จากบรรทัดคำสั่งเพื่อไม่ให้ขัดจังหวะการปรับใช้อัตโนมัติ ความคิดใด ๆ

คำสั่งปัจจุบันของฉันอยู่ด้านล่าง โปรดทราบว่าฉันกำลังพยายามตั้งค่า DEBIAN_FRONTEND:

#!/bin/bash

echo 'DEBIAN_FRONTEND="noninteractive"' >> /etc/profile
echo 'DEBIAN_FRONTEND="noninteractive"' >> ~/.profile

source /etc/profile
source ~/.profile

# This next line is the one that pops up the dialog
sudo aptitude -y install iptables-persistent

# Need this to fix an issue with the package post-install (this works fine.)
sudo sed \
    -i 's/\(modprobe -q ip6\?table_filter\)/\1 || true/g' \
    /var/lib/dpkg/info/iptables-persistent.postinst; \
sudo aptitude install iptables-persistent

คำตอบ:


34

ลองใช้debconf-set-selectionsเพื่อตั้งค่าก่อนที่จะติดตั้งแพคเกจ:

echo iptables-persistent iptables-persistent/autosave_v4 boolean true | sudo debconf-set-selections
echo iptables-persistent iptables-persistent/autosave_v6 boolean true | sudo debconf-set-selections

หรือผ่าน ansible

- name: prevent the iptables-peristent install dialog
  debconf: name=iptables-persistent question={{ item }} vtype=boolean value=true
  with_items:
  - iptables-persistent/autosave_v4
  - iptables-persistent/autosave_v6
- name: install iptables-persistent
  apt: name=iptables-persistent

@Braiam ฉันเพิ่ม sudo
Lorin Hochstein

คุณอาจต้องการเพิ่ม iptables-persistent iptables-persistent/autosave_v4 boolean trueเช่นกัน
Braiam

@Braiam ได้เพิ่ม v4
Lorin Hochstein

0

-qที่คุณพลาด ลอง:

sudo DEBIAN_FRONTEND=noninteractive aptitude install -y -q iptables-persistent

1
ที่ไม่ได้ทำงานใน 12.04 :( ฉันแล้วต้องทำ fixup อื่น ๆ ดังนั้นฉันสงสัยว่าแพคเกจเพียงละเว้นตัวแปรสภาพแวดล้อม.
ไบรอัน Lyttle

1
ฉันทดสอบในรูปแบบ 12.04 เดสก์ท็อป VM ก่อนโพสต์ ดังนั้นอาจเกี่ยวข้องกับเซิร์ฟเวอร์ 12.04 ของคุณหรือ
Germar

Debian แสดงข้อความเดียวกัน ...
Braiam

0

ฉันคิดว่าคุณควรพิจารณาทำฐานข้อมูล debconf เพื่อให้กระบวนการทั้งหมดเป็นไปโดยอัตโนมัติ นี้เป็นกระบวนการที่ nonintuitive และต้องทำงานมากเช่น repackaging ไฟล์ deb ของคุณเองเพื่อให้การทำงานและถูกเรียกว่า"debconf preseeding"

มีหลายตัวอย่างในวิกิพีเดีย Debianเกี่ยวกับวิธีการทำสิ่งนี้:

ขึ้นอยู่กับเวลาและสถานการณ์ที่คุณจะเลือกหนึ่ง (นั่นเป็นสาเหตุที่ฉันไม่ได้ลงรายละเอียด) ใช้อันที่ดูเหมือนว่ามีประโยชน์และติดกับมันจนกว่าจะสิ้นสุด

หากคุณพบปัญหาให้ถามคำถามอีกข้อหนึ่งโดยให้รายละเอียดสิ่งที่คุณพยายามจะทำและวิธีการที่คุณวางแผนจะทำ


0

การแก้ไข / การปรับเล็กน้อยสำหรับ @ lorin-hochstein ของคำตอบที่ใช้ Ansible สำหรับการติดตั้ง iptables แบบไม่โต้ตอบซึ่งงานนั้นต้องการ sudo-privilges เพื่อให้ทำงานได้สำเร็จ (เพิ่มbecome: yesบรรทัด): ## Prevent iptables-persistent pckgs install dialog (debconf-set-selections) - name: prevent the iptables-peristent install dialog become: yes debconf: name=iptables-persistent question={{ item }} vtype=boolean value=true with_items: - iptables-persistent/autosave_v4 - iptables-persistent/autosave_v6 - name: install iptables-persistent apt: name=iptables-persistent


0

หากสร้างภาพนักเทียบท่า:

RUN echo iptables-persistent iptables-persistent/autosave_v4 boolean true | debconf-set-selections \
  && echo iptables-persistent iptables-persistent/autosave_v6 boolean true | debconf-set-selections
RUN apt-get install -y iptables-persistent
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.