apt vs. apt-get:Linux 上有什麼區別?
已發表: 2022-06-16 為什麼基於 Debian 的 Linux 發行版有apt
和apt-get
? apt
替換了apt-get
還是有不同的目的? 我們解釋這兩個命令之間的關係。
Debian 軟件包管理系統
創建 Linux 發行版的主要工作是設計和創建包管理系統。 您的用戶需要有一種方法來安裝和卸載軟件包。 這需要軟件從您的軟件存儲庫中檢索軟件包文件並將它們正確安裝在用戶的計算機上。
這不是一件小事。 即使將軟件工程放在一邊,託管軟件存儲庫也需要時間、精力和費用。 這就是為什麼這麼多“新”Linux 發行版是現有 Linux 發行版的衍生產品的原因之一。
這導致了 Linux 發行版的家族或譜系,例如基於 Debian 的發行版、基於 Red Hat 的發行版、基於 Arch 的發行版等等。
Debian 系列發行版——包括 Ubuntu 和所有 Ubuntu 派生的發行版——使用 Debian 包管理器。 這使用帶有“.deb”文件擴展名的包文件,稱為 DEB 文件。 DEB 文件是包含其他存檔文件的壓縮文件。 歸檔文件包含應用程序的可執行文件、手冊頁、庫等。
從 DEB 文件安裝軟件意味著解壓縮所有這些組件文件並將它們放置在計算機上的正確位置。 它還需要與操作系統和桌面環境進行交互,以便應用程序顯示在應用程序搜索中,並且可以將其圖標添加到停靠欄或系統菜單中。
apt-get
和apt
命令都這樣做。 但是為什麼我們對同一件事有兩個命令呢?
指揮鏈
真正執行安裝的包稱為dpkg
。 它實際上是一系列命令,包括dpkg-split
、 dpkg-trigger
和dpkg-divert
。 如果需要,這些將由高級軟件包工具套件或 APT 中的工具調用。 APT 是另一個工具集合,包括apt-get
、 apt-cache
和apt
。
dpkg
命令被認為是低級命令。 除了最簡單的交互之外,它變得非常複雜,有很多選擇。 apt-get
命令充當dpkg
命令套件的前端。 這大大簡化了事情。 apt-get
被設計為面向用戶的命令,而不是低級後台命令。 即便如此,儘管它是面向人類的角色,但另一個名為apt-cache
的命令被用來向用戶顯示信息。
apt
命令提供了另一種通過更易於訪問和用戶友好的命令行工具與dpkg
“對話”的方式。 它提供了apt-get
功能的一個子集,但它是一個很大的子集,它提供了所有常用功能,還包括來自apt-cache
功能。
Linux Mint 在這裡需要特別提及。 Linux Mint 維護者開發了他們自己的apt
版本,它是apt-get
的 Python 包裝器。 這不是我們在這裡談論的apt
。 我們指的是主流的 Debian apt
,它於 2014 年發布,並在 2016 年被包含在 Ubuntu 16.04 中時在用戶節中獲得了關注和牽引力。
apt 和 apt-get 的區別
所以, dpkg
是底層的後台應用程序。 apt-get
命令是dpkg
的全功能但簡化的界面,而apt
是apt-get
的更用戶友好但略微精簡的版本。
但是apt-get
和apt
提供的不僅僅是dpkg
的簡單接口。 他們做dpkg
不做的事情。 他們將從存儲庫中檢索文件,並嘗試幫助解決缺少的依賴項和衝突。
反過來, apt
命令做了一些apt-get
沒有做的事情。 它提供了更多普通用戶在安裝過程中希望看到的類型的信息,並抑制了apt-get
顯示的一些更晦澀的信息。 apt
提供出色的視覺反饋,並在終端窗口中使用顏色高亮和進度條。
apt
和apt-get
之間有一些常用命令。 所有這些命令都可以以apt
或apt-get
,並且行為相同:
- install packagename :安裝一個包。
- remove packagename :刪除(卸載)一個包。
- purge packagename :刪除一個包及其配置文件。
- update packagename :更新存儲庫信息。
- upgrade :更新所有軟件包。
- autoremove :刪除不再需要的庫和其他包。
apt full-upgrade
選項替換了apt-get dist-upgrade
選項。
這些是apt
的新命令:
- apt search :在存儲庫中搜索包名稱。 這與
apt-cache search
相同 - apt show :顯示有關包的信息。 這與
apt-cache show
相同。 - apt list option :顯示已安裝或可升級軟件包的列表。
- apt edit-sources :直接編輯
apt
搜索包的存儲庫列表。
安裝應用程序
您可以使用apt search
來查看存儲庫中是否存在軟件包,或者檢查您是否獲得了正確的軟件包名稱。 假設您想安裝 Scribus,但您不知道軟件包名稱。 您可以嘗試尋找scribus-desktop
。
apt search scribus-桌面
那次搜索什麼也沒找到。 我們將使用更短、更通用的搜索線索再次嘗試。
apt 搜索 scribus
這會返回幾個點擊,我們可以看到有一個叫做“scribus”,它看起來確實是 Scribus 桌面發布應用程序的核心包。 apt show
命令將為我們提供更多詳細信息。
apt show scribus
我們得到有關軟件包的信息轉儲,包括將安裝的內容和軟件描述。
它還建議可能需要的其他軟件包,具體取決於我們的需要。
要安裝軟件包,我們需要使用sudo
。
sudo apt install scribus
這些文件是從存儲庫中檢索的。 當前正在檢索的文件以棕色突出顯示。
檢索文件後,將安裝它們。 安裝進度顯示為以數字顯示的百分比和進度條。
其他命令
apt list
和apt edit-sources
命令是apt
中不存在於apt-get
中的選項。
apt list
命令可以與--installed
或--upgradeable
選項一起使用,以查看計算機上已安裝的軟件包以及可以升級的軟件包。
要查看計算機上安裝的應用程序列表,請使用:
apt list --已安裝
滾動輸出,我們可以看到新安裝的 Scribus 應用程序的兩個條目。
要查看是否可以升級任何已安裝的應用程序,請使用--upgradeable
選項。
apt list --upgradeable
apt
命令還為您提供了一種方法來編輯存儲的有關apt
搜索包的存儲庫的信息。 僅當您知道自己在做什麼時才這樣做。
sudo apt 編輯源
此命令打開您的默認編輯器並加載包含存儲庫信息的文件。
我應該使用 apt 還是 apt-get?
apt-get
命令不經常更新,這是一件好事。 它必須保持向後兼容性。 向後兼容性對apt
來說不是一個問題。 它被視為面向用戶的命令。
對於日常使用,請使用apt
。
如果您編寫與軟件包安裝有關的任何腳本,請使用apt-get
。 這為您的腳本提供了最大的可移植性和兼容性機會。
相關: Shell 腳本初學者指南:基礎