
您好:)根據我使用 ubuntu 下載軟體的方式,軟體更新有何不同?例如,當我使用 apt-package manager 手動下載它時,或者當我將一些儲存庫新增至 /etc/apt/sources.list 時。也可以使用扁平包或快照下載軟體。
當我呼叫 sudo apt update 時實際上會發生什麼?檢查哪些儲存庫?
答案1
在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
。套件管理器永遠不會更新這個套件,因為它不知道它來自哪裡。
透過卡扣安裝
snapcraft 是套件管理器的替代品,不僅與 Debian 衍生的 Ubuntu 相容,而且與所有 Linux 發行版相容。快照包不會解壓縮到系統中。此外,它被安裝(其內容直接可見)並且軟體在系統內的受控環境中執行(想想沙箱和虛擬機器)。移除卡扣時,封裝將會卸載並移除。更新的發生類似。
完全手動安裝
您也可以下載一堆文件並將它們放在硬碟上的適當位置。客製化軟體通常進入/opt。二進位(或它們的連結)安裝到$PATH
.這樣,就可以輕鬆存取該軟體。套件管理器對此軟體一無所知。更新也需要手動安裝(有時軟體有自我更新功能,很難)。客製化軟體也可以安裝到類似/usr/local
或甚至 的地方/usr
。除非您真正知道自己在做什麼,否則不應執行後者。自訂軟體可能會與套件管理器控制的軟體發生嚴重衝突。
類似問題:
使用 apt-get 更新 Ubuntu 軟體
我透過 Apper 還是透過 Debian 中的軟體中心更新軟體包有什麼區別嗎?
答案2
我建議僅安裝經銷商提供的來源的軟體。只有當您確切知道自己在做什麼時,才手動新增儲存庫或手動安裝軟體包或其他軟體。至於sudo apt update
作用是什麼的問題:它從您配置的所有儲存庫中獲取最新的可用軟體包。這同樣適用於按扣或扁平包裝。從中央存儲庫安裝它們後,您將以類似於apt update
.
答案3
apt update
更新存儲庫/etc/apt/sources.list
中以及/etc/apt/sources.list.d/
.首先運行它很重要,這樣才能apt
了解更新版本的軟體包。
apt upgrade
實際上升級已安裝的具有可用更新版本的軟體包,前提是它們是透過安裝的apt
並且它們來自的儲存庫位於上述位置。
來自 的套件snap
不會flatpak
升級,apt
因為儲存庫不同且不會在apt
的快取/資料庫中。
答案4
apt update
檢查您的所有軟體來源,因此這是發行版的儲存庫和您添加的任何 PPA。據我所知,這不包括 flatpak (用於flatpak update
此目的),但如果發行版是這樣安裝的,則可以包括 snap。當然,您手動安裝的東西(下載的 .deb 或其他安裝方式)不會以這種方式進行檢查。
但請記住,Ubuntu 有自己的更新政策,部分發行版會更新,直到發行版生命週期結束(「主」儲存庫),其他發行版很少或沒有更新(「宇宙」儲存庫和其他)(以及大多數發行版)快照安裝的軟體包不在「main」中)。