1. 程式人生 > >Linux軟體包管理 RMP包

Linux軟體包管理 RMP包

RPM 包的安裝雖然很方便和快捷,但是依賴性實在是很麻煩,尤其是庫檔案依賴,還要去 rpmfind 網站査找庫檔案到底屬於哪個 RPM 包,從而導致 RPM 包的安裝非常煩瑣。那麼,有沒有可以自動解決依賴性、自動安裝的方法呢?

答案是肯定的,yum 線上管理就可以自動處理 RPM 包的依賴性問題,從而大大簡化 RPM 包的安裝過程。但需要注意的是,首先,yum 安裝的還是 RPM 包,其次,yum 安裝是需要有可用的 yum 伺服器存在的,當然這個 yum 伺服器可以在網上,也可以使用光碟在本地搭建。

yum 可以方便地進行 RPM 包的安裝、升級、査詢和解除安裝,而且可以自動解決依賴性問題,非常方便和快捷。但是,一定要注意 yum 的解除安裝功能。yum 在解除安裝軟體的同時會解除安裝這個軟體的依賴包,但是如果解除安裝的依賴包是系統的必備軟體包,就有可能導致系統崩潰。除非你確實知道 yum 在自動解除安裝時會解除安裝哪些軟體包,否則最好不要執行 yum 解除安裝。

yum源搭建

yum 源既可以使用網路 yum 源,也可以使用本地光碟作為 yum 源。要使用網路 yum 源,你的主機必須是正常聯網的。

當然,要使用 yum 進行 RPM 包安裝,那麼必須安裝 yum 軟體。檢視命令如下:

[[email protected] ~]# rpm -qa | grep yum
yum-metadata-parser-1.1.2-16.el6.i686
yum-3.2.29-30.el6.centos.noarch
yum-utils-1.1.30-14.el6.noarch
yum-plugin-fastestmirror-1.1.30-14.el6.noarch
yum-plugin-security-1.1.30-14.el6.noarch

如果沒有安裝,則需要手工使用 RPM 包方式安裝。

網路yum源伺服器搭建

在主機網路正常的情況下,CentOS 的 yum 是可以直接使用的,不過我們需要了解一下 yum 源配置檔案的內容。

yum 源配置檔案儲存在 /etc/yum.repos.d/ 目錄中,檔案的副檔名一定是"*.repo"。也就是說,yum 源配置 檔案只要副檔名是"*.repo"就會生效。

[[email protected] ~]# ls /etc/yum.repos.d/
CentOS-Base.repo
CentOS-Media.repo
CentOS-Debuginfo.repo.bak、
CentOS-Vault.repo

這個目錄中有 4 個 yum 源配置檔案,預設情況下 CentOS-Base.repo 檔案生效。我們開啟這個檔案看看,命令如下:

[[email protected] yum.repos.d]# vim /etc/yum.repos.d/ CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/? release= $releasever&arch=$basearch&repo=os
baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
…省略部分輸出…

在 CentOS-Base.repo 檔案中有 5 個 yum 源容器,這裡只列出了 base 容器,其他容器和 base 容器類似。

我們解釋一下 base 這個容器:

  • [base]:容器名稱,一定要放在[]中。
  • name:容器說明,可以自己隨便寫。
  • mirrorlist:映象站點,這個可以註釋掉。
  • baseurl:我們的 yum 源伺服器的地址。預設是 CentOS 官方的 yum 源伺服器,是可以使用的。如果你覺得慢,則可以改成你喜歡的 yum 源地址。
  • enabled:此容器是否生效,如果不寫或寫成 enabled 則表示此容器生效,寫成 enable=0 則表示此容器不生效。
  • gpgcheck:如果為 1 則表示 RPM 的數字證書生效;如果為 0 則表示 RPM 的數字證書不生效。
  • gpgkey:數字證書的公鑰檔案儲存位置。不用修改。


yum 源配置檔案預設不需要進行任何修改就可以使用,只要網路可用就行。

以本地光碟作為 yum 源伺服器

如果 Linux 主機不能聯網,yum 就不能使用嗎? yum 已經考慮到這個問題,所以在 /etc/yum.repos.d/ 目錄下 還有一個 CentOS-Media.repo 檔案,這個檔案就是以本地光碟作為 yum 源伺服器的模板檔案,只需要進行簡單的修改即可。

1) 放入 CentOS 安裝光碟,並掛載光碟到指定位置。命令如下:

[[email protected] ~]# mkdir /mnt/cdrom
#建立cdrom目錄,作為光碟的掛載點
[[email protected] ~]# mount /dev/cdrom /mnt/cdrom/
mount: block device/dev/srO is write-protected, mounting read-only
#掛載光碟到/mnt/cdrom目錄下


2) 修改其他幾個 yum 源配置檔案的副檔名,讓它們失效,因為只有副檔名是"*.repo"的檔案才能作為 yum 源配置檔案。當然也可以刪除其他幾個 yum 源配置檔案,但是如果刪除了,當你又想用網路作為 yum 源時,就沒有了參考檔案,所以最好還是修改副檔名。 命令如下:

[[email protected] ~]# cd /etc/yum.repos.d/
[[email protected] yum.repos.d]# mv CentOS-Base, repo CentOS-Base.repo.bak
[[email protected] yum.repos.d]#mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
[[email protected] yum.repos.d]# mv CentOS-Vault.repo CentOS-Vault.repo.bak


3) 修改光碟 yum 源配置檔案 CentOS-Media.repo,參照以下方修改:

