apt 的 update 和 upgrade 命令的區(qū)別是什么?
如果想讓你的 Ubuntu 或者 Debian 系統(tǒng)保持更新,要用 ??sudo apt update?
?? 和 ??sudo apt upgrade?
? 命令組合。
一些以前的教程也會(huì)提到 ??sudo apt-get update?
?? 和 ??sudo apt-get upgrade?
?。
??apt?
?? 和 ??apt-get?
? 命令運(yùn)行起來(lái)幾乎一樣,除了一些細(xì)微的差別,后面我會(huì)討論。
我們首先討論一下 ??update?
?? 和 ??upgrade?
? 的區(qū)別。這兩個(gè)難道不是一樣的嗎?
apt 的 update 和 upgrade 的區(qū)別
盡管聽(tīng)上去運(yùn)行 ??apt update?
?? 可以給你一個(gè)包的最新版本,然而這并不正確。??update?
?? 命令只會(huì)獲得系統(tǒng)上所有包的最新信息,并不會(huì)下載或者安裝任何一個(gè)包。而是 ??apt upgrade?
? 命令來(lái)把這些包下載和升級(jí)到最新版本。
還是有點(diǎn)困惑?讓我來(lái)接著解釋。我建議閱讀 ??包管理器的概念??。這個(gè)會(huì)幫你更好的理解這些東西。
Linux Package Manager Explanation
基本上,你的系統(tǒng)圍繞著一個(gè)所有可用包的數(shù)據(jù)庫(kù)(緩存)工作。注意,這個(gè)緩存(或者數(shù)據(jù)庫(kù))并不包含這些包本身,僅僅是關(guān)于包的元數(shù)據(jù)(版本、倉(cāng)庫(kù)、依賴等)。
如果你不更新這個(gè)數(shù)據(jù)庫(kù),系統(tǒng)就不會(huì)知道是否有更新的版本。
當(dāng)你運(yùn)行 ??apt update?
?? 或者 ??apt-get update?
? 命令,它會(huì)獲取這些包的最新元數(shù)據(jù)(包的版本等)。
apt update
這時(shí)候本地緩存就被更新了,有一些包可以升級(jí)。用 ??sudo apt upgrade?
? 可以升級(jí)所有(可升級(jí)的)包。
它會(huì)顯示要升級(jí)的包,并且通過(guò)回車(默認(rèn)選擇是 ??Y?
??)或者按下 ??Y?
?? 鍵進(jìn)行確認(rèn)。要在這個(gè)階段取消升級(jí),可以按下 ??N?
?。
apt upgrade
下面這些可能會(huì)幫助你記憶:
- ?
?apt update?
?:更新包緩存(可以知道包的哪些版本可以被安裝或升級(jí)) - ?
?apt upgrade?
?:升級(jí)包到最新版本
因?yàn)橛幸恍┕芾韱T命令,需要作為 root 運(yùn)行。因此需要使用 ??sudo?
?? 配合其他命令。??sudo?
? 使你能夠作為 root 在 Ubuntu 和 Debian 上運(yùn)行命令。
既然理解了 ??update?
?? 和 ??upgrade?
?? 是如何一起運(yùn)行的,我們接下來(lái)來(lái)討論一下 ??apt?
?? 和 ??apt-get?
? 的用法。
apt 還是 apt-get?應(yīng)該用哪個(gè)?
Debian 和 Ubuntu 使用的是 APT 包管理系統(tǒng)。不要和 ??apt?
? 命令弄混了。
有許多和 APT 包管理交互的命令;??apt-get?
??、??apt?
??、??dpkg?
??、??aptitude?
? 等。
這里面最受歡迎的就是 ??apt-get?
?? 命令。它是一個(gè)低層級(jí)low-level且功能豐富的命令。??apt?
?? 是 ??apt-get?
? 命令的一個(gè)更新而更簡(jiǎn)單的版本。
可以讀一下這篇文章來(lái) ??了解 atp 和 apt-get 命令的不同???。下面重點(diǎn)討論這些命令中 ??update?
?? 和 ??upgrade?
? 選項(xiàng)的區(qū)別。
apt update vs apt-get update
??apt-get update?
?? 和 ??apt update?
? 做的是同樣的事,都是更新本地包緩存,這樣的話你的系統(tǒng)就知道有哪些包的版本是可用的。
從技術(shù)上講,其實(shí)并沒(méi)有區(qū)別。然而,??apt update?
?? 在一個(gè)方面比 ??apt-get update?
? 做的好,它會(huì)告訴你可升級(jí)的包的數(shù)量。
Hit:15 https://ppa.launchpadcontent.net/slimbook/slimbook/ubuntu jammy InRelease
Fetched 213 kB in 4s (55.8 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
6 packages can be upgraded. Run 'apt list --upgradable' to see them.
??apt-get update?
? 甚至不會(huì)告訴你包是否可以升級(jí)。
apt get update
apt update output
從 ??apt?
?? 中可以看到 ??列出可升級(jí)的包???,而 ??apt-get?
? 甚至沒(méi)有這個(gè)選項(xiàng)。
Listing... Done
fprintd/jammy-updates 1.94.2-1ubuntu0.22.04.1 amd64 [upgradable from: 1.94.2-1]
gnome-control-center-data/jammy-updates,jammy-updates 1:41.7-0ubuntu0.22.04.4 all [upgradable from: 1:41.7-0ubuntu0.22.04.1]
gnome-control-center-faces/jammy-updates,jammy-updates 1:41.7-0ubuntu0.22.04.4 all [upgradable from: 1:41.7-0ubuntu0.22.04.1]
gnome-control-center/jammy-updates 1:41.7-0ubuntu0.22.04.4 amd64 [upgradable from: 1:41.7-0ubuntu0.22.04.1]
libpam-fprintd/jammy-updates 1.94.2-1ubuntu0.22.04.1 amd64 [upgradable from: 1.94.2-1]
vivaldi-stable/stable 5.4.2753.40-1 amd64 [upgradable from: 5.4.2753.37-1]
現(xiàn)在來(lái)比較一下兩個(gè)命令中 ??upgrade?
? 的選項(xiàng)。
apt upgrade vs apt-get upgrade
??apt-get upgrade?
?? 和 ??apt upgrade?
?? 命令根據(jù)本地包緩存(通過(guò) ??update?
? 命令更新)的數(shù)據(jù),安裝可升級(jí)包的最新版本。
然而,??apt upgrade?
?? 命令會(huì)做兩件與 ??apt-get upgrade?
? 不同的事情。
??apt upgrade?
?? 命令可以升級(jí) Linux 內(nèi)核版本,??apt-get upgrade?
?? 不能。??apt-get?
?? 命令需要使用 ??apt-get dist-upgrade?? 來(lái)升級(jí)內(nèi)核版本。
apt-get upgrade command cannot upgrade Linux kernel version
這是因?yàn)樯?jí)內(nèi)核版本意味著安裝一個(gè)全新的包。??apt-get upgrade?
? 命令不能安裝一個(gè)新的包。它只能升級(jí)現(xiàn)有的包。
??apt upgrade?
?? 比 ??apt-get?
? 做的好的另一件小事是,它會(huì)在底部顯示一個(gè)進(jìn)度條。
apt upgrade progress bar
總結(jié)
??update?
?? 和 ??upgrade?
?? 兩個(gè)詞很相似,這就是為什么很多新用戶會(huì)感到困惑。有時(shí)候,我覺(jué)得 ??apt update?
?? 命令應(yīng)該和 ??apt upgrade?
? 命令合并。
我意思是 ??upgrade?
??(所有已安裝的包)和 ??update?
??(本地包元數(shù)據(jù)緩存)一起完成工作。為什么要有兩個(gè)分開(kāi)的命令呢?把這兩個(gè)領(lǐng)命合成一個(gè) ??upgrade?
? 命令吧。Fedora 就是這樣對(duì) DNF 命令進(jìn)行了改進(jìn)。不過(guò)這只是我的觀點(diǎn)。
我希望這篇文章可以解釋一些關(guān)于 ??apt-get update?
??、??apt-get upgrade?
?? 和 ??apt update?
?? 以及 ??apt upgrade?
? 命令的問(wèn)題。