Як я можу запобігти показ apt-get / podobness під час встановлення діалогових вікон?


28

Я намагаюся створити Ansible Playbook для розгортання деяких серверів Ubuntu 12.04 на Linode, але моя проблема, здається, є Ubuntu. Коли я запускаю різні комбінації apt-get або здатності, я завжди отримую наступне діалогове вікно, на яке мені потрібно відповісти.

Діалогове вікно конфігурації пакета

Я хотів би, щоб на це відповіли командний рядок, щоб він не переривав автоматичне розгортання. Будь-які ідеї?

Мої поточні команди нижче. Зауважте, що я намагаюся встановити 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 iptables-persistent/autosave_v4 boolean true.
Брайам

@Braiam Додано v4
Lorin Hochstein

0

Ви пропустили -q. Спробуйте:

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

1
Це не спрацювало 12.04 :( мені вже доводиться робити інше виправлення, тому мені цікаво, чи пакет просто ігнорує змінну середовища.
Brian Lyttle

1
Я протестував це в 12.04 на робочому столі vm перед публікацією. То, можливо, це пов’язано з вашим 12.04-сервером?
Гермар

Debian показує те саме повідомлення ...
Braiam

0

Я думаю, вам слід розглянути можливість створення бази даних debconf для автоматизації всіх процесів. Це неінтуїтивний процес і вимагає багато роботи, як перепакування власних файлів деб, щоб він працював і називається "попередньою попередньою програмою" .

У вікі Debian є кілька прикладів, як це зробити:

Залежно від часу та обставин ви оберете один (саме тому я не вдавався в деталі). Візьміть той, який здається корисним, і дотримуйтесь його до кінця.

Якщо у вас виникли проблеми, поставте ще одне питання, в якому детально описуєте, що ви намагаєтеся зробити, і як ви плануєте це зробити.


0

Незначне виправлення / коригування для відповіді @ lorin-hochstein на неінтерактивну установку стійких 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

Якщо будуєте зображення 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.