Я пишу скрипт оболочки для установки всех необходимых приложений на мой Ubuntu PC за один раз (пока я могу прогуляться или заняться чем-то еще). Для большинства приложений добавление -y
в конец оператора apt-get install
хорошо сработало, чтобы избежать необходимости какого-либо участия пользователя. Мой скрипт выглядит примерно так:
#!/bin/bash
add-apt-repository ppa:webupd8team/sublime-text-3 -y
apt-get update -y
apt-get upgrade -y
apt-get install synaptic -y
apt-get install wireshark -y
Хотя мне больше не нужно беспокоиться о Do you want to continue? [Y/n]
или Press [ENTER] to continue or ctrl-c to cancel adding it
, проблема заключается в wireshark
, который требует ответа на интерактивную подсказку, как показано ниже:
Как мне избежать этого обязательного вмешательства?
решение1
Настройтеdebconfбаза данных:
echo "wireshark-common wireshark-common/install-setuid boolean true" | sudo debconf-set-selections
Затем установитеWireshark:
sudo DEBIAN_FRONTEND=noninteractive apt-get -y install wireshark
Вы также можете захотеть подавить выводapt-get. В таком случае:
sudo DEBIAN_FRONTEND=noninteractive apt-get -y install wireshark > /dev/null
решение2
Система apt/dpkg может обеспечивать неконтролируемую или неинтерактивную установку.
Это включает в себя установку DEBIAN_FRONTEND
переменной noninteractive
и использование -y
флага. Например:
export DEBIAN_FRONTEND=noninteractive
apt-get -y install [packagename]
Если вы получаете ошибки, вам, возможно, придется установить опцию, q
чтобы более убедительно доказать, dpkg
что вы действительно выполняете неинтерактивную установку: DEBIAN_FRONTEND=noninteractive apt-get -yq install [packagename]
.
В некоторых случаях может быть проще следовать подсказкам для некоторых пакетов, которые вы установите позже в том же процессе скрипта/оболочки. В этом случае вам может потребоваться отменить экспорт переменной DEBIAN_FRONTEND
:
unset DEBIAN_FRONTEND
Для предварительной настройки параметров конфигурации полезно иметь debconf-utils
установленный , который позволит выполнить команду debconf-get-selections
:
sudo apt-get install debconf-utils