哪種方式是在 ubuntu 上更新軟體的正確方法?
您好:) 根據我使用 ubuntu 下載軟體的方式,軟體更新有何不同?例如,當我使用 apt-package manager 手動下載它時,或者當我將一些儲存庫添加到 /etc/apt/sources.list 時。也有機會使用 flatpacks 或 snaps 下載軟體。
當我呼叫 sudo apt update 時實際發生了什麼?檢查哪些儲存庫?
在 Ubuntu 上安裝軟體包的方法有很多,其中一些你沒有提到。為了給出完整的答案,我想描述所有這些:
通過包管理器安裝,預設儲存庫
包管理器(無論是
apt
、apt-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
. 除非您真的知道自己在做什麼,否則不應執行後者。自定義軟體可能與包管理器控制的軟體發生可怕的衝突。類似的問題: