天天看點

Linux下使用Yum管理本地軟體包

Linux下使用Yum管理本地軟體包(repository)

  在Linux系統的維護中,Linux軟體包之間的依賴性是一件令人十分頭痛的事情。比如你要安裝軟體包A,但是安裝的時候提示你在安裝A前得先安裝軟體包B;而當你去安裝軟體包B時,又提示你得先安裝C庫... 為了解決此問題,我們得使用Linxu下的yum(Yellow dog Updater,Modified) 工具。yum工具能根據repository(軟體倉庫)中rpm包的各種header資訊,自動安裝依賴的包,解決依賴性問題。在linux下使用yum的添加/删除/更改rpm包十分友善!此文來自:http://www.aiezu.com/

下面是linux下一個簡單的yum配置和使用過程:

1. 實驗環境

作業系統:Red Hat Enterprise Linux AS 5

核心版本:2.6.18-8.el5

CPU構架:i386 SMP

附件軟體:Red Hat Enterprise Linux AS 5 DVD ISO檔案

2. 在linux下安裝yum并建立repository(軟體倉庫)

#在linux系統下挂載rhel 5.0 dvd iso檔案 

mkdir -p /mnt/iso 

mount -o loop /opt/rhel5.0.iso /mnt/iso

#在linux系統下安裝yum,createrepo包 

rpm -ivh /mnt/ISO/Server/yum-3.0.1-5.el5.noarch.rpm 

rpm -ivh /mnt/ISO/Server/yum-metadata-parser-1.0-8.fc6.i386.rpm 

rpm -ivh /mnt/ISO/Server/yum-rhn-plugin-0.4.3-1.el5.noarch.rpm 

rpm -ivh /mnt/ISO/Server/yum-updatesd-3.0.1-5.el5.noarch.rpm 

rpm -ivh /mnt/ISO/Server/createrepo-0.4.4-2.fc6.noarch.rpm

#将挂載的iso中的檔案複制到/opt/rhel5.0目錄中 

mkdir /opt/rhel5.0 

cp -R /mnt/ISO/* /opt/rhel5.0

#重新生成repository(軟體倉庫)相關檔案,生成的檔案在目前目錄的“repodata”檔案夾下。

cd /opt/rhel5.0/Server/ 

rm -rf repodata 

createrepo -g /mnt/ISO/Server/repodata/comps-rhel5-server-core.xml ./

3. 在linux配置yum

在/etc/yum.repos.d/目錄下建立一個字尾為.repo的配置檔案,如:rhel_yum.repo(該目錄下的其他檔案可以删除),rhel_yum.repo内容如下:此文來自:http://www.aiezu.com/

[Server] 

name=Server 

baseurl=file:///opt/rhel5.0/Server/

#注意baseurl指向我們的repository(軟體倉庫)/opt/rhel5.0/Server目錄 

enable=1 

gpgcheck=0

此文來自:http://www.aiezu.com/

4. 測試rhel5.0 linux下的yum

#清除yum設定緩存 

yum clean all

#檢視已安裝的和未安裝的軟體包組 

yum grouplist

#安裝Web Server包組 

yum groupinstall "Web Server"

#檢視組資訊 

yum groupinfo "Web Server" 

#删除"MySQL Database" 

yum groupremove "MySQL Database"

#更新"MySQL Database" 

yum groupupdate "MySQL Database"

5. linux下yum安裝的常見問題

①. 問:為什麼要把挂載的ISO鏡像中的檔案複制到本地磁盤上,而不直接在挂載的iso檔案系統中使用?

  答:因為我們必須重新生成repository的相關配置檔案,而挂載的iso檔案系統是不可寫的,是以必須複制到本地磁盤中去。

②. 問:當我們配置好後執行 "yum groupinstall 'MySQL Database' " 安裝時報如下錯誤,是怎麼回事?

yum groupinstall "MySQL Database" 

Loading "installonlyn" plugin 

Loading "rhnplugin" plugin 

This system is not registered with RHN. 

RHN support will be disabled. 

Setting up Group Process 此文來自:http://www.aiezu.com/

Setting up repositories 

Reading repository metadata in from local files 

primary.xml.gz 100% |=========================| 663 kB 00:00 

################################################## 2113/2113 

Resolving Dependencies 

--> Populating transaction set with selected packages. Please wait. 

---> Downloading header for mysql to pack into transaction set. 

media://1170972069.396645%232/mysql-5.0.22-2.1.i386.rpm: [Errno 4] IOError: 

<urlopen error unknown url type: media> 

Trying other mirror. 

Error: failed to retrieve mysql-5.0.22-2.1.i386.rpm from s 

error was [Errno 4] IOError: <urlopen error unknown url type: media>

  答:請确定"/etc/yum.repos.d/rhel_yum.repo"檔案中的"baseurl"指向的不是挂載的iso檔案系統路徑,而是本地磁盤檔案系統路徑,如此文的第三步的中的第三行。并且确定使用了第二步的第九行重新生成了repository配置檔案。其實"media://1170972069.396645#1"就是rhel 5.0 dvd iso 中的Server/repodata/repomd.xml檔案的配置值。此文來自:http://www.aiezu.com/

③. 問:為什麼我執行"yum grouplist"指令後沒有列出任何包組資訊?如下:

#yum grouplist 

Setting up Group Process 

Server 100% |=========================| 951 B 00:00 

Done

答:請确定執行了createrepo指令重新生成repository配置檔案,并且指令帶了 "-g"選項,如第二步第19行所示。rhel 5.0 dvd iso中的"Server/repodata/comps-rhel5-serer-core.xml"即包含了rpm包的分組資訊。此文來自:http://www.aiezu.com/

好了,Linux下使用Yum管理本地軟體包就寫到此了,有什麼問題歡迎随時給我留言。