Ubuntu

哪種方式是在 ubuntu 上更新軟體的正確方法?

  • March 21, 2020

您好:) 根據我使用 ubuntu 下載軟體的方式,軟體更新有何不同?例如,當我使用 apt-package manager 手動下載它時,或者當我將一些儲存庫添加到 /etc/apt/sources.list 時。也有機會使用 flatpacks 或 snaps 下載軟體。

當我呼叫 sudo apt update 時實際發生了什麼?檢查哪些儲存庫?

在 Ubuntu 上安裝軟體包的方法有很多,其中一些你沒有提到。為了給出完整的答案,我想描述所有這些:

通過包管理器安裝,預設儲存庫

包管理器(無論是aptapt-get還是aptitude其他)都有一個下載軟體的位置列表。該軟體通常是值得信賴的,可以工作並且大部分維護良好。這樣的位置稱為“儲存庫”。儲存庫的 URL 儲存在/etc/apt/sources.list. 執行apt update時,包管理器會查詢儲存庫,以便知道哪些軟體包可用。它將資訊儲存在本地記憶體中。

通過 安裝包時apt install,包管理器會檢查其本地記憶體以確定從何處下載包。然後它下載包。該包以 DEB 格式的存檔形式提供。存檔被解壓到您的本地文件系統中。此外,該軟體包可能包含一些程式碼,這些程式碼將自動執行一次以設置新安裝的軟體。

通過apt upgrade或更新軟體時apt dist-upgrade,會下載現有軟體包的新版本。目前版本已從系統中刪除。*包管理器知道要刪除哪些文件,因為它知道哪個文件由哪個包提供。*然後如上所述安裝新版本。

通過包管理器、自定義儲存庫安裝

也可以通過將 URL 添加到 來擴展預設儲存庫/etc/apt/sources.list,儘管現在/etc/apt/sources.list.d/應該使用。包管理器會將它們視為預設儲存庫。安裝、刪除和更新的工作方式完全相同。使用者在添加自定義儲存庫時必須小心——它們必須是為系統製作的。

附帶說明:根據個人經驗,我建議在從一個 Ubuntu 版本升級到下一個版本之前刪除從非預設儲存庫安裝的所有軟體包。

通過包管理器安裝,手動下載

您也可以手動下載 DEB 文件。您可以通過dpkg -i. 包管理器永遠不會更新這個包,因為它不知道它來自哪裡。

通過 snap 安裝

snapcraft 是包管理器的替代品,不僅與 Debian 派生的 Ubuntu 兼容,而且與所有 Linux 發行版兼容。快照包未解壓縮到系統中。此外,它被掛載(其內容直接可見)並且軟體在系統內部的受控環境中執行(想想沙盒和虛擬機)。移除 snap 包時,會解除安裝並移除包。更新發生類似。

全手動安裝

您還可以下載一堆文件並將它們放在硬碟驅動器上的適當位置。自定義軟體經常進入 /opt。二進製文件(或指向它們的連結)安裝到$PATH. 這樣,可以輕鬆訪問該軟體。包管理器對此軟體一無所知。更新也需要手動安裝(有時軟體具有自我更新功能,很難)。自定義軟體也可以安裝到類似/usr/local甚至/usr. 除非您真的知道自己在做什麼,否則不應執行後者。自定義軟體可能與包管理器控制的軟體發生可怕的衝突。

類似的問題:

Ubuntu 軟體更新與 apt-get

是否通過 Apper 或 Debian 中的軟體中心更新軟體包有區別?

引用自:https://unix.stackexchange.com/questions/574055