通过自动升级保持 Ubuntu 最新

你是否正在尋找一種方法來保持你的Ubuntu系統處於最佳狀態?你很幸運!了解如何通過自動升級保持Ubuntu系統的最新狀態。

在這個教程中,你將學會如何在你的機器上設置自動升級,配置以完全控制哪些軟件包進行升級。

敬請期待,讓自動升級保持你的Ubuntu系統始終保持最新狀態!

需求

此教程包括實際演示。完成本教程,你需要以下內容:

  • 一個Ubuntu系統 – 本教程使用Ubuntu 20.04,但你可以使用任何版本的Ubuntu,包括Ubuntu桌面版、Ubuntu服務器版或Kubuntu。
  • A user account with sudo privileges.

在Ubuntu中安裝自動升級

確保你能夠在最新更新推出時及時獲得的最快方法之一就是使用自動升級。本教程將使用apt軟件包管理器在你的機器上安裝自動升級。

1. 打開終端機,執行以下apt update命令以更新系統的套件索引。

sudo apt update -y
Updating your system’s package index

2. 接下來,執行以下apt install命令安裝unattended-upgrades套件。

sudo apt install unattended-upgrades -y
Installing the unattended-upgrade package

3. 安裝完成後,執行以下systemctl命令啟動並啟用unattended-upgrades服務systemd單元。此命令確保服務在啟動時自動運行,並在重新啟動後保持持久。

# 啟動unattended-upgrades服務
sudo systemctl start unattended-upgrades
# 啟用unattended-upgrades在啟動時啟動
sudo systemctl enable unattended-upgrades

4. 最後,執行以下命令檢查unattended-upgrades服務單元的狀態,確保它正常運行。

sudo systemctl status unattended-upgrades.service
Checking the status of the unattended-upgrades service unit

配置自動升級

安裝並啟用自動升級應該能夠正常獲取機器的自動更新。但如果有你不希望獲取常量更新的套件,配置自動升級就是解決方法。

要配置自动升级,请在您首选的文本编辑器中打开配置文件(/etc/apt/apt.conf.d/50unattended-upgrades)。

您将看到类似于以下配置。每个选项前面的 // 符号表示该选项已被注释掉,自动升级服务会忽略这些选项。

Opening the Automatic Upgrade configuration file

阅读下文,了解如何对哪些软件包进行常规更新获得完全控制。

忽略特定软件包

如果您可以将其列入黑名单,为什么要让其他软件包更新呢?自动升级配置文件可以让您忽略特定软件包。无论您是完全忽略软件包还是将其推迟到稍后升级,此功能都很有用。

向下滚动至Unattended-Upgrade::Package-Blacklist部分,并在每行上添加要列入黑名单的软件包名称。

例如,添加apache2以将Apache软件包列入黑名单。

Ignoring specific packages from automatically updating

启用额外的软件源

默认情况下,自动升级仅启用官方的Ubuntu和安全软件源。但您可以允许其他软件源包含在升级过程中。

向下滚动至Unattended-Upgrade::Allowed-Origins部分。

Viewing repositories

现在,删除您想要启用的任何软件源前面的 // 符号。

此教程启用了所有Ubuntu软件源,例如:

  • 更新 – 用於穩定的包版本釋出。
  • 建議 – 用於測試新的穩定包版本。
  • 回溯 – 用於現有穩定包的更新版本。
Enabling extra repositories

系統自動重新啟動

在成功升級後,您會選擇自動重新啟動系統嗎?為什麼?這樣做有助於確保系統始終保持最新狀態。但如果您在升級進行中使用系統,此功能也可能會造成干擾。

要啟用自動重新啟動功能,請滾動到Unattended-Upgrade::Automatic-Reboot行,刪除//符號,確保值設置為true。

Setting the automatic reboot after an upgrade

移除未使用的依賴

安裝的依賴只會消耗存儲空間。為什麼不將它們移除?此配置可讓您配置成功升級後是否應自動刪除未使用的依賴。

