apt的update和upgrade區別

roc_guo發表於2022-09-15
導讀 如果想讓你的 Ubuntu 或者 Debian 系統保持更新,要用 sudo apt update 和 sudo apt upgrade  組合。我們首先討論一下 update 和 upgrade 的區別。這兩個難道不是一樣的嗎?

一些以前的教程也會提到 sudo apt-get update 和 sudo apt-get upgrade。apt 和 apt-get  執行起來幾乎一樣,除了一些細微的差別,後面我會討論。我們首先討論一下 update 和 upgrade 的區別。這兩個難道不是一樣的嗎?

apt 的 update 和 upgrade 的區別

儘管聽上去執行 apt update 可以給你一個包的最新版本,然而這並不正確。update 命令只會獲得系統上所有包的最新資訊,並不會下載或者安裝任何一個包。而是 apt upgrade 命令來把這些包下載和升級到最新版本。

還是有點困惑?讓我來接著解釋。我建議閱讀 包管理器的概念。這個會幫你更好的理解這些東西。

apt的update和upgrade區別apt的update和upgrade區別

基本上,你的系統圍繞著一個所有可用包的資料庫(快取)工作。注意,這個快取(或者資料庫)並不包含這些包本身,僅僅是關於包的後設資料(版本、倉庫、依賴等)。

如果你不更新這個資料庫,系統就不會知道是否有更新的版本。

當你執行 apt update 或者 apt-get update 命令,它會獲取這些包的最新後設資料(包的版本等)。

apt的update和upgrade區別apt的update和upgrade區別

這時候本地快取就被更新了,有一些包可以升級。用 sudo apt upgrade 可以升級所有(可升級的)包。

它會顯示要升級的包,並且透過回車(預設選擇是 Y)或者按下 Y 鍵進行確認。要在這個階段取消升級,可以按下 N。

apt的update和upgrade區別apt的update和upgrade區別

下面這些可能會幫助你記憶:

  1. apt update:更新包快取(可以知道包的哪些版本可以被安裝或升級)
  1. apt upgrade:升級包到最新版本

因為有一些管理員命令,需要作為 root 執行。因此需要使用 sudo 配合其他命令。sudo 使你能夠作為 root 在 Ubuntu 和 Debian 上執行命令。

既然理解了 update 和 upgrade 是如何一起執行的,我們接下來來討論一下 apt 和 apt-get 的用法。

apt和apt-get應該用哪個?

Debian 和 Ubuntu 使用的是 APT 包管理系統。不要和 apt 命令弄混了。

有許多和 APT 包管理互動的命令;apt-get、apt、dpkg、aptitude 等。

這裡面最受歡迎的就是 apt-get 命令。它是一個低層級low-level且功能豐富的命令。apt 是 apt-get 命令的一個更新而更簡單的版本。

可以讀一下這篇文章來 瞭解 atp 和 apt-get 命令的不同。下面重點討論這些命令中 update 和 upgrade 選項的區別。

apt update vs apt-get update

apt-get update 和 apt update 做的是同樣的事,都是更新本地包快取,這樣的話你的系統就知道有哪些包的版本是可用的。

從技術上講,其實並沒有區別。然而,apt update 在一個方面比 apt-get update 做的好,它會告訴你可升級的包的數量。

    Hit:15 
    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 甚至不會告訴你包是否可以升級。

apt的update和upgrade區別apt的update和upgrade區別
apt的update和upgrade區別apt的update和upgrade區別

從 apt 中可以看到 列出可升級的包,而 apt-get 甚至沒有這個選項。

    # apt list --upgradable
    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]

現在來比較一下兩個命令中 upgrade 的選項。

apt upgrade vs apt-get upgrade

apt-get upgrade 和 apt upgrade 命令根據本地包快取(透過 update 命令更新)的資料,安裝可升級包的最新版本。

然而,apt upgrade 命令會做兩件與 apt-get upgrade 不同的事情。

apt upgrade 命令可以升級   核心版本,apt-get upgrade 不能。apt-get 命令需要使用 apt-get dist-upgrade 來升級核心版本。

apt的update和upgrade區別apt的update和upgrade區別

這是因為升級核心版本意味著安裝一個全新的包。apt-get upgrade 命令不能安裝一個新的包。它只能升級現有的包。

apt upgrade 比 apt-get 做的好的另一件小事是,它會在底部顯示一個進度條。

apt的update和upgrade區別apt的update和upgrade區別

總結

update 和 upgrade 兩個詞很相似,這就是為什麼很多新使用者會感到困惑。有時候,我覺得 apt update 命令應該和 apt upgrade 命令合併。

我意思是 upgrade(所有已安裝的包)和 update(本地包後設資料快取)一起完成工作。為什麼要有兩個分開的命令呢?把這兩個領命合成一個 upgrade 命令吧。Fedora 就是這樣對 DNF 命令進行了改進。不過這只是我的觀點。

我希望這篇文章可以解釋一些關於 apt-get update、apt-get upgrade 和 apt update 以及 apt upgrade 命令的問題。

原文來自:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2914908/,如需轉載,請註明出處,否則將追究法律責任。

相關文章