rpm包非常好用,但是不能很好的解决软件包依赖关系。yum或者Yellow dogUpdate或者Modified是杜克大学为了提高RPM软件包安装性而开发的一种软件包管理器。软件包的部署基于网络或本地。

网络yum。如果有多个客户端需要安装软件,如果使用rpm的话你就需要在每个rpm包中找到需要安装的软件包,但是我们知道有的软件包之间存在依赖关系,而且rpm不会自动处理这些依赖包关系。另外当多个主机需要安装同一个软件包时,使用rpm的话就会很麻烦了。所以构建一个网络yum这样是再好不过了。既然是网络yum最重要的当然是server了。yum服务端可以使用多种协议,例如:ftphttpnfs等。我使用的ftp,其他的大致相同。服务器端使用的是linux RedHat 9,客户端使用的是Linux el5.

214103492.png

一、首先在一台linux主机上安装ftp服务。在RedHat 9上,ftp软件包是在第三张光盘上。将第三张光盘添加到虚拟机中。

214147559.png

214204487.png

二、然后在/mnt目录中创建一个目录,并把光盘挂载到该目录下(卸载使用命令:umount   /mnt/cdrom),进入该目录安装vsftpd软件包。安装成功后开启ftp服务。使用命令:service vsftpd start

214245990.png

214303506.png

安装好ftp服务后,在/var目录下会产生一个ftp的目录。接下来就需要大量的供客户端下载安装的软件包了。由于RedHat9 版本太老,而且软件包在三张光盘上,为了方便所以我直接复制RedHat el5上的光盘内容。使用同样的方法将RedHat el5的光盘挂载到/mnt/cdrom中,并复制内容到/var/ftp目录中(cp  -r /mnt/cdrom  /var/ftp)。服务端一切ok

接下来就是客户端了,首先要确保你的客户端安装了yum程序,较高版本的都安装了。

214358615.png

如果安装过yum的话,进入/etc/yum.repos.d目录:cd /etc/yum.repos.d,会有一个rhel-debuginfo-repo文件。打开vim  rhel-debuginfo-repo

214437954.png

214459463.png

214523675.png

如果你有多个服务端的话,在/etc/yum.repos.d/中可以创建多个以.repo格式的文件,这样便于区分每个服务端,里面的内容和rhel-debugifo.repo类似。设置好rhel-debugifo.repo后使用命令:yum  repolist  可以在本地建立服务端repos的缓存信息。同时在服务端的每个目录中会产生一个repodata的文件夹,里面的文件是服务端目录中软件包的信息。

214617720.png

214639567.png

获得服务器上的软件包系信息后,你就可以在本地直接安装服务器上面的软件了。使用命令:

yum  list  查看所有的软件包                  yum  list installed(查看本地已安装)

yum  list available (查看本地可安装)          yum  install  软件包名(安装软件包)

yum  info  软件名(查看服务端软件包信息)   yum   remove 软件名(卸载软件)

214711683.png214739902.png

我们知道用rpm安装的时候会存在依赖关系,但是rpm不会自动处理。而用yum的话就可以很好的解决。

214918457.png

214921115.png

214949820.png

如果主机中配置了yum的话,在图形化界面下,进入系统——》添加或删除程序可以看到服务器端上的哪些软件已经安装,哪些软件没有安装,同时可以安装你没安装的软件包。

215037684.png

当安装某个软件时,可能需要安装多个包,yum就会将这多个包放在一个分组中,这就是yum包组的概念。

yum  grouplist (查看yum中的包组信息)    yum groupinfo  包组名(查看包组信息)

yum  groupinstall 包组名(安装包组)   yum groupmove  包组名(卸载包组)

215108444.png

yum 服务器端软件更新

当我们在服务器端添加了新的软件包时,由于服务器端的文件/repodata里的文件没有更新,主要是更新/repodata目录中的comps-rhel5-server-core.xml这个文件,其他的文件会一块儿更新。客户端的软件包缓存信息也是从服务端下载的,也没有更新。所以就无法获得服务器端新的软件包。如何让客户端能够获得新的软件包呢?

一、首先在服务端安装createrepo,这个软件包就在linux光盘的Server目录中,因为你已经把它拷贝到了ftp目录中了,所以你可以直接计入ftp/server中安装:rpm –ivhcreaterepo-0.4.11-3.el5.noarch.rpm

二、安装成功之后使用命令:

createrepo -g server/repodata/comps-rhel5-server-core.xml  ./

就是把server目录下的repodata目录中的那个关于软件组的文件更新到本目录(即server目录)。因为我们把新的软件放在了server目录下了。

在客户端使用命令(yum clean all)清除软件包的缓存信息,然后再使用命令(yum repolist)重新更新本地缓存信息,这样你就可以安装新的软件包了。如何你需要安装的软件包不是红帽提供的话,由于你在前面的配置文件中设置了“gpgcheck=1”,所以你会安装成功的。如果想安装的话,将配置文件中的签名检测该为“gpgcheck=0”或者在安装软件包是添加一个参数 yum install 软件名–nogpgcheck