Shell-Script

更新/升級 Debian 並跳過任何互動

  • December 27, 2016

我正在執行一個小腳本來更新和升級一些 Debian 機器,但由於某些“新聞”終端出現了幾個星期,它總是停止。手動升級時,我從某些軟體中看到“全屏”(在下面找到螢幕截圖),它強制按“q”。我不想更改任何軟體,所以我想找到一個解決方案,它允許在升級時跳過每個互動式螢幕。

通常我很好地使用:

sudo apt-get update -y 
sudo apt-get upgrade -y

在我意識到升級過程被中斷而沒有任何超時後,我也嘗試使用這個文章的解決方案:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y upgrade

但不幸的是,結果相同。有沒有人有解決方案來升級機器而不會中斷?

xorg-server,按q退出

更新

首先我剛剛執行:

DEBIAN_FRONTEND=noninteractive

Secondary 將 /etc/dpkg/dpkg.cfg 文件編輯為:

# dpkg configuration file
#
# This file can contain default options for dpkg.  All command-line
# options are allowed.  Values can be specified by putting them after
# the option, separated by whitespace and/or an `=' sign.
#

# Do not enable debsig-verify by default; since the distribution is not using
# embedded signatures, debsig-verify would reject all packages.
no-debsig

# Log status changes and actions to a file.
log /var/log/dpkg.log

force-confold
force-confdef

最後我執行了:

sudo apt-get upgrade -yq

這在“按 q 退出”方面起到了作用 -太棒了!

我認為它也可以組合執行的命令:

DEBIAN_FRONTEND=noninteractive
sudo apt-get -o Dpkg::Options::="--force-confnew --force-confdef" --force-yes -yq upgrade

不幸的是,現在出現了另一個類似的問題:

在此處輸入圖像描述

不幸的是,嘗試編輯*/etc/apt/listchanges.conf*也沒有成功:

[apt]
frontend=none
email_address=root
confirm=0
save_seen=/var/lib/apt/listchanges.db
which=news

解決方案

我注意到(對不起,如果這對於高級 linux 使用者來說很明顯)當您通過腳本執行命令而不是直接將命令輸入控制台時,bash 的行為有所不同。

總而言之,我的腳本解決方案添加*-yp參數並設置DEBIAN_FRONTEND就足夠了。為了安全起見,我也會編輯/etc/dpkg/dpkg.cfg*文件。

#!/bin/bash
DEBIAN_FRONTEND=noninteractive
export DEBIAN_FRONTEND
apt-get -yq update
apt-get -yq upgrade

你應該設置DEBIAN_FRONTEND=noninteractive,這將阻止 debconf 提示出現。

之後,將 force-confold和添加force-confdef到您的/etc/dpkg/dpkg.cfg文件中。然後使用該-y選項

sudo apt-get -y update && sudo apt-get -y upgrade

或使用此命令

apt-get -o Dpkg::Options::="--force-confnew --force-confdef" --force-yes -y upgrade

如果它不起作用,請嘗試

apt-get -o Dpkg::Options::="--force-confnew" --force-yes -y upgrade

更新資訊由 給出apt-listchanges。如果您不想看到這些詳細資訊,您可以完全刪除該軟體包。否則,您可以使用/etc/apt/listchanges.conf;配置它 在你的情況下,

frontend=mail

或者

frontend=none

將避免安裝被中斷。

apt-listchanges在這些情況下應該做正確的事情,所以應該可以用其他方式修復它,以便它仍然在互動模式下顯示更新細節。特別是你可以嘗試將-q選項添加到apt-get。)

請注意,只需執行

DEBIAN_FRONTEND=noninteractive

不會改變任何東西,您需要確保它最終出現在apt-get流程的環境中:

export DEBIAN_FRONTEND

引用自:https://unix.stackexchange.com/questions/332909