原文:apt 和 apt-get 之間有什么區別?
https://aws.amazon.com/cn/compare/the-difference-between-apt-and-apt-get/
陳拓轉載,2023/11/23,添加了舉例。
apt 和 apt-get 之間有什么區別?
apt?和?apt-get?都是命令行工具。您可以使用這兩種工具來管理軟件包,例如基于 Debian 的 Linux 服務器和服務器實例上的應用程序和庫。由于 Linux 是開源的,因此您可以使用多個軟件包選項對其進行自定義,以滿足您的需求。基于 Debian 的 Linux 操作系統使用高級軟件包工具(APT)來管理 Linux 軟件包。apt?命令行工具為最終用戶提供更高級別的用戶界面,提供直觀的命令、生成的行為和安全功能。相比之下,apt-get?命令是一個低級別接口,可以更緊密地與核心 Linux 進程通信。apt?命令是比?apt-get?更易于使用的軟件包管理器。
apt 和 apt-get 有什么相似之處?
apt?和?apt-get?都是基于 Debian 的 Linux 發行版(或發行版本,如 Debian、Ubuntu、Linux Mint 和基本操作系統)的包管理器工具。盡管?apt-get?和?apt?是系統默認工具,但也有一些類似的工具,如?aptitude?和?synaptic。
接下來,我們將介紹?apt?和?apt-get?之間的相似之處。
接口
apt?命令行實用工具和?apt-get?命令行實用工具均可通過 Linux 命令行接口(CLI)訪問。要使用 Linux CLI,請打開終端窗口或虛擬終端窗口。
文檔
要獲取?apt?實用程序和?apt-get?實用程序的官方概述,請在命令提示符下輸入?apt?或?apt-get。這將為您提供最常見的?apt?命令和?apt-get?命令的列表。
例如,apt update?或?apt-get update?會更新來自官方存儲庫的可用軟件包列表。apt?命令和?apt-get?命令后面還會列出一些選項。例如,apt update --quiet?將向終端提供?apt update?命令不太詳細的打印輸出。
請注意,如果您不是以管理員身份登錄,則需要先將?sudo?命令添加到每個?apt?命令和?apt-get?命令中。例如,您可以輸入?sudo apt-get update。
使用案例
apt?和?apt-get?中最常見的任務是安裝、更新和刪除軟件包。軟件包可以是應用程序、庫、實用程序和工具。
下表顯示了兩者的常用命令語法。
apt | apt-get |
|
|
舉例:
- 更新本地源列表
sudo apt update
- 安裝軟件包libglib2.0-dev
sudo apt install libglib2.0-dev
- 查看安裝情況
sudo apt policy libglib2.0-dev
- 卸載軟件包libglib2.0-dev
sudo apt remove libglib2.0-dev
- 卸載軟件包libglib2.0-dev并清除與其關聯的文件
sudo apt purge libglib2.0-dev
查看卸載情況:
主要區別:apt 與 apt-get
apt?和?apt-get?之間的區別不僅在于?apt?是?apt-get?的較新版本。apt?命令被設計為對用戶更加友好的?apt-get?替代方案,結合了多個包管理工具的功能,為用戶提供便利。
接下來,我們將討論?apt?和?apt-get?之間的其他區別。
發布日期
apt-get?于 1998 年在 Debian 2.0(Hamm)發行版中發布,而?apt?于 2014 年在 Debian 8(Jessie)發行版中發布。2014 年之后,apt?取代?apt-get?成為所有基于 Debian 的 Linux 發行版的默認軟件包管理器工具。
搜索功能
使用?apt search <package_name>?命令按名稱搜索軟件包。此命令詳細描述了包含所搜索的 package_name 的所有軟件包。使用?apt-get?無法執行此操作。相反,您必須使用?apt-cache?命令。?
依賴關系解析
任何軟件包通常都附帶軟件依賴項列表,例如正常運行所需的庫或工具。在安裝軟件包之前,必須先安裝所有依賴項。
apt?和?apt-get?都可以處理依賴關系解析,但是?apt?的性能要優越得多。它可以確定復雜的依賴關系鏈,在這些依賴關系鏈中按正確的順序安裝軟件包,并推薦要安裝的軟件包。
文件系統上的包版本
默認情況下,apt upgrade?命令會在升級時刪除系統上不再需要的已安裝或可升級軟件包的舊版本。
相比之下,apt-get upgrade?命令則不會執行此操作。這種效率使?apt upgrade?能夠更好地釋放系統內存。
將輸出打印到終端
apt-get?和?apt?都可以將狀態信息打印到終端,從而深入了解系統在輸入命令后執行的操作。apt?命令為用戶提供略微詳細一些的信息,包括每個任務的進度條。
apt 如何取代 apt-get?
apt?工具現在是基于 Debian 的 Linux 發行版的默認軟件包管理實用程序,已經取代了?apt-get?和?apt-cache。大多數?apt-get?命令在每個新的?apt?命令中的編寫方式都相同。
但在過去,對于某些命令,必須將?apt-get?與?apt-cache?一起使用。下表顯示了現在如何將這幾個命令移植到?apt。
apt-cache | apt-get | apt |
apt-cache search | 不支持 | apt search |
apt-cache show | 不支持 | apt show |
apt-cache policy | 不支持 | apt policy |
在任何現有 Linux 腳本中,您都無需將?apt-get?命令替換為?apt?命令。它們仍然可以按預期運行,并且仍然支持?apt-get。較早的?apt-get?命令的某些功能在?apt?中略有變化,因此在腳本中保留?apt-get?有助于確保正確操作。
除非項目或環境需要,否則普通 Linux 用戶應該使用?apt?而不是?apt-get。
舉例:
- 用apt-cache search命令在本地源列表中搜索libglib2.0-dev
sudo apt-cache search libglib2.0-dev
- 用apt search命令在本地源列表中搜索libglib2.0-dev
sudo apt search libglib2.0-dev
比apt-cache search命令給出更多的信息。
- 用apt-cache show命令從本地軟件列表中顯示libglib2.0-dev的詳細信息
sudo apt-cache show libglib2.0-dev
- 用apt show命令從本地軟件列表中顯示libglib2.0-dev的詳細信息
sudo apt show libglib2.0-dev
- 用顯示apt-cache policy命令顯示軟件包libglib2.0-dev的安裝狀態和版本信息
sudo apt-cache policy libglib2.0-dev
安裝libglib2.0-dev之前:
Installed: (none) 未安裝。
安裝libglib2.0-dev之后:
libglib2.0-dev:
? Installed: 2.64.6-1~ubuntu20.04.6 已經安裝的版本
? Candidate: 2.64.6-1~ubuntu20.04.6 候選版本
? Version table: 版本列表
?*** 2.64.6-1~ubuntu20.04.6 500
??????? 500 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages
??????? 500 http://archive.ubuntu.com/ubuntu focal-security/main amd64 Packages
??????? 100 /var/lib/dpkg/status
???? 2.64.2-1~fakesync1 500
??????? 500 http://archive.ubuntu.com/ubuntu focal/main amd64 Packages
- 用顯示apt policy命令顯示軟件包libglib2.0-dev的安裝狀態和版本信息
sudo apt policy libglib2.0-dev
安裝libglib2.0-dev之前:
安裝libglib2.0-dev之后:
- 用apt-cache madison命令顯示軟件包版本列表
sudo apt-cache madison libglib2.0-dev
- 用apt list命令顯示軟件包版本列表
sudo apt list libglib2.0-dev
libglib2.0-dev安裝之前:
libglib2.0-dev安裝之后:
帶–-installed選項:
sudo apt list libglib2.0-dev –installed
libglib2.0-dev安裝之前:
libglib2.0-dev安裝之后:
sudo apt list libglib2.0-dev --installed -a
差異摘要:apt 與 apt-get
類別 | apt-get | apt |
它是什么? | 用于在基于 Debian 的 Linux 系統上管理軟件包的 CLI 工具。 | 用于在基于 Debian 的 Linux 系統上管理軟件包的 CLI 工具。 |
發布年份和 Debian 的初始發行版本 | 1998 年,Debian 2.0(Hamm)發行版。 | 2014 年,Debian 8(Jessie)發行版。 |
搜索功能 | 不可以。用戶必須改用?apt-cache?包管理命令進行搜索。 | 可以。 |
依賴關系解析 | 解析簡單依賴關系。 | 通過安裝推薦軟件解析復雜依賴關系。 |
文件系統上的包版本 | 使用?apt-get upgrade?時,舊版本的軟件包會保留在文件系統上。 | 使用?apt upgrade?時,舊版本的軟件包會從文件系統中刪除。 |
操作的打印輸出 | 向用戶打印每個?apt-get?命令的基本輸出,沒有太多細節。 | 向用戶打印每個?apt?命令的詳細輸出,以獲取有關操作的更多信息,包括任務進度條。? |
apt自己獨有的命令
apt list
列出本地倉庫中所有的軟件包名。
如果帶上包名:
apt list [package name]
可以從本地倉庫中查找指定的包名,支持通配符,舉例:
apt list libglib2.0-dev -a
通配符的使用:
apt list libglib2.0*
如果包名后面帶有[installed]表示該包已經安裝。舉例:
- 列出所有已安裝的包名
apt list --installed
- 列出指定已安裝的包名
sudo apt list libglib2.0* --installed
安裝libglib2.0-dev之前:
安裝libglib2.0-dev之后:
sudo apt list libglib2.0* --installed
- 查看所有可升級的包
sudo apt list --upgradable
- 查看可升級的指定包
sudo apt list libglib2.0-dev --upgradable
apt edit-sources
快速換源。
通常換源是通過手動編輯/etc/apt/sources.list來實現的。
用apt edit-sources命令可以幫助我們選擇編輯器并自動打開sources.list進行編輯。舉例,換阿里云源:
- 先備份
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
- 執行換源命令
sudo apt edit-sources
選擇編輯器。我們選1. /bin/nano
將列表中所有的archive.ubuntu都改成mirrors.aliyun,保存,退出。
- 更新源軟件列表
因為源的位置變了,我們必須更新本地的源列表和當前的源一致:
sudo apt update
- 更新軟件包
升級系統中所有已安裝的軟件包:
sudo apt upgrade
升級指定的已安裝的軟件包:
sudo apt upgrade libglib2.0-dev