Назад | Перейти на главную страницу

Как установить пакеты с APT без взаимодействия с пользователем?

У меня есть сценарий, который загружает и заменяет заголовки ядра в Debian squeeze.

function fixHeaders(){
    #Replace the kernel headers from OVH with standard kernel headers...
    aptitude -y install linux-image-2.6.32-5-amd64  
    sed s/'GRUB_DEFAULT=0'/'GRUB_DEFAULT=1'/g
    update-grub
    echo "Rebooting the machine. Run this script again after reboot and choose option 2."
    sleep 1
    reboot  
}

Проблема, с которой я столкнулся, заключается в том, что после того, как aptitude загружает пакет, он помещает скрипт в текстовый графический интерфейс и задает пользователю кучу вопросов. Есть ли способ пропустить это или отправить вкладку / ввод в подходящее время, чтобы выбрать «ОК» для всех ответов?

Основываясь на комментарии Даниэля т, я смог сделать это с помощью DEBIAN_FRONTEND=noninteractive

DEBIAN_FRONTEND=noninteractive /usr/bin/apt-get install -y -q --force-yes linux-image-2.6.32-5-amd64 

Помните, что этот ответ, который я цитирую, будет не избавьтесь от всех диалогов, он все равно будет отображать то, что APT / DPKG считает критический. Пожалуй, лучше поэкспериментировать со вторым вариантом + используя readline интерфейс для debconf и подготовить файл ответов.

Цитата из родственный сайт:

Это должно сделать то, что вы просили; после чего задаем вопросы о конфигурации:

$ DEBIAN_PRIORITY=critical
$ export DEBIAN_PRIORITY
$ apt-get upgrade
# Wait a long time.   Should be almost entirely noninteractive.
$ dpkg-reconfigure --default-priority=medium --unseen-only

В качестве альтернативы вы можете попробовать задать все вопросы о конфигурации раньше:

$ apt-get clean
$ cat >> /etc/apt/apt.conf <<EOF
// Pre-configure all packages before
// they are installed.
DPkg::Pre-Install-Pkgs {
    "dpkg-preconfigure --apt --priority=low";
};
EOF
$ apt-get upgrade

Вы можете отправлять все, что хотите, с помощью инструмента expect, учитывая, что вы можете определить «подходящее время» (потому что ввод не меняется).