Bagaimana saya bisa mencegah apt-get / aptitude dari menampilkan dialog selama instalasi?

28

Saya mencoba membuat Ansible Playbook untuk menggunakan beberapa server Ubuntu 12.04 di Linode, tetapi masalah saya sepertinya adalah masalah Ubuntu. Ketika saya menjalankan kombinasi apt-get atau aptitude yang berbeda, saya selalu mendapatkan dialog berikut yang harus saya tanggapi.

Dialog konfigurasi paket

Saya ingin ini dijawab dari baris perintah sehingga tidak mengganggu penyebaran otomatis. Ada ide?

Perintah saya saat ini di bawah. Perhatikan bahwa saya mencoba menyetel 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
Brian Lyttle
sumber

Jawaban:

34

Coba gunakan debconf-set-selectionsuntuk mengatur nilai sebelum menginstal paket:

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

Atau, via 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
Lorin Hochstein
sumber
@Braiam I menambahkan sudo
Lorin Hochstein
Anda mungkin ingin menambahkan iptables-persistent iptables-persistent/autosave_v4 boolean truejuga.
Braiam
@Braiam Ditambahkan v4
Lorin Hochstein
0

Kamu melewatkan -q. Mencoba:

sudo DEBIAN_FRONTEND=noninteractive aptitude install -y -q iptables-persistent
Germar
sumber
1
Itu tidak bekerja pada 12,04 :( Saya sudah harus melakukan perbaikan lainnya, jadi saya ingin tahu apakah paket itu hanya mengabaikan variabel lingkungan.
Brian Lyttle
1
Saya menguji ini dalam vm 12,04-desktop sebelum memposting. Jadi mungkin itu terkait dengan server 12.04 Anda?
Germar
Debian menunjukkan pesan yang sama ...
Braiam
0

Saya pikir Anda harus mempertimbangkan untuk melakukan database debconf untuk mengotomatisasi semua proses. Ini adalah proses yang tidak intuitif dan membutuhkan banyak pekerjaan, seperti mengemas ulang file deb Anda sendiri, untuk membuatnya berfungsi dan disebut "debconf preseeding" .

Ada beberapa contoh di wiki Debian tentang cara melakukan ini:

Tergantung pada waktu dan keadaan Anda akan memilih satu (itu sebabnya saya tidak masuk ke rincian). Ambil satu yang tampaknya berguna, dan tetap gunakan sampai akhir.

Jika Anda mengalami masalah, tanyakan pertanyaan lain yang merinci apa yang Anda coba lakukan, dan bagaimana Anda berencana melakukannya.

Braiam
sumber
0

Perbaikan / penyesuaian minor ke @ lorin-hochstein Jawaban berbasis-mungkin untuk menginstal iptables-persisten yang tidak interaktif di mana tugas membutuhkan hak akses sudo agar berhasil (menambahkan become: yesbaris): ## 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

OpenITeX
sumber
0

Jika membangun gambar Docker:

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
Stephane
sumber