LFCS 系列第九講: 使用 Yum、RPM、Apt、Dpkg、Aptitude 進行 Linux 軟體包管理
Linux基金會認證系統管理員 – 第九講
請觀看下面關於Linux基金會認證計劃的演示。
本文是本系列教程中的第九講,今天在這篇文章中我們會引導你學習Linux軟體包管理,這也是LFCS認證考試所需要的。
軟體包管理
簡單的說,軟體包管理是系統中安裝和維護軟體的一種方法,這裡說的維護包含更新和卸載。
在Linux早期,程序只以源代碼的方式發行,還帶有所需的用戶使用手冊和必備的配置文件,甚至更多。現如今,大多數發行商一般使用預裝程序或者被稱為軟體包的程序集合。用戶可以使用這些預裝程序或者軟體包安裝到該發行版中。然而,Linux最偉大的一點是我們仍然能夠獲得程序的源代碼用來學習、改進和編譯。
軟體包管理系統是如何工作的
如果某一個軟體包需要一定的資源,如共享庫,或者需要另一個軟體包,這就稱之為依賴性。所有現在的包管理系統提供了一些解決依賴性的方法,以確保當安裝一個軟體包時,相關的依賴包也安裝好了。
打包系統
幾乎所有安裝在現代Linux系統上的軟體都會能互聯網上找到。它要麼由發行商通過中央倉庫(中央倉庫能包含幾千個軟體包,每個軟體包都已經為發行版構建、測試並且維護好了)提供,要麼能夠直接得到可以下載和手動安裝的源代碼。
由於不同的發行版使用不同的打包系統(Debian的.deb文件/CentOS的.rpm文件/openSUSE的專門為openSUSE構建的*.rpm文件),因此為一個發行版開發的軟體包會與其他發行版不兼容。然而,大多數發行版都屬於LFCS認證所涉及的三個發行版家族之一。
高級和低級打包工具
為了有效地進行軟體包管理的任務,你需要知道,有兩種類型的實用工具:低級工具(能在後端實際安裝、升級、卸載軟體包文件),以及高級工具(負責確保能很好的執行依賴性解決和元數據檢索的任務——元數據也稱為數據的數據)。
發行版 | 低級工具 | 高級工具 |
---|---|---|
Debian版及其衍生版 | dpkg | apt-get / aptitude |
CentOS版 | rpm | yum |
openSUSE版 | rpm | zypper |
讓我們來看下低級工具和高級工具的描述。
dpkg的是基於Debian的系統的一個低級包管理器。它可以安裝,刪除,提供有關資料,以及建立*.deb包,但它不能自動下載並安裝它們相應的依賴包。
- 閱讀更多: 15個dpkg命令實例
apt-get是Debian及其衍生版的高級包管理器,並提供命令行方式來從多個來源檢索和安裝軟體包,其中包括解決依賴性。和dpkg不同的是,apt-get不是直接基於.deb文件工作,而是基於軟體包的正確名稱。
- 閱讀更多: 25個apt-get命令實例
Aptitude是基於Debian的系統的另一個高級包管理器,它可用於快速簡便的執行管理任務(安裝,升級和刪除軟體包,還可以自動處理解決依賴性)。它在atp-get的基礎上提供了更多功能,例如提供對軟體包的幾個版本的訪問。
rpm是Linux標準基礎(LSB)兼容發行版所使用的一種軟體包管理器,用來對軟體包進行低級處理。就像dpkg一樣,rpm可以查詢、安裝、檢驗、升級和卸載軟體包,它多數用於基於Fedora的系統,比如RHEL和CentOS。
- 閱讀更多: 20個rpm命令實例
相對於基於RPM的系統,yum增加了系統自動更新的功能和帶依賴性管理的軟體包管理功能。作為一個高級工具,和apt-get或者aptitude相似,yum需要配合倉庫工作。
- 閱讀更多: 20個yum命令實例
低級工具的常見用法
使用低級工具處理最常見的任務如下。
1. 從已編譯(.deb或.rpm)的文件安裝一個軟體包
這種安裝方法的缺點是沒有提供解決依賴性的方案。當你在發行版本庫中無法獲得某個軟體包並且又不能通過高級工具下載安裝時,你很可能會從一個已編譯文件安裝該軟體包。因為低級工具不會解決依賴性問題,所以當安裝一個沒有解決依賴性的軟體包時會出現出錯並且退出。
# dpkg -i file.deb [Debian版和衍生版]
# rpm -i file.rpm [CentOS版 / openSUSE版]
注意:不要試圖在CentOS中安裝一個為openSUSE構建的.rpm文件,反之亦然!
2. 從已編譯文件中更新一個軟體包
同樣,當某個安裝的軟體包不在中央倉庫中時,你只能手動升級該軟體包。
# dpkg -i file.deb [Debian版和衍生版]
# rpm -U file.rpm [CentOS版 / openSUSE版]
3. 列舉安裝的軟體包
當你第一次接觸一個已經在工作中的系統時,很可能你會想知道安裝了哪些軟體包。
# dpkg -l [Debian版和衍生版]
# rpm -qa [CentOS版 / openSUSE版]
如果你想知道一個特定的軟體包安裝在哪兒,你可以使用管道命令從以上命令的輸出中去搜索,這在這個系列的第一講 操作Linux文件 中有介紹。例如我們需要驗證mysql-common這個軟體包是否安裝在Ubuntu系統中:
# dpkg -l | grep mysql-common
檢查安裝的軟體包
另外一種方式來判斷一個軟體包是否已安裝。
# dpkg --status package_name [Debian版和衍生版]
# rpm -q package_name [CentOS版 / openSUSE版]
例如,讓我們找出sysdig軟體包是否安裝在我們的系統。
# rpm -qa | grep sysdig
檢查sysdig軟體包
4. 查詢一個文件是由哪個軟體包安裝的
# dpkg --search file_name
# rpm -qf file_name
例如,pw_dict.hwm文件是由那個軟體包安裝的?
# rpm -qf /usr/share/cracklib/pw_dict.hwm
Linux中查詢文件
高級工具的常見用法
使用高級工具處理最常見的任務如下。
1. 搜索軟體包
aptitude的更新操作將會更新可用的軟體包列表,而aptitude的搜索操作會根據軟體包名進行實際搜索。
# aptitude update && aptitude search package_name
在search all選項中,yum不僅可以通過軟體包名還可以通過軟體包的描述搜索。
# yum search package_name
# yum search all package_name
# yum whatprovides 「*/package_name」
假定我們需要一個名為sysdig文件,想知道我們需要安裝哪個軟體包才行,那麼運行。
# yum whatprovides 「*/sysdig」
檢查軟體包描述
whatprovides告訴yum搜索一個含有能夠匹配上述正則表達式的文件的軟體包。
# zypper refresh && zypper search package_name [在openSUSE上]
2. 從倉庫安裝一個軟體包
當安裝一個軟體包時,在軟體包管理器解決了所有依賴性問題後,可能會提醒你確認安裝。需要注意的是運行更新( update)或刷新(refresh)(根據所使用的軟體包管理器)不是絕對必要,但是考慮到安全性和依賴性的原因,保持安裝的軟體包是最新的是系統管理員的一個好經驗。
# aptitude update && aptitude install package_name [Debian版和衍生版]
# yum update && yum install package_name [CentOS版]
# zypper refresh && zypper install package_name [openSUSE版]
3. 卸載軟體包
remove選項將會卸載軟體包,但把配置文件保留完好,然而purge選項將從系統中完全刪去該程序以及相關內容。
# aptitude remove / purge package_name
# yum erase package_name
###---注意要卸載的openSUSE包前面的減號
# zypper remove -package_name
在默認情況下,大部分(如果不是全部的話)的軟體包管理器會提示你,在你實際卸載之前你是否確定要繼續卸載。所以,請仔細閱讀屏幕上的信息,以避免陷入不必要的麻煩!
4. 顯示軟體包的信息
下面的命令將會顯示birthday這個軟體包的信息。
# aptitude show birthday
# yum info birthday
# zypper info birthday
檢查包信息
總結
作為一個系統管理員,軟體包管理器是你不能迴避的東西。你應該立即去使用本文中介紹的這些工具。希望你在準備LFCS考試和日常工作中會覺得這些工具好用。歡迎在下面留下您的意見或問題,我們將儘可能快的回復你。
via: http://www.tecmint.com/linux-package-management/
作者:Gabriel Cánepa 譯者:Flowsnow 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive