Как попросить apt-get пропустить любые интерактивные шаги после установки?
У меня есть скрипт сборки сервера, который использует apt-get для установки пакетов. Затем он непосредственно помещает предварительно записанные файлы конфигурации, поэтому интерактивное диалоговое окно настройки после установки в таких пакетах, как postfix, не требуется. Как мне пропустить этот этап установки? Это создает часть ручного вмешательства, которого я бы предпочел избежать.
Я знаю о -qq
опция, но man-страница предупреждает против ее использования без указания модификатора бездействия. Я хочу выполнить действие, я просто хочу подавить определенную его часть.
3 ответа
Вы можете сделать пару вещей, чтобы избежать этого. Настройка DEBIAN_FRONTEND
переменная к noninteractive
и используя -y
флаг. Например:
export DEBIAN_FRONTEND=noninteractive
apt-get -yq install [packagename]
Если вам нужно установить его через sudo, используйте:
sudo DEBIAN_FRONTEND=noninteractive apt-get -yq install [packagename]
Я нашел эту настройку-yqq
иDEBIAN_FRONTEND=noninteractive
не работает в некоторых случаях, когда в конце зависает с
Restarting the system to load the new kernel will not be handled automatically, so you should consider
rebooting. [Return]
Оно не выйдет до тех пор, пока вы не нажмете кнопкуenter
ключ.
Мое решение - сделать все, что предлагали все остальные, но также сyes
по трубопроводуapt-get
следующее
yes | sudo DEBIAN_FRONTEND=noninteractive apt-get -yqq purge 'my-package'
Вы можете переопределитьapt
в качестве функции в ваших bash-скриптах, если вы собираетесь регулярно запускать эти команды в автоматических стеках, чтобы вам не приходилось запоминать все:
## apt ##
function apt {
export DEBIAN_FRONTEND=noninteractive
export DEBIAN_PRIORITY=critical
export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
command /usr/bin/apt --yes --quiet --option Dpkg::Options::=--force-confold --option Dpkg::Options::=--force-confdef "$@"
}
Или еще лучше просто переименуйте его в лайкmy_apt
или что-то еще.
А затем его можно использовать в дочерних функциях, вот несколько примеров, которые мы используем в SlickStack:
## ss_apt_update ##
function ss_apt_update {
apt update > /dev/null 2>&1
}
## ss_apt_upgrade ##
function ss_apt_upgrade {
apt upgrade > /dev/null 2>&1
}
## ss_apt_full_upgrade ##
function ss_apt_full_upgrade {
apt full-upgrade > /dev/null 2>&1
}