APT是linux系統下的一個軟件包管理工具,可以自動下載、配置、安裝二進制或源代碼格式的軟件包;大部分apt命令必須以具有sudo權限 的用戶身份運行。APT最早被設計為dpkg的前端,用于處理deb格式的軟件包;現在經過APT-RPM組織修改,APT已經可以安裝在支持RPM的系統管理RPM包。
本教程操作環境:Ubuntu 21.04系統、Dell G3電腦。
如果我們想通過 Linux 命令行安裝某個軟件,直接在命令行下輸入以下命令即可:
sudo apt-get update sudo apt-get install <軟件名>
這種安裝方式是通過 apt 工具 實現安裝的,那 apt 到底是什么呢??
一、APT 工具
??????? APT 全稱 Advanced Packaging Tool,即 高級包裝工具,是 Linux 系統下的一個軟件包管理工具。APT 可以自動下載、配置、安裝二進制或源代碼格式的軟件包,因此簡化了 Unix 系統上管理軟件的過程。Apt 可用來:
-
安裝應用程序
-
移除應用程序
-
保持應用為最新
-
還有更多功能……
??????? APT 最早被設計為 dpkg(Debian Package)的前端,用于處理 deb 格式的軟件包。現在經過 APT-RPM 組織修改,APT 已經可以安裝在支持 RPM 的系統管理 RPM 包。這個包管理器包含以 apt- 開頭的多個工具,如? apt-get ?? apt-cache ?? apt-cdrom? 等。
??????? 簡單來說,apt 就是一個命令行實用程序,用于 安裝、更新、管理、刪除、查找… 軟件包。大部分 apt 命令必須以具有 sudo 權限 的用戶身份運行。
- apt 適用于 Ubuntu、Debian 和相關 Unix 發行版,不適用于 redhat、centos……
二、APT 工作原理
??????? APT 是一個客戶/服務器系統。在服務器上先復制所有的 deb 包(deb – Debian 軟件包格式的文件擴展名);然后使用 APT 的分析工具 – genbasedir,根據每個 deb 包的包頭信息對所有的 deb 包進行分析,并將分析結果記錄在一個文件 – DEB 索引清單中。APT 服務器的 DEB 索引清單置于 base 文件夾內。一旦 APT 服務器內的 deb包 有所變動,一定要使用 genbasedir 產生新的 DEB 索引清單。客戶端在進行安裝或升級時先要查詢 DEB 索引清單,從而獲得所有具有依賴關系的軟件包,并一同下載到客戶端以便安裝。
??????? 當客戶端需要安裝、升級或刪除某個軟件包時,客戶端計算機取得 DEB 索引清單的壓縮文件后,將其解壓置于 /var/state/apt/lists/ 目錄下。而客戶端使用 apt-get install 或 apt-get upgrade 命令時,就會將這個文件夾內的數據和客戶端計算機內的 DEB 數據庫進行比對,知道哪些 DEB 是已安裝、未安裝或是可升級的。
??????? 客戶端需要定期從服務器上下載一個軟件包列表,因為 apt 工具實際上是在可用軟件包的數據庫上工作。當執行安裝操作時 apt-get 工具會在本地的可用軟件包數據庫中搜索目標軟件的相關信息,并根據這些信息在相關的服務器上下載軟件并安裝。所以在安裝之前通常都會通過? sudo apt-get update? 更新一下本地的軟件包數據庫。
三、APT 命令
(1)apt-get 常用命令
命令 | 說明 |
---|---|
sudo apt-get update | 更新本地軟件包數據庫 |
sudo apt-get install | 安裝軟件包 |
sudo apt-get –reinstall install | 重新安裝軟件包,如:系統被破壞、一些錯誤的配置導致軟件無法正常工作… |
sudo apt-get upgrade | 升級所有已安裝的軟件包 |
sudo apt-get full-upgrade | 完全升級已安裝的軟件包 |
sudo apt-get remove | 移除已安裝的軟件包(包括與被移除軟件包有依賴關系的軟件包,但不包含軟件包的配置文件) |
sudo apt-get autoremove | 移除之前被其他軟件包依賴,但現在不再被使用的軟件包 |
sudo apt-get purge | 完全移除軟件包(包括軟件包的配置文件) |
sudo apt-get clean | 移除下載到本地的已經安裝的軟件包,默認保存在 /var/cache/apt/archives/ |
sudo apt-get list | 生成軟件包列表 |
sudo apt-get search | 搜索軟件包 |
sudo apt-get show | 顯示軟件包具體信息,如:版本號、安裝大小、依賴關系等 |
(2)apt-get 常用參數
參數 | 說明 |
---|---|
-y | 自動回應是否安裝軟件包的選項,在一些自動化安裝腳本中非常有用 |
-s | 模擬安裝 |
-q | 安靜安裝方式,指定多個 q 或 -q=#(#表示數字,用于設定靜默級別),在不想要安裝過程中屏幕輸出過多內容時非常有用 |
-f | 修復損壞的依賴關系 |
-d | 僅下載,不安裝 |
–reinstall | 重新安裝已經安裝但可能存在問題的軟件包 |
–install-suggests | 同時安裝 APT 給出的建議安裝的軟件包 |
四、使用 apt 命令管理基于 Debian 和 Ubuntu 的 Linux 發行版中的包
我在本教程中使用 Ubuntu 21.04,但你可以使用任何其他基于 Debian/Ubuntu 的 Linux 發行版,例如 Linux Mint、elementary OS、Linux Lite 等。
apt 作用于可用包的數據庫。如果數據庫沒有更新,系統將不知道是否有可更新的軟件包可用。這就是為什么在任何 Linux 系統中進行了全新安裝后,首先要更新存儲庫。
更新包數據庫需要超級用戶權限,因此您需要使用sudo。
sudo apt update
運行此命令看到從各種服務器檢索的包信息:
在此處看到三種類型的行:Hit、Get 和 Ign。基本上這些是:
- 命中(Hit):包版本與之前的版本沒有變化。
- 忽略(Ign):包被忽略。要么是包版本太新,它甚至懶得檢查,要么在檢索文件時出錯,但錯誤微不足道,因此被忽略。
- 獲取(Get):有一個新版本可用。它將下載有關版本的信息(而不是包本身)。您可以在上面的屏幕截圖中看到帶有“獲取(Get)”行的下載信息(大小以kb為單位)。
更新軟件包數據庫后,就可以升級已安裝的軟件包。最方便的方法是升級所有具有可用更新的軟件包。可以簡單地使用以下命令:
sudo apt upgrade
這將顯示將要升級的所有軟件包的數量和種類。
還有另一種方法可以使用以下命令提供完整升級:
sudo apt full-upgrade
full-upgrade 與 upgrade 的工作原理相同,只是如果系統升級需要刪除系統上已安裝的軟件包,它會這樣做。然而,正常的升級命令不會這樣做。
4.3、apt update 和 apt upgrade 的區別
雖然聽起來像當執行 apt update 時,它會更新軟件包,你將獲得最新版本的軟件包。但事實并非如此。apt update 只更新包的數據庫。
例如,如果你安裝了 XYZ 包 1.3 版,則在 apt 更新后,數據庫將知道有更新的 1.4 版可用。當你在 apt update 之后執行 apt upgrade 時,它會將已安裝的軟件包升級(或更新)到較新的版本。
這就是為什么使用此命令更新 Ubuntu 系統最快、最方便的原因:
sudo apt update && sudo apt upgrade -y
如果已經知道包的名稱,則可以使用以下命令進行安裝:
sudo apt install <package_name>
只需將
sudo apt install mplayer
可以使用自動完成功能。當不確定確切的包名稱時,可以輸入幾個字母并按Tab,它會建議所有以這些字母開頭的可用的包。例如:
注意是按Tab,而不是Enter!
使用自動完成功能查找具有給定名稱的包:
不必一次只安裝一個軟件包。可以通過同時提供多個軟件包名稱來一次安裝多個軟件包:
sudo apt install <package_1> <package_2> <package_3>
4.6、如果在已安裝的軟件包上運行 apt install 會怎樣
這將只查看數據庫,如果找到更新的版本,它會將已安裝的軟件包升級到較新的軟件包。因此,使用它不會造成任何傷害,除非你不希望它升級。
如果由于某種原因你想安裝一個包,但不想升級,如果它已經安裝了。在這種情況下,你可以通過以下方式使用選項 –no-upgrade:
sudo apt install <package_name> --no-upgrade
如果你只想升級軟件包但不想安裝它(如果尚未安裝),則可以使用以下命令執行此操作:
sudo apt install <package_name> --only-upgrade
默認情況下,將為應用程序安裝存儲庫中可用的最新版本。但是如果不想安裝最新版本,可以指定版本號。你需要知道要安裝的確切版本號。
只需在包名稱后添加 =version 即可。
sudo apt install <package_name>=
刪除軟件包就像安裝它們一樣簡單。只需使用以下命令:
sudo apt remove <package_name>
卸載軟件包的另一種方法是使用清除。該命令的使用方式如下:
sudo apt purge <package_name>
apt remove 和 apt purge 的區別
- apt remove只是刪除包的二進制文件。它留下了殘留的配置文件。
- apt purge 刪除與包相關的所有內容,包括配置文件。
如果你習慣于apt remove刪除特定軟件然后重新安裝它,你的軟件將具有相同的配置文件。當然,再次安裝時會要求你覆蓋現有的配置文件。
當你弄亂了程序的配置,你想從系統中完全清除它的痕跡再重新開始,清除會很有用。也可以在已刪除的包上使用apt purge。
通常,apt remove卸載軟件包綽綽有余。
這不是搜索包的最好方式。但是當你在尋找一些特定的庫時,這很有用。只需將以下命令與所需的搜索詞一起使用,就可以找到包含搜索詞的所有包。
apt search <search term>
如果你想在安裝或刪除軟件包之前了解有關軟件包的更多信息,可以使用以下命令:
apt show <package_name>
這將顯示有關給定包的信息,例如其依賴項、安裝和下載大小、包的不同來源、包內容的描述等:
apt 命令有一個名為 list 的新選項。使用此命令,可以查看所有準備升級的較新版本的軟件包:
apt list --upgradable
還可以使用–installed選項查看系統上所有已安裝的軟件包:
apt list --installed
還有第三個選項,稱為 –all-versions。它將列出可用于你的系統的所有軟件包:
apt list --all-versions
與 apt-get 不同,這里沒有 clean 和 autoclean 命令。但是仍然可以使用 autoremove 選項釋放一些磁盤空間:
sudo apt autoremove
安裝軟件時會自動安裝一些滿足依賴關系的庫和包。如果軟件包被刪除,這些自動安裝的庫和包雖然沒有用,但仍會保留在系統中。可以使用此命令清除掉。
相關推薦:《Linux視頻教程》