apt vs. apt-get:Linux 上有什麼區別?

已發表: 2022-06-16
紅色背景下筆記本電腦上的 Linux 終端。
fatmawati achmad zaenuri/Shutterstock

為什麼基於 Debian 的 Linux 發行版有aptapt-getapt替換了apt-get還是有不同的目的? 我們解釋這兩個命令之間的關係。

Debian 軟件包管理系統

創建 Linux 發行版的主要工作是設計和創建包管理系統。 您的用戶需要有一種方法來安裝和卸載軟件包。 這需要軟件從您的軟件存儲庫中檢索軟件包文件並將它們正確安裝在用戶的計算機上。

軟件安裝和包管理器如何在 Linux 上工作
相關軟件安裝和包管理器如何在 Linux 上工作

這不是一件小事。 即使將軟件工程放在一邊,託管軟件存儲庫也需要時間、精力和費用。 這就是為什麼這麼多“新”Linux 發行版是現有 Linux 發行版的衍生產品的原因之一。

這導致了 Linux 發行版的家族或譜系,例如基於 Debian 的發行版、基於 Red Hat 的發行版、基於 Arch 的發行版等等。

Debian 系列發行版——包括 Ubuntu 和所有 Ubuntu 派生的發行版——使用 Debian 包管理器。 這使用帶有“.deb”文件擴展名的包文件,稱為 DEB 文件。 DEB 文件是包含其他存檔文件的壓縮文件。 歸檔文件包含應用程序的可執行文件、手冊頁、庫等。

如何在 Linux 中安裝 DEB 文件
相關如何在 Linux 中安裝 DEB 文件

從 DEB 文件安裝軟件意味著解壓縮所有這些組件文件並將它們放置在計算機上的正確位置。 它還需要與操作系統和桌面環境進行交互,以便應用程序顯示在應用程序搜索中,並且可以將其圖標添加到停靠欄或系統菜單中。

廣告

apt-getapt命令都這樣做。 但是為什麼我們對同一件事有兩個命令呢?

指揮鏈

真正執行安裝的包稱為dpkg 。 它實際上是一系列命令,包括dpkg-splitdpkg-triggerdpkg-divert 。 如果需要,這些將由高級軟件包工具套件或 APT 中的工具調用。 APT 是另一個工具集合,包括apt-getapt-cacheapt

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的全功能但簡化的界面,而aptapt-get的更用戶友好但略微精簡的版本。

如何在 Ubuntu 上編譯軟件時解決依賴關係
相關如何在 Ubuntu 上編譯軟件時解決依賴關係

但是apt-getapt提供的不僅僅是dpkg的簡單接口。 他們做dpkg不做的事情。 他們將從存儲庫中檢索文件,並嘗試幫助解決缺少的依賴項和衝突。

反過來, apt命令做了一些apt-get沒有做的事情。 它提供了更多普通用戶在安裝過程中希望看到的類型的信息,並抑制了apt-get顯示的一些更晦澀的信息。 apt提供出色的視覺反饋,並在終端窗口中使用顏色高亮和進度條。

aptapt-get之間有一些常用命令。 所有這些命令都可以以aptapt-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-桌面

在存儲庫中搜索名為 scribus-desktop 的包

那次搜索什麼也沒找到。 我們將使用更短、更通用的搜索線索再次嘗試。

 apt 搜索 scribus 

在存儲庫中搜索名為 scribus 的包

廣告

這會返回幾個點擊,我們可以看到有一個叫做“scribus”,它看起來確實是 Scribus 桌面發布應用程序的核心包。 apt show命令將為我們提供更多詳細信息。

 apt show scribus 

使用 apt show 了解更多關於 scribus 包的信息

我們得到有關軟件包的信息轉儲,包括將安裝的內容和軟件描述。

有關 scribus 包的信息

它還建議可能需要的其他軟件包,具體取決於我們的需要。

要安裝軟件包,我們需要使用sudo

 sudo apt install scribus 

安裝 scribus 包

這些文件是從存儲庫中檢索的。 當前正在檢索的文件以棕色突出顯示。

文件檢索作為軟件包安裝的一部分

檢索文件後,將安裝它們。 安裝進度顯示為以數字顯示的百分比和進度條。

安裝包帶有百分比和進度條

其他命令

apt listapt edit-sources命令是apt中不存在於apt-get中的選項。

廣告

apt list命令可以與--installed--upgradeable選項一起使用,以查看計算機上已安裝的軟件包以及可以升級的軟件包。

要查看計算機上安裝的應用程序列表,請使用:

 apt list --已安裝

使用 apt 列出已安裝的應用程序

滾動輸出,我們可以看到新安裝的 Scribus 應用程序的兩個條目。

已安裝應用程序的列表

要查看是否可以升級任何已安裝的應用程序,請使用--upgradeable選項。

 apt list --upgradeable 

可以升級的應用程序列表

apt命令還為您提供了一種方法來編輯存儲的有關apt搜索包的存儲庫的信息。 僅當您知道自己在做什麼時才這樣做。

 sudo apt 編輯源

使用 apt 編輯存儲庫信息

廣告

此命令打開您的默認編輯器並加載包含存儲庫信息的文件。

在 nano 編輯器中打開的存儲庫數據文件

我應該使用 apt 還是 apt-get?

apt-get命令不經常更新,這是一件好事。 它必須保持向後兼容性。 向後兼容性對apt來說不是一個問題。 它被視為面向用戶的命令。

對於日常使用,請使用apt

如果您編寫與軟件包安裝有關的任何腳本,請使用apt-get 。 這為您的腳本提供了最大的可移植性和兼容性機會。

相關: Shell 腳本初學者指南:基礎