Linux系统下YUM仓库的配置与搭建

2015-05-30 10:11曹新鸿

摘要:阐述Linux操作系统选软件安装中两种常见的形式,并分析了RPM软件包管理存在的问题,引入YUM技术并对YUM仓库的安装、配置与搭建进行研究,实现使用YUM仓库解决RPM管理中存在的依赖关系。

关键词:YUM仓库 RPM 开源软件 Linux系统

对于Linux初学者来说,安装软件是一件很让人头疼的事,因为在Linux以开源著称,Linux下安装软件不像在 Windows中那样简单。在Linux系统中大多数软件提供的是源代码,而不是现成的可执行文件,这就要求用户根据自己系统的实际情况和自身的需要来配置、编译源程序后,软件才能使用。这也是Linux之所以不能被普遍人群所接受的重要原因。随着Linux的不断升级,软件的安装也在不断的改进,本文旨在研究Linux下的YUM技术。

1 问题描述

随着Linux的不断升级与进步,目前Linux下的软件安装包主要有两种形式,其一是RPM包,其二是压缩成*.tar.gz的形式。*.tar.gz的格式需要有一定的Linux专业功底,RPM包是最受欢迎的形式。Linux是开源的操作系统,并且一向推崇自由软件,正是因为开源与自由造成了RPM包具有很深的依赖关系。使用RPM在Linux中安装软件或者服务时经常会涉及到rpm包的依赖,往往我们在安装A软件时,提示会依赖于B,安装B时会依赖于C,安装时会……等一系列的依赖关系,YUM仓库技术可以自动解决RPM的依赖关系,方便软件的安装。因此本文的研究具有重要的意义。

2 YUM技术介绍

Yum(全称为Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

我们在安装好Linux后要进行YUM源的设置,是为了方便日后对软件包的管理,解决单独安装RPM软件包时可能产生的软件包依赖关系。在企业中,我们会设置企业自己的YUM源(库)方便企业Linux系统(主要是红帽和红帽的Fedora)对软件包的管理,更重要的原因是保证YUM源的安全性,因为一个软件包从源头就被修改过或者做过手脚的话,那么这样的软件的安装已经没有什么意义了。

3 YUM仓库的搭建

第一步:设置虚拟光驱,装入Red Hat Enterprise Linux 6.0光盘,如图1,图2所示。

第二步:挂在光驱到/mnt/目录下。

root@seashorewang ~]# mount /dev/cdrom /mnt/

mount: block device /dev/sr0 is write-protected, mounting read-only

第三步:创建cangku文件夹,并拷贝/mnt/Packages/下的所有文件到cangku文件下。

[root@seashorewang /]# mkdir cangku

[root@seashorewang /]#cd cangku

[root@seashorewang /]# cd /cangku

[root@seashorewang cangku]# cp -r /mnt/Packages/ /cangku/

说明:因为光盘中的Packages目录中的内容过大,需要1-2分钟的等待,当然不同配置的计算机的时耗不一样。

第四步:安装createrepo文件。

[root@seashorewang yum.repos.d]# cd /mnt/Packages/

[root@seashorewang Packages]# rpm -e creterapo-0.9.8.4.el6.noarch deltarpm-3.5-0.5.20090913git.el6.

I686 python-deltarpm-3.5-0.5.20090913git.el6.i686

[root@seashorewang Packages]#rpm -ivh createrepo-0.9.8-4.el6.noarch.rpm

Warning: createrepo-0.9.8.4.el6.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY error: Failed dependendcies:

Deltarpm is needed by createrepo-0.9.8-4.el6.noarch

Python-deltarpm is needed by createrepo-0.9.8-4.el6.noarch

说明:这里因为createrepo-0.9.8-4.el6.noarch.rpm软件包依赖于另外两个软件包,所以安装出现了错误。

[rot@seashorewang Packages]# rpm -ivh createrepo-0.9.8-4.el6.noarch.rpm deltarpm-3.5-0.5.20090913git.el6.i686.rpm pytho

Warning: createrepo-0.9.8-4.el6.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY

Preparing... ###########################[100]

1:deltarpm ###########################[33%]

2:python-deltarpm ###########################[67%]

