您的位置:首页 > 其它

yum安装的配置原理详解

2013-01-17 23:43 645 查看
相必大家对linux下的rpm和yum安装机制都非常熟悉了。现在工作上开始用到了linux的环境,首先要在linux的主机上安装oracle环境。在linux环境上安装oracle首先就是安装一些包。如果还是用rpm的包安装方法,这实在是个灾难。所以架设yum才是解决问题的王道。碍于工作的环境不能和外网联通,所以只好自己老老实实的架设本地yum。在架设yum时候分不同的linux发行版本,yum的配置也稍许不同。有些版本中直接挂载光盘,直接在/etc/yum.repos.d/*.repo 中将baseurl改成光盘中server源就可以了。这样在安装的时候,yum程序会去Server里找repodata这个文件夹里找comps-rhel5-server-core.xml 这个文件记录了所有的rpm的安装包的包头信息。找到了这个xml文件后linux会自动去找到依赖的包,如果需要公钥认证的情况需要在cdrom里找到RPM-GPG-KEY-redhat-realease这个公钥文件。由这个文件的内容来进行身份确认。当然这是最好的情况,但是很多情况下这都会出现异常,报错的原因:

[root@localhost rpm-gpg]# yum update

Loading "security" plugin

Loading "installonlyn" plugin

Loading "rhnplugin" plugin

This system is not registered with RHN.

RHN support will be disabled.

Setting up Update Process

Setting up repositories

No Repositories Available to Set Up

Reading repository metadata in from local files

Skipping security plugin, no data

No Packages marked for Update/Obsoletion

[root@localhost rpm-gpg]#

在加载后发现这不可用,原因是由于光盘上仓库的不可用。所以还得一点一点来,先复制光盘吧。

[root@localhost mnt]# mkdir Server

[root@localhost mnt]# cp -a /mnt/redhat-cdrom/Server/* /mnt/Server/

[root@localhost mnt]#

然后安装createrepo 软件。由于已经改变了文件的位置,所以一定要重新生成依赖关系的xml文件。就是把repodata里的xml文件更新

[root@localhost repodata]# createrepo -g /mnt/Server/repodata/comps-rhel5-server-core.xml /mnt/Server/

最后报错:

[root@localhost Server]# createrepo -g /mnt/Server/repodata/comps-rhel5-server-core.xml /mnt/Server/

2159/2159 - mesa-libGLw-devel-6.5.1-7.5.el5.i386.rpm

Saving Primary metadata

Saving file lists metadata

Saving other metadata

Could not remove old metadata dir: .olddata

Error was [Errno 39] Directory not empty: '/mnt/Server/.olddata'

Please clean up this directory manually.

[root@localhost Server]#

这个是由于元数据的限制,使得没办法重新创建。这里只需要删除元数据文件和文件夹。

[root@localhost Server]# cd .olddata

[root@localhost .olddata]# ll

total 4

-r--r--r-- 1 root root 1139 Oct 17 2007 TRANS.TBL

root@localhost .olddata]#

[root@localhost .olddata]# ll

total 4

-r--r--r-- 1 root root 1139 Oct 17 2007 TRANS.TBL

[root@localhost .olddata]# rm TRANS.TBL

rm: remove regular file `TRANS.TBL'? y

[root@localhost .olddata]# cd ..

[root@localhost Server]# rm -r .olddata

rm: remove directory `.olddata'? y

[root@localhost Server]# createrepo -g /mnt/Server/repodata/comps-rhel5-server-core.xml /mnt/Server/

2159/2159 - mesa-libGLw-devel-6.5.1-7.5.el5.i386.rpm

Saving Primary metadata

Saving file lists metadata

Saving other metadata

显示已经生成了新的元数据文件夹。

重新编辑客户yum文件

[root@localhost Server]# vim /etc/yum.repos.d/rhel-debuginfo.repo

[rhel-debuginfo]

name=Red Hat Enterprise Linux $releasever - $basearch - Debug

baseurl=file:///mnt/Server/

enabled=1

gpgcheck=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

对yum进行更新

[root@localhost Server]# yum clean all

Loading "security" plugin

Loading "installonlyn" plugin

Loading "rhnplugin" plugin

This system is not registered with RHN.

RHN support will be disabled.

Cleaning up Everything

[root@localhost Server]# yum update

Loading "security" plugin

Loading "installonlyn" plugin

Loading "rhnplugin" plugin

This system is not registered with RHN.

RHN support will be disabled.

Setting up Update Process

Setting up repositories

rhel-debuginfo 100% |=========================| 1.1 kB 00:00

Reading repository metadata in from local files

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

################################################## 2159/2159

Skipping security plugin, no data

No Packages marked for Update/Obsoletion

这里显示尽管没有注册到RHM,但是依然仓库可用。尝试安装软件php,

Installed: php.i386 0:5.1.6-15.el5

Dependency Installed: apr.i386 0:1.2.7-11 apr-util.i386 0:1.2.7-6 gmp.i386 0:4.1.4-10.el5 httpd.i386 0:2.2.3-11.el5 php-cli.i386 0:5.1.6-15.el5 php-common.i386 0:5.1.6-15.el5 postgresql-libs.i386 0:8.1.9-1.el5

Complete!

有的文档中说要拷贝密码文件到/mnt/Server等仓库文件中,但是处理后会出现多个私钥文件。这时后会显示找不到私钥文件。处理方法是向rpm中指明需要的私钥文件

rpm -import /etc/pki/rpm-gpg/RPM* 这样就解决问题了。

回顾一下情况,为什么这样就可以使用yum了呢?经过我的思考,我认为问题就出在xml这个依赖文件上,由于光盘是不可写的,那么本来的依赖文件又是直接指向RHM官方的,所以不可用。我们只有把它替换掉,为了把它替换掉,我们只能把所有的文件拷到本地,然后在本地重新创建依赖关系。这样,在yum安装时,会主动找到baseurl的文件夹内,在这里找到repodata目录,找到*.xml文件。这样才会一步步找到数据包。折腾了这么一大圈,终于找到了问题,解决了问题。

解决了yum,下一篇文章,进行oracle在linux下的安装。
本文出自 “坚持奋进着” 博客,转载请与作者联系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: