Как попросить 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
}