Как попросить 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
}
Другие вопросы по тегам