如何在无需用户交互的情况下使用 APT 安装软件包?

如何在无需用户交互的情况下使用 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 下载软件包后,会将脚本放入文本 GUI 并向用户询问一系列问题。有没有办法跳过这一步,或者在适当的时间发送 tab/enter 来选择“确定”来回答所有问题?

答案1

根据 Daniel t 的评论,我能够做到这一点DEBIAN_FRONTEND=noninteractive

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

答案2

请注意,我引用的这个答案将不是删除所有对话框,它仍会显示 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

答案3

expect只要您可以识别“适当的时间”(因为输入不会改变),您就可以使用该工具发送任何您想要的内容。

相关内容