Linux 包管理基礎:apt、yum、dnf 和 pkg

介紹

大多數現代的類 Unix 操做系統都提供了一種中心化的機制用來搜索和安裝軟件。軟件一般都是存放在存儲庫中,並經過包的形式進行分發。處理包的工做被稱爲包管理。包提供了操做系統的基本組件,以及共享的庫、應用程序、服務和文檔。前端

包管理系統除了安裝軟件外,它還提供了工具來更新已經安裝的包。包存儲庫有助於確保你的系統中使用的代碼是通過審查的,而且軟件的安裝版本已經獲得了開發人員和包維護人員的承認。web

在配置服務器或開發環境時,咱們最好了解下包在官方存儲庫以外的狀況。某個發行版的穩定版本中的包有可能已通過時了,尤爲是那些新的或者快速迭代的軟件。然而,包管理不管對於系統管理員仍是開發人員來講都是相當重要的技能,而已打包的軟件對於主流 Linux 發行版來講也是一筆巨大的財富。shell

本指南旨在快速地介紹下在多種 Linux 發行版中查找、安裝和升級軟件包的基礎知識,並幫助您將這些內容在多個系統之間進行交叉對比。數據庫

包管理系統:簡要概述

大多數包系統都是圍繞包文件的集合構建的。包文件一般是一個存檔文件,它包含已編譯的二進制文件和軟件的其餘資源,以及安裝腳本。包文件同時也包含有價值的元數據,包括它們的依賴項,以及安裝和運行它們所需的其餘包的列表。瀏覽器

雖然這些包管理系統的功能和優勢大體相同,但打包格式和工具卻因平臺而異:安全

 

 

Debian 及其衍生版,如 Ubuntu、Linux Mint 和 Raspbian,它們的包格式是 .deb。APT 這款先進的包管理工具提供了大多數常見的操做命令:搜索存儲庫、安裝軟件包及其依賴項,並管理升級。在本地系統中,咱們還可使用 dpkg 程序來安裝單個的 deb 文件,APT 命令做爲底層 dpkg 的前端,有時也會直接調用它。服務器

最近發佈的 debian 衍生版大多數都包含了 apt 命令,它提供了一個簡潔統一的接口,可用於一般由 apt-get 和 apt-cache 命令處理的常見操做。這個命令是可選的,但使用它能夠簡化一些任務。curl

CentOS、Fedora 和其它 Red Hat 家族成員使用 RPM 文件。在 CentOS 中,經過 yum 來與單獨的包文件和存儲庫進行交互。工具

在最近的 Fedora 版本中,yum 已經被 dnf 取代,dnf 是它的一個現代化的分支,它保留了大部分 yum 的接口。url

FreeBSD 的二進制包系統由 pkg 命令管理。FreeBSD 還提供了 Ports 集合,這是一個存在於本地的目錄結構和工具,它容許用戶獲取源碼後使用 Makefile 直接從源碼編譯和安裝包。

更新包列表

大多數系統在本地都會有一個和遠程存儲庫對應的包數據庫,在安裝或升級包以前最好更新一下這個數據庫。另外,yum 和 dnf 在執行一些操做以前也會自動檢查更新。固然你能夠在任什麼時候候對系統進行更新。

 

 

更新已安裝的包

在沒有包系統的狀況下,想確保機器上全部已安裝的軟件都保持在最新的狀態是一個很艱鉅的任務。你將不得不跟蹤數百個不一樣包的上游更改和安全警報。雖然包管理器並不能解決升級軟件時遇到的全部問題,但它確實使你可以使用一些命令來維護大多數系統組件。

在 FreeBSD 上,升級已安裝的 ports 可能會引入破壞性的改變,有些步驟還須要進行手動配置,因此在經過 portmaster 更新以前最好閱讀下 /usr/ports/UPDATING 的內容。

 

 

搜索某個包

大多數發行版都提供針對包集合的圖形化或菜單驅動的工具,咱們能夠分類瀏覽軟件,這也是一個發現新軟件的好方法。然而,查找包最快和最有效的方法是使用命令行工具進行搜索。

 

 

查看某個軟件包的信息

在安裝軟件包以前,咱們能夠經過仔細閱讀包的描述來得到不少有用的信息。除了人類可讀的文本以外,這些內容一般包括像版本號這樣的元數據和包的依賴項列表。

 

 

從存儲庫安裝包

知道包名後,一般能夠用一個命令來安裝它及其依賴。你也能夠一次性安裝多個包,只需將它們所有列出來便可。

 

 

從本地文件系統安裝一個包

對於一個給定的操做系統,有時有些軟件官方並無提供相應的包,那麼開發人員或供應商將須要提供包文件的下載。你一般能夠經過 web 瀏覽器檢索這些包,或者經過命令行 curl 來檢索這些信息。將包下載到目標系統後,咱們一般能夠經過單個命令來安裝它。

在 Debian 派生的系統上,dpkg 用來處理單個的包文件。若是一個包有未知足的依賴項,那麼咱們可使用 gdebi 從官方存儲庫中檢索它們。

在 CentOS 和 Fedora 系統上,yum 和 dnf 用於安裝單個的文件,而且會處理須要的依賴。

 

 

刪除一個或多個已安裝的包

因爲包管理器知道給定的軟件包提供了哪些文件,所以若是某個軟件再也不須要了,它一般能夠乾淨利落地從系統中清除這些文件。

 

 

apt 命令

Debian 家族發行版的管理員一般熟悉 apt-get 和 apt-cache。較少爲人所知的是簡化的 apt 接口,它是專爲交互式使用而設計的。

 

 

雖然 apt 一般是一個特定操做的快捷方式,但它並不能徹底替代傳統的工具,它的接口可能會隨着版本的不一樣而發生變化,以提升可用性。若是你在腳本或 shell 管道中使用包管理命令,那麼最好仍是堅持使用 apt-get 和 apt-cache。

獲取幫助

除了基於 web 的文檔,請記住咱們能夠經過 shell 從 Unix 手冊頁(一般稱爲 man 頁面)中得到大多數的命令。好比要閱讀某頁,可使用 man:

man page

 

在 man 中,你能夠用箭頭鍵導航。按 / 搜索頁面內的文本,使用 q 退出。

 

相關文章
相關標籤/搜索