YUM

  从某种意义上来看,红帽企业版5.0开始,软件包的部署是基于网络的。而在5.0之前的软件包的部署可以是基于本地的。yum安装可以解决rpm安装产生的数据包依赖问题。

  在yum服务器上需要有几个仓库:

  Server:安装各种各样的服务器

  VT:实现虚拟化

  Cluster:群集

  ClusterStorage:存储相关

  yum的实现需要有服务器和客户端。首先要解决的是客户端如何访问仓库。一般情况下可以使用ftp、http、nfs等网络协议来访问。下面以搭建一台ftp服务器,并将光盘文件都拷贝到/var/ftp/目录下,因为访问ftp服务器的时候,客户端直接登录到这个目录下。

  

  服务器端编辑好后,编辑客户端的yum配置文件:

  

  该配置文件说明了可以在该文件中编辑yum仓库,或者在/etc/yum.repos.d目录下创建后缀名为repo的文件来编辑仓库。通常情况下是在/etc/yum.repos.d目录下创建仓库文件。

[root@localhost ftp]# vim /etc/yum.repos.d/rhel-debuginfo.repo
[rhel-server]  表示要访问的对方有一个什么样的仓库。本地叫法repoID。
name=Red Hat Enterprise Linux server  仓库的描述信息
baseurl=file:///mnt/cdrom/Server/  如何访问仓库
enabled=1  是否使用仓库
gpgcheck=1  是否完整性检测
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release  指明公钥文件

  修改该文件为如下内容:

  

  在本地查看服务器上能够识别的仓库有哪些:

  

  列出所有的软件包:yum list all

  查看安装的软件包:yum list installed

  查看没有安装的软件包:yum list available

   查看数据包的相关信息:yum info vsftpd

  安装:yum install -y 包名称

  卸载:yum remove 包名称

  查看服务器上有多少包组:yum grouplist 

  安装包组:yum groupinstall 包组名称

  删除包组:yum groupremove 包组名称

  查看组的相关信息:yum groupinfo 包组名称

问题:添加新的软件包,同时让客户端去使用,怎么做?

思路:在服务器端/var/ftp/下的Server目录、VT目录、Cluster目录以及ClusterStorage目录下都有一个repodata目录:

[root@localhost ftp]# cd Server/
[root@localhost Server]# ll repodata/
total 10580
-r--r--r-- 1 root root 1139 Aug 19 2009 TRANS.TBL
-r--r--r-- 1 root root 1027241 Aug 19 2009 comps-rhel5-server-core.xml(表示该Sever目录里面的组文件,这些软件包归类到哪个组里面,是一个分类文件)  
-r--r--r-- 1 root root 2416156 Aug 19 2009 filelists.xml.gz(描述所有软件包的相关信息,后来拷贝进去的软件包,还没有更新进去
-r--r--r-- 1 root root 6599203 Aug 19 2009 other.xml.gz(其他的文件)
-r--r--r-- 1 root root 749780 Aug 19 2009 primary.xml.gz(主要的文件)
-r--r--r-- 1 root root 1314 Aug 19 2009 repomd.xml(校验文件)

  正是因为这些相关信息没有更新,所以在客户端上找不到刚放进去的新的软件包。客户端在找数据包的时候,就是基于这些文件来找的。

  步骤:(在服务器端)

  1、清除缓存文件:yum clean all

  2、yum list all  将repodata里面的相关信息缓存到本地。

  3、rpm -ivh createrepo-0.4.11-3.el5.noarch.rpm

  4、cd /var/ftp/Server()

  5、createrepo -g repodata/comps-rhel5-server-core.xml ./ (更新文件的时候主要更新comps-rhel5-server-core.xml这个文件。如果数据包放在其他目录,那么在其他目录执行该命令即可。)

  下面演示将libmcrypt-2.5.7-5.el5.i386.rpm放入服务器的/var/ftp/Server目录中,并进行yum安装。

  

  在客户端通过yum list all 找不到新放进去的软件包。

  在服务器端更新相关文件:

  

  

  

  更新好文件之后,在客户端执行如下指令,即可发现新放入的软件包:

  

  接下来在客户端安装该软件包:

  

  提示没有安装成功,没有该软件包数字签名的公钥。由于这个包并不是红帽官方所提供出来的。所以不能用红帽的公钥。解决的办法是在安装的时候加上参数 --nogpgcheck。

  

  

  安装成功。