如何使用 Unattended-Upgrades 設定自動化的無頭 Debian 升級

unattended-upgrades 在無頭 Debian 伺服器上執行的操作

unattended-upgradesDebian 的這款軟體包可自動下載並安裝選定的 APT 更新,無需使用者互動式登入。在無頭伺服器上,當沒有桌面會話可用且無需apt upgrade每日運行時,它非常適合用於安全維護。

截至 2026 年 10 月,Debian 13 “trixie” 是 Debian 的穩定版本,其穩定unattended-upgrades軟體包版本為 2.12。該軟體包用於常規軟體包更新,特別是安全性更新和穩定版更新。它不能取代從一個 Debian 主要版本升級到另一個主要版本的單獨、計劃好的升級流程。

實際模型很簡單:APT 的定期機制會刷新軟體包索引,apt-daily-upgrade.service按計劃調用無人值守升級後端,而您的策略則決定允許哪些軟體包來源。 Debian 會將結果記錄在/var/log/unattended-upgrades/.

快速設定清單

目標建議採取的措施
安裝更新程式sudo apt update && sudo apt install unattended-upgrades
啟用日常週期性工作設定APT::Periodic::Update-Package-Lists "1";和APT::Periodic::Unattended-Upgrade "1";
維持地方政策的可持續性將覆蓋設定放在後面的檔案中,例如52unattended-upgrades-local
先測試再依賴它sudo unattended-upgrade --debug --dry-run
確認日程安排檢查apt-daily.timer和apt-daily-upgrade.timer
觀看結果查看/var/log/unattended-upgrades/您的監控警報

1. 安裝無人升級

以管理員身份執行安裝程式:

sudo apt update
sudo apt install unattended-upgrades

重複安裝軟體包是安全的:如果主機已安裝該軟體包,APT 只會報告已安裝。 Debian 將該軟體包描述為用於自動安裝程序,可安裝安全性升級和其他根據策略選擇的更新。

Debian 終端機顯示 apt update 指令執行完畢,隨後安裝了 unattended-upgrades 軟體套件。
以下是安裝無人值守升級的終端機範例。軟體倉庫名稱和​​軟體包數量因 Debian 版本和主機而異。

對於一組鏡像,不要假設每個鏡像都具有相同的預設狀態。某些 Debian 系統已經包含無人值守升級功能;而有些則沒有,且現有設定可能已停用。安裝完成後,請檢查實際配置,而不是假設軟體包的存在就意味著所需的策略已啟動。

2. 啟用定期軟體包清單刷新和無人值守運行

Debian 上游的 README 文件指出,手動設定需要以下兩個 APT 週期性值:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

該值"1"表示該活動符合每日運行的條件。一個實用的本地片段範例是:

sudo nano /etc/apt/apt.conf.d/20auto-upgrades

然後添加以上兩行。您可以使用以下命令查看合併後的 APT 設定:

apt-config dump | grep -E 'APT::Periodic::(Update-Package-Lists|Unattended-Upgrade)'
Nano 編輯器顯示 APT 的定期設置,用於每日軟體包清單更新和無人值守升級。
APT 定期設置,請求每日軟體包清單刷新和無人值守升級運行。

請勿將此理解為任務每天會在午夜準時開始。在基於 systemd 的 Debian 系統中,APT 使用定時器單元和隨機調度機制。對於實際操作,請驗證主機上的實際定時器狀態和下次觸發時間,而不是根據猜測的時鐘時間來設計監控。

3. 定義哪些儲存庫可以自動升級軟體包

密鑰策略位於Unattended-Upgrade::Origins-Pattern舊Allowed-Origins版本下。 Debian 2.12 文件建議建立一個本地 APT 片段,該片段按軟體50unattended-upgrades包檔案排序,例如:

sudo nano /etc/apt/apt.conf.d/52unattended-upgrades-local

這比永久編輯已發布的配置文件要好,因為軟體包升級可能會替換或與供應商管理的配置衝突。在編寫模式之前,請檢查 APT 實際看到的發布元資料:

apt-cache policy

對於大多數無頭伺服器而言,保守的做法是將自動更新限制在 Debian 的常規穩定版和安全版通道。具體模式可能會因您的軟體倉庫佈局、鏡像網站、第三方供應商和版本鎖定規則而異,因此請將apt-cache policy每個環境的官方更新規則作為最終參考。

Nano 編輯器顯示“無人值守升級來源策略”和“自動重新啟動已停用”
策略編輯器範例視圖。將來源與伺服器上 apt-cache 策略報告的儲存庫進行匹配,而不是盲目複製標籤。

值得了解的可選控件

