在 Ubuntu 中使用 apt 命令列出可升級的軟件包
apt 命令? 用于 Debian 和 Ubuntu 中的包管理。雖然你可能已經(jīng)熟悉安裝和刪除選項,但 apt 還提供了一些額外的功能。
其中之一是能夠查看系統(tǒng)上所有可升級的軟件包。要顯示它們,你所要做的就是在終端中使用以下命令:
apt list --upgradable
如你所見,你甚至不需要使用 sudo 來列出可更新的包。它只是列出了可以更新的包,而不會更新它們。
實際上,當(dāng)你運行 sudo apt update? 命令更新本地包倉庫緩存時,apt 命令會添加此提示。
Fetched 1,243 kB in 17s (71.4 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
30 packages can be upgraded. Run 'apt list --upgradable' to see them.
我不記得在舊的 apt-get? 命令中有任何類似的直接選項來列出所有可升級的包。這是 apt? 在舊的 apt-get 命令之上添加的幾個新功能之一。
讓我們更詳細地討論一下。
列出所有可升級的包
你在這里應(yīng)該知道的是你只能列出通過 APT 包管理器可用的更新。因此,如果你已將 PPA 或 外部倉庫? 添加到系統(tǒng)的 sources.list,你也將看到來自它們的更新。
但是你不會在這里獲得 AppImage、Flatpak、Snap 或一些其他打包格式的更新。
換句話說,它只適用于 APT 包。
因此,要列出 Ubuntu 或 Debian 系統(tǒng)上的所有可升級包,你應(yīng)該首先更新本地包緩存:
sudo apt update
然后你的系統(tǒng)將知道可用的軟件包更新。apt 命令告訴你在 update 命令結(jié)束時可以升級多少個軟件包:
The apt command shows the number of upgradable packages at the bottom of the apt update command output
要查看可以升級的軟件包,請運行以下命令:
apt list --upgradable
你應(yīng)該看到這樣的輸出:
~$ apt list --upgradable
Listing... Done
apparmor/jammy-updates 3.0.4-2ubuntu2.1 amd64 [upgradable from: 3.0.4-2ubuntu2]
brave-browser/stable 1.40.113 amd64 [upgradable from: 1.40.107]
evolution-data-server-common/jammy-updates,jammy-updates 3.44.2-0ubuntu1 all [upgradable from: 3.44.1-0ubuntu2]
evolution-data-server/jammy-updates 3.44.2-0ubuntu1 amd64 [upgradable from: 3.44.1-0ubuntu2]
Listing all the upgradable packages
它按字母順序列出所有可升級的軟件包以及有關(guān)當(dāng)前安裝版本和新可用軟件包版本的信息。
brave-browser/stable 1.40.113 amd64 [upgradable from: 1.40.107]
例如,這顯示我系統(tǒng)上安裝了 Brave 瀏覽器,版本 1.40.107,并且版本 1.40.113 可用。
你能用這些信息做什么?讓我分享一些我能想到的事情。
升級所有包
這可能是大多數(shù)普通 Ubuntu 用戶所做的。你可以使用以下命令升級所有可升級包:
sudo apt upgrade
它列出了將要升級的軟件包,然后要求按回車或 Y 確認升級。
Upgrade all packages
如果你確定要升級所有軟件包,則可以通過在命令中添加 -y 來跳過 “Do you want to continue” 部分。
sudo apt upgrade -y
模擬升級(但不升級任何包)
這是人們在 apt list 命令之前所做的。使用模擬選項,你實際上不會進行任何更改。它僅顯示運行升級時將安裝或升級的軟件包。
apt -s upgrade
你不需要使用 sudo(即使我在下面的截圖中使用了它)。
Running an upgrade simulation with apt command
僅升級選定的包
如果你正在管理一個 Ubuntu 服務(wù)器,并且你不想升級所有軟件包,而只想升級少數(shù)選定的軟件包中的一個(如 MySQL/Ngnix),你可以使用 apt 命令輕松完成。
sudo apt --only-upgrade install package_name
實際上,如果你在已安裝且有可用更新的軟件包上運行 apt install 命令,它將升級該軟件包。
使用 --only-upgrade 標志,你可以確保僅升級軟件包(如果已安裝)。如果尚未安裝,它將不會安裝給定的包。
你還可以通過提供名稱來升級選定的幾個包:
sudo apt --only-upgrade install package1 package2
你也可以做相反的事情,升級時保留選定的軟件包。
sudo apt-mark hold package_name
這樣,當(dāng)你升級所有系統(tǒng)包時,將不會升級給定的包。
你可以使用以下命令刪除保留設(shè)置:
sudo apt-mark unhold package_name
是否顯示內(nèi)核升級?
這有點棘手。
當(dāng)你運行 apt list –upgradable 命令時,它會顯示所有可以升級的包。
但是如果有新的內(nèi)核版本可用,它們可能不會顯示,因為內(nèi)核包名稱以 linux-headers-x-y? 開頭。這是因為系統(tǒng)將它們視為新包,而不是對已安裝的包 linux-headers-a-b 的升級。
但是,你仍然會在可升級包列表中看到 linux-generic-hwe 類型的包,因為該軟件包將被升級(使用較新的內(nèi)核)。
總結(jié)
列出可升級包的能力是 apt? 命令為舊的 apt-get? 命令帶來的幾個新功能之一。
作為桌面用戶,我并不總是檢查可以升級的軟件包。我直接去升級。但是,當(dāng)我管理服務(wù)器時,我更喜歡查看可用的更新,然后決定是否進行升級。