請注意,雖然此功能有助於保持系統清潔,但也可能會刪除您仍然需要但不再被升級包使用的包。

要啟用移除未使用依賴的功能,請找到Unattended-Upgrade::Remove-Unused-Dependencies行,刪除//符號,並將值設置為true。

Setting unused dependencies to be removed after an upgrade

啟用詳細記錄

升級失敗時,您如何知道是什麼原因?詳細記錄是獲取有關自動升級過程更多信息的好方法。

此功能可幫助排除升級失敗的問題,或者如果您只是想更多地了解幕後發生了什麼事情。

啟用冗長記錄,請向下滾動至冗長記錄行,刪除 // 符號,並將值設置為 true。 修改完成後,保存並關閉文件以使更改生效。

Enabling verbose logging

啟用無人值守自動更新

到目前為止,您應該已經很好地了解如何配置自動升級以滿足您的需求。 但是,您仍然需要一種方法,具體地說,是一個文件,告訴系統何時運行自動更新。 這個文件名為20auto-upgrades,需要放置在/etc/apt/apt.conf.d目錄中。

在 /etc/apt/apt.conf.d 目錄中管理或創建文件需要 sudo 特權。

啟用無人值守自動更新:

1. 在您喜歡的文本編輯器中,在 /etc/apt/apt.conf.d/ 中創建一個名為 20auto-upgrades 的文件。

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

2. 接下來,將以下配置選項添加到20auto-upgrades文件中,保存更改並關閉文件。

這個配置是您開始自動更新所需的最低限度,其中:

  • 第一行告訴系統每天更新可用套件列表。 這個選項是必需的,因此系統知道哪些套件有可用更新。
  • 第二行告訴系統每天運行無人值守升級。 這個選項執行升級過程。
  • 第三行告訴系統每週自動清理任何舊的或未使用的文件。
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::AutocleanInterval "7";

3. 最後,運行下面的命令重新啟動 unattended-upgrades 服務以應用更改。

這個指令不提供輸出,但您可以在下一節中測試所有配置。

sudo systemctl restart unattended-upgrades.service

測試自動升級配置

您已經設置好了所有內容。但您如何知道所有配置是否正常運行?定期更新每天發生一次,所以您不應該等待太久。

但測試自動升級配置的最快方法是執行未監督升級過程的乾跑。

運行以下未監督升級命令來執行所有升級的乾跑,而不實際安裝任何內容(–debug)。

sudo unattended-upgrades --dry-run --debug

您將看到一個相對較長的輸出。但在開頭,您將看到以下類似的輸出。

正如您所見,apache2 套件被列入黑名單,這表明您的配置可以阻止套件進行升級。

Performing a dry run

現在,滾動查看輸出,您將看到以下類似的部分,顯示了幾個套件的可用更新。每個更新都已下載,但由於您只進行了乾跑,所以未進行安裝。

Viewing available package updates

查看自動升級日誌

一旦您確認了配置運行正常,您可能希望查看最近升級時發生的情況。未監督升級的日誌存儲在 /var/log/unattended-upgrades 文件中,您可以查看。

運行以下 grep 命令,僅顯示以單詞字符開頭(^\w)的日誌,過濾掉所有空行和僅包含破折號的行。

grep '^\w' /var/log/unattended-upgrades/unattended-upgrades.log

下面,您可以看到如下的日誌信息:

  • 上次無人值守升級運行的時間。
  • 已升級的套件。
  • 進程開始和結束的時間。
Viewing the unattended upgrade logs

結論

保持伺服器更新是維護其安全性的重要部分。通過本教程,您學會了在Ubuntu上安裝和配置自動升級。您還測試了配置並查看了日誌,以查看上次自動更新運行時發生了什麼。

到目前為止,您對於哪些套件接收自動升級擁有完全控制。但不要停在這裡!有許多其他無人值守升級配置選項可供使用。

Source:
https://adamtheautomator.com/automatic-upgrades-in-ubuntu/