2.12 版本配置支援軟體包黑名單和白名單、自動重新啟動、郵件報告、移除未使用的依賴項、頻寬限制、更新日期限制以及系統日誌輸出。以下幾個選項在遠端伺服器上特別重要:

Unattended-Upgrade::Automatic-Reboot "false";
Unattended-Upgrade::MailReport "only-on-error";
Unattended-Upgrade::SyslogEnable "true";

僅當機器的郵件傳輸功能正常時才配置郵件。如果啟用自動重啟,Debian 的預設行為非常重要:當Automatic-Reboot`is true` 且 ` /var/run/reboot-requiredis exist` 為真時,主機無需確認即可重新啟動。您可以設定Unattended-Upgrade::Automatic-Reboot-Time將重新啟動安排在維護視窗期間。

對於許多生產系統而言,除非服務是冗餘的、已定義維護視窗且重新啟動後的健康檢查是自動化的,否則停用自動重新啟動會更為安全。

4. 驗證 systemd 定時器並執行空測試

在基於 systemd 的普通 Debian 安裝中,檢查 APT 定時器,而不是尋找虛構的unattended-upgrades.timer單元:

systemctl status apt-daily.timer apt-daily-upgrade.timer
systemctl list-timers apt-daily.timer apt-daily-upgrade.timer

apt-daily.timer與例行軟體包下載/索引活動相關,同時apt-daily-upgrade.timer觸發無人升級使用的升級/清理服務路徑。

systemd 終端狀態顯示 apt-daily.timer 和 apt-daily-upgrade.timer 均處於活動和等待狀態。
Systemd 定時器狀態,用於執行 APT 日常工作。所示日期僅供參考;請使用 systemctl list-timers 指令查看主機上的實際下次執行時間。

接下來,在不更改軟體包的情況下測試該策略:

sudo unattended-upgrade --debug --dry-run

這是最有用的預檢步驟,因為它會評估真實的 APT 配置並記錄調試詳情。請檢查輸出結果,查看哪些軟體包會被選中或被封鎖、是否有意外的第三方來源、依賴關係問題以及設定檔提示。

如果試運行未選取任何內容,這在伺服器狀態良好時是完全正常的。請使用指令確認是否存在待處理的更新apt list --upgradable,然後將其來源和政策與您配置的模式進行比較。

5. 監控無人值守升級並主動處理重啟操作

該軟體包將其主要活動日誌和 dpkg 輸出寫入以下位置:

/var/log/unattended-upgrades/unattended-upgrades.log
/var/log/unattended-upgrades/unattended-upgrades-dpkg.log

有用的檢查項目包括:

sudo tail -n 100 /var/log/unattended-upgrades/unattended-upgrades.log
sudo journalctl -u apt-daily-upgrade.service --since "7 days ago"
test -f /var/run/reboot-required && cat /var/run/reboot-required

對於單一家用實驗室機器,定期查看日誌可能就足夠了。但對於企業系統,應將故障傳送到中央監控系統或系統日誌,以免靜默的儲存庫錯誤、檔案系統已滿、依賴項損壞或 dpkg 狀態中斷等問題一直未被發現。

常用伺服器策略的參考設置

設想政策操作說明
以安全為中心的伺服器允許 Debian 安全和穩定版更新;保持手動重新啟動。當停機造成的損失比延遲重新啟動造成的損失更大時,這是一個不錯的預設選項。
無狀態或冗餘節點允許更新和計劃自動重啟配合健康檢查和負載平衡器負荷分配
內核敏感設備只有在有明確記錄的例外處理流程的情況下才使用軟體包黑名單。將漏洞列入黑名單可能會導致已知漏洞無法修復。
伺服器及供應商儲存庫在審核供應商的更新策略之前,請勿允許該供應商來源。首先檢查簽名、支援策略和回滾預期。

故障排除快速參考

計時器已激活,但未安裝任何軟體包。

檢查是否有待處理的升級,它們的儲存庫來源是否符合您的允許策略,以及是否存在黑名單或依賴項約束阻止了選擇。運行此sudo unattended-upgrade --debug --dry-run命令以獲取證據,而不是隨意更改策略。

伺服器等待軟體包配置完成

unattended-upgrades旨在避免因未解決的 dpkg 配置提示而導致的升級。如果某個軟體包重複被阻止,請檢查日誌並決定是否需要手動處理設定檔問題。

複製虛擬機器映像後,更新永遠不會運作。

確認計時器已啟用並處於活動狀態,然後進行檢查apt-config dump。黃金鏡像通常包含與軟體包預設值不同的本地 APT 片段、遮罩或策略覆蓋。

您需要停止自動升級。

