Bash

如何在沒有使用者互動的情況下使用 APT 安裝軟體包?

  • February 13, 2013

我有一個腳本可以下載和替換 Debian 擠壓中的核心標頭檔。

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 並詢問使用者一堆問題。有沒有辦法跳過這個或在適當的時間發送選項卡/輸入來為所有答案選擇“確定”?

根據 Daniel t 的評論,我能夠做到這一點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

引用自:https://serverfault.com/questions/478461