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。
安装成功。