[[email protected] yum.repos.d]# vim CentOS-Media.repo
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///mnt/cdrom
#地址為你自己的光碟掛載地址
#file:///media/cdrom/
#file:///media/cdrecorder/
#註釋這兩個的不存在地址
gpgcheck=1
enabled=1
#把enabled=0改為enabled=1, 讓這個yum源配置檔案生效
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

配置完成,現在可以感受一下yum的便捷了。

 

um提供了查詢、安裝、升級和解除安裝軟體包的命令,一一給大家介紹。

查詢

査詢yum源伺服器上所有可安裝的軟體包列表

[[email protected] yum.repos.d]# yum list
#查詢所有可用軟體包列表
Installed Packages
#已經安裝的軟體包
ConsdeKit.i686 0.4.1-3.el6
@anaconda-CentOS-201207051201 J386/6.3
ConsdeKit-libs.i686 0.4.1-3.el6 @anaconda-CentOS-201207051201 J386/6.3
…省略部分輸出…
Available Packages
#還可以安裝的軟體包
389-ds-base.i686 1.2.10.2-15.el6 c6-media
389-ds-base-devel.i686 1.2.10.2-15.el6 c6-media
#軟體名 版本 所在位置(光碟)
…省略部分輸出…

查詢yum源伺服器中是否包含某個軟體包

[[email protected] yum.repos.d]# yum list 包名
#查詢單個軟體包

例如:

[[email protected] yum.repos.d]# yum list samba
Available Packages samba.i686 3.5.10-125.el6 c6-media
#搜尋yum源伺服器上所有和關鍵字相關的軟體包

例如:

[[email protected] yum.repos.d]# yum search 關鍵字
#搜尋yum伺服器上所有和關鍵字相關的軟體包

例如:

[[email protected] yum.repos.d]# yum search samba
#搜尋伺服器上所有和samba相關的軟體包
========================N/S Matched:
samba =============================
samba-client.i686:Samba client programs
samba-common.i686:Files used by both Samba servers and clients
samba-doc.i686: Documentation for the Samba suite
…省略部分輸出…
Name and summary matches only, use"search all" for everything.

查詢指定軟體包的資訊

[[email protected] yum.repos.d]# yum info samba
#查詢samba軟體包的資訊
Available Packages <-沒有安裝
Name : samba <-包名
Arch : i686 <-適合的硬體平臺
Version : 3.5.10 <―版本
Release : 125.el6 <—釋出版本
Size : 4.9M <—大小
Repo : c6-media <-在光碟上
…省略部分輸出…

安裝

[[email protected] yum.repos.d]# yum -y install 包名

選項:

  • install:安裝;
  • -y:自動回答yes。如果不加 -y,那麼每個安裝的軟體都需要手工回答yes;


例如:

[[email protected] yum jepos.d]#yum -y install gcc
#使用yum自動安裝gcc

在講 RPM 包安裝時提到,gcc 是 C 語言的編譯器,其依賴的軟體包比較多,手工使用 RPM 包安裝太麻煩了,所以使用 yum 安裝。

yum 安裝可以自動解決依賴性,而且安裝速度也比原始碼包快得多。不過,yum 到底安裝的還是 RPMS,所以 rpm 命令還是必須學習和使用的。

升級

[[email protected] yum.repos.d]# yum -y update 包名
#升級指定的軟體包

選項:

  • update:升級;
  • -y:自動回答yes;


注意,在進行升級操作時,yum 源伺服器中軟體包的版本要比本機安裝的軟體包的版本高。

[[email protected] yum.repos.d]# yum -y update
#升級本機所有軟體包

這條命令會升級系統中所有的軟體包。不過我們的生產伺服器是穩定優先的,所以這種全系統升級的情況並不多見。

解除安裝

再次強調一下,除非你確定解除安裝的軟體的依賴包不會對系統產生影響,否則不要執行 yum 的解除安裝,因為很有可能在解除安裝軟體包的同時解除安裝的依賴包也是很重要的系統檔案,這就有可能導致系統崩潰。

解除安裝命令如下:

[[email protected] yum.repos.d]# yum remove 包名
#解除安裝指定的軟體包

例如:

[[email protected] yum.repos.d]# yum remove samba
#解除安裝samba軟體包

 

在安裝 Linux 的過程中,在選擇軟體包的時候,如果選擇了"現在自定義",就會看到 Linux 支援的許多軟體組,比如編輯器、系統工具、開發工具等。那麼,在系統安裝完成後,是否可以利用 yum 安裝這些軟體組呢?

當然可以,只需要利用 yum 的軟體組管理命令。

查詢可以安裝的軟體組

[[email protected] ~]#yum grouplist
#查詢可以安裝的軟體組

查詢軟體組中包含的軟體

[[email protected] ~]#yum groupinfo 軟體組名
#查詢軟體組中包含的軟體

例如:

[[email protected] ~]#yum groupinfo "Web Server"
#查詢軟體組"Webserver"中包含的軟體

安裝軟體組

[[email protected] ~]#yum groupinstall 軟體組名
#安裝指定軟體組,組名可以由grouplis查詢出來

例如:

[[email protected] ~]#yum groupinstall "Web Server"
#安裝網頁服務軟體組

解除安裝軟體組

[[email protected] ~]# yum groupremove 軟體組名
#解除安裝指定軟體組

軟體組管理對於安裝功能集中的軟體集合非常方便。比如,在安裝 Linux 的時候沒有安裝圖形介面,但是後來發現需要圖形介面的支援,這時可以手工安裝圖形介面軟體組(X Window System 和 Desktop),就可以很方便地安裝圖形介面了。