更新/升級 Debian 並跳過任何互動
我正在執行一個小腳本來更新和升級一些 Debian 機器,但由於某些“新聞”終端出現了幾個星期,它總是停止。手動升級時,我從某些軟體中看到“全屏”(在下面找到螢幕截圖),它強制按“q”。我不想更改任何軟體,所以我想找到一個解決方案,它允許在升級時跳過每個互動式螢幕。
通常我很好地使用:
sudo apt-get update -y sudo apt-get upgrade -y
在我意識到升級過程被中斷而沒有任何超時後,我也嘗試使用這個文章的解決方案:
sudo DEBIAN_FRONTEND=noninteractive apt-get -y upgrade
但不幸的是,結果相同。有沒有人有解決方案來升級機器而不會中斷?
更新:
首先我剛剛執行:
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