使用 Debian 支援的重新配置路徑:

sudo dpkg-reconfigure -plow unattended-upgrades

停用該軟體包並不會取代正常的修補程式管理;它只是將責任交還給您手動或外部的協調流程。

最終驗證清單

  • unattended-upgrades是從可信任的 Debian 軟體倉庫安裝的。
  • 已啟用 APT 定期軟體包清單刷新和無人值守升級值。
  • 本地策略儲存在後續的覆蓋檔案中,例如52unattended-upgrades-local。
  • 已核對允許的來源apt-cache policy。
  • apt-daily.timer並且apt-daily-upgrade.timer活躍。
  • sudo unattended-upgrade --debug --dry-run完成操作,沒有意外選擇或錯誤。
  • 日誌受到監控,重啟策略與您的維護模型相符。
  • Debian 的主要版本升級仍然是一個單獨的計劃流程。

官方參考資料

在驗證特定版本上的行為時,請使用 Debian 官方文件:

留下評論

如何使用 Unattended-Upgrades 設定自動化的無頭 Debian 升級

如何使用 Unattended-Upgrades 設定自動化的無頭 Debian 升級

在無頭 Debian 伺服器上設定無人值守升級,驗證 systemd 計時器,進行安全測試,控制重啟,並監控自動安全更新。

修正 SUSE Linux Enterprise Server 上的 Cockpit Web 控制台無法連線的問題

修正 SUSE Linux Enterprise Server 上的 Cockpit Web 控制台無法連線的問題

透過檢查 HTTPS URL、systemd 套接字、已安裝的軟體包、firewalld 區域、憑證和日誌,對 SUSE Linux Enterprise Server 上的 Cockpit 進行故障排除。

如何在不停機的情況下將 SLES 15 SP5 移轉到 SP6

如何在不停機的情況下將 SLES 15 SP5 移轉到 SP6

了解如何透過經過測試的 SLE HA 滾動升級、逐節點檢查以及明確的單一伺服器停機時間注意事項,在 SLES 15 SP5 到 SP6 遷移期間保持服務的可用性。

如何在 Ubuntu Server 24.04 上設定 Pi-hole DNS-over-HTTPS

如何在 Ubuntu Server 24.04 上設定 Pi-hole DNS-over-HTTPS

在 Ubuntu Server 24.04 上設定 Pi-hole,使其使用 dnscrypt-proxy 進行 DNS-over-HTTPS 連接,然後驗證本地上游伺服器,避免常見的 DNS 衝突。

如何修復 YaST GUI 無法透過 SSH X11 轉送啟動的問題

如何修復 YaST GUI 無法透過 SSH X11 轉送啟動的問題

排查 YaST GUI 透過 SSH X11 轉送導致的故障。測試 DISPLAY,修復已記錄的 Qt XIO 錯誤,檢查 SSH 設置,並在必要時切換到 ncurses。

如何設定本地 SUSE RMT 伺服器(SMT 替代方案)

如何設定本地 SUSE RMT 伺服器(SMT 替代方案)

在 SLES 15 上設定 SUSE RMT,同步 SCC 元數據,鏡像選定的儲存庫,透過 HTTPS 註冊客戶端,並了解從 SMT 遷移的限制。

修正 Pardus Linux 23 上無法偵測到音效卡驅動程式的問題

修正 Pardus Linux 23 上無法偵測到音效卡驅動程式的問題

追蹤 Pardus Linux 23 上缺少的音效卡問題。安全地檢查 ALSA 檢測、核心模組、音訊服務、輸出設定檔、韌體和更新。

修正 Pardus KVM 虛擬機器中顯示解析度卡在 1024x768 的問題

修正 Pardus KVM 虛擬機器中顯示解析度卡在 1024x768 的問題

修正 Pardus KVM 虛擬機器卡在 1024x768 解析度的問題,檢查虛擬 GPU、SPICE 代理、X11 或 Wayland 會話,並正確驗證更高的顯示模式。

如何在 Debian 系統中開機時自動掛載遠端 SSHFS 目錄

如何在 Debian 系統中開機時自動掛載遠端 SSHFS 目錄

使用基於金鑰的 SSH、/etc/fstab、systemd 網路選項、自動掛載和驗證步驟,在 Debian 啟動時自動掛載遠端 SSHFS 目錄。

修正 SLES 系統升級期間出現的「無法分配記憶體」錯誤

修正 SLES 系統升級期間出現的「無法分配記憶體」錯誤

排查 SLES 升級過程中出現的「無法分配記憶體」問題。檢查 RAM、交換空間、OOM 日誌和進程限制,然後在不中斷軟體包事務的情況下進行復原。