web-dev-qa-db-ja.com

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にスローし、ユーザーにたくさんの質問をすることです。これをスキップするか、タブを送信するか、適切なタイミングでEnterキーを押してすべての回答に対して[OK]を選択する方法はありますか?

8
에이바

ダニエルtのコメントに基づいて、私はDEBIAN_FRONTEND=noninteractive

DEBIAN_FRONTEND=noninteractive /usr/bin/apt-get install -y -q --force-yes linux-image-2.6.32-5-AMD64 
8
에이바

私が引用するこの回答はすべての対話を取り除きますないことに注意してください、それでもAPT/DPKGが見なすものを表示しますクリティカル。おそらく、2番目のオプションを試して+ readlinedebconfフロントエンドを使用して、応答ファイルを準備するのが最善です。

姉妹サイト からの引用:

これはあなたが尋ねたことをするはずです。後で設定の質問をする:

$ 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
4
fuero

「適切な時間」を特定できれば、_expectツールを使用して、何でも送信できます(入力が変化しないため)。

0
Hauke Laging