3:createrepo ###########################[100%]

说明:这里将三个软件包一起安装,可以自动解决依赖关系。

第五步:创建依赖关系。

[root@seashorewang repodata]# cd /

[root@seashorewang /]# createrepo -g /mnt/repodata/3c26ed953dc3d25ef7bc8f1ff057le771cc16fefe6623ba654ele33a68cbaelb-comps-rhel6-Server.xml.gz /cangku/Packages/

2168/2679 -hunspell-nb-2.0.100.5.1.el6.noarch.rpm

Iso-8859-l encoding on Ville Skytt?- 2.4.2-2

2679/2679 -k3b-1.0.5-13.el6.i686.rpm

Saving Primary metadata

Saving file lists mesadata

Saving other metadata

说明:这里的/cangku/Packages/目录一定要和后面创建的配置文件一致。

第六步:编写配置文件。

[root@seashorewang /]# cd /etc/yum.repos.d/

[root@seashorewang yum.repos.d]# ls

wangluocangku.repo

说明:仓库的配置文件保存到/etc/yum.repos.d/目录下,这个非常重要。

[root@seashorewang yum.repos.d]# vim wodecangku.repo

[myyum]

name=wodecangku

Baseurl=file:///cangku/Packages/

endabled=1

Gpgchech=0

说明:以上是配置文件的内容,下面对每一项逐一介绍。

[ ]是仓库名字,这个可以随意;

Name=….这个你可以理解为仓库的描述,这个可以不写这一行;

Baseurl=file:///cangku/Packages,这里解释一下仓库的baseurl可以指向本地,ftp和互联网,所有才有了三种配置。file:// ftp:// http://,这里要强调的是Linux中一切都以根开始的那路径上要加个/,所以最后是file:///cangku/Packages,意思是在本地的/ cangku / Packages下;

Enable=1,这里是说是否用户仓库,1是启用,0是不启用;

Gpgcheck=0是说是否检查软件的KEY,我一般都不检查;

Gpgkey=…这里是说你的KEY文件在哪里,默认为不启用,指定Red Hat发行版数字签名公钥文件。

第七步:测试。

[root@seashorewang yum.repos.d]# yum install xinetd

Loaded plugins: refresh-packagekit, rhnplugin

This system is not registered with RHN.

RHN support will be disabled.

Myyum | 2.0 kB 00:00...

Myyum/primary |1.3 MB 00:00...

Myyum 2679/2679

Setting up Install Process

Resolving Dependencies

--> Running taansaction check

---> Package xinetd.i686 2:2.3.14-29.el6 set to be updated

-->Finished Dependency Resolution

Dependencies Resolved

Package Arch Version Repository Size

Installing:

Xinetd i686 2:2.3.14-29.el6 myyum 121k

Transaction Summary

Install 1 Package(s)

Upgrade 0 Package(s)

Total download size: 121 k

Installed size:258 k

Is this ok [y/N]: y

Downloading Packages:

Running rpm_check_debug

Running Transaction Test

Transaction Test Succeeded

Running Rransaction

Warning: RPMDB altered outside of yum.

Installing : 2:xinetd-2.3.14-29.el6.i6861/1

Installed:

Xinetd.i686 2:2.3.14.29.el6

Complete!

4 总结

Linux下软件的安装分为源代码和RPM包,RPM包的使用有效解决了大文件编译难的问题,但是却存在很多依赖关系,为了能够自动解决依赖关系出现了YUM技术,文章对YUM技术进行研究并详细介绍了YUM仓库配置、搭建与测试的具体步骤。

参考文献:

[1]王海宾,白尚旺,等.基于Observer模式的AS/RS调度系统设计与实现[J].计算机技术与发展,2009,19(3):110-113.

[2]鸟哥.鸟哥的Linux私房菜基础篇(第三版)[M].机械工业出版社,2009.7.

[3]鸟哥.鸟哥的Linux私房菜服务器架设篇(第三版)[M].机械工业出版社,2009.7.

作者简介:

曹新鸿(1971-),男,陕西蓝田人,重庆大学本科学历,工程师,邢台职业技术学院后勤集团职工,研究方向:计算机应用技术。