2.YUM的组成:要成功使用YUM机制来更新系统和软件,需要有一个包含各种rpm安装文件的软件仓库,提供这个仓库的服务器可以作为本地YUM源,在客户端中只需要正确指定这个软件仓库的位置等信息,那么就可以通过YUM服务器来更新系统或软件.
3.YUM软件仓库的形式:可以作为本地YUM源,也可以借助FTP或HTTP协议来发布,这样便可为网络中的客户端提供YUM服务.
4.YUM软件仓库为了查询软件包的依赖关系等信息,其要提供仓库数据库(repodata),其中收集了目录下所有rpm包的信息.
5.以下所示是以rhel-server-6.2-x86_64-dvd为例,在这张光盘中,已经在Packages/建好了repodata数据,因此只要将光盘上的内容复制到硬盘或通过HTTP或FTP进行发布,就可以作为软件仓库
 
本地YUM(光盘源)-------------------------
这是rhel-server-6.2-x86_64-dvd的目录结构:

HighAvailability  <—高可用相关软件包,如rhcs等相关套件

Server  <—常规软件包,如mysql,httpd,开发工具,系统管理工具等

LoadBalancer  —负载均衡相关软件包,如lvs,pirihan
ResilientStorage  <—弹性存储
  <—可扩展文件系统
     这五个文件夹的每个文件夹下都有一个Packages目录,它只是一个链接,指向顶级的../Packages目录。还有一个repodata目录,其中的类似于*-comps-rhel6-HighAvailability.xml的XML文件定义了对应特性的软件包信息,这些软件包被分成不同的组,每个组有一个ID。这样的repodata精确描述各个RPM包的详细信息,如依赖关系,包含文件,校验码信息等。可以通过在Kickstart文件的%packages段中指定组ID来安装相应组中的软件包。
Packages  —真正存放所有软件包的目录
EFI  <—用于64位的基于EFI的系统引导。其中BOOT目录下的BOOTX64.conf为grub的配置文件,用于显示引导菜单。

      TRANS.TBL  <—记录当前目录的列表,用mkisofs的-T参数重新生成,主要是为了长文件名称。

      Discinfo  <—是安装介质的识别信息。.treeinfo文件记录不同安装方式安装程序所在的目录结构,如PXE方式时,内核kernel=p_w_picpaths/pxeboot/vmlinuz,根文件系统initrd=p_w_picpaths/pxeboot/initrd.img。
      Isolinux  <—有开机引导系统安装的内核(vmlinuz)及RAM镜像(initrd.img),在引导系统时会载入内存,给系统的安装提供一个Linux安装引导平台,文件夹中还有在不同模式下显示信息的boot.msg文件,splash.jpg是特殊格式的引导过程背景图片(640*480)。安装时这个画面上的引导菜单内容在isolinux.cfg文件中指定。按Enter会自动进入图形界面安装模式,若按Esc,会显示"boot: "命令提示符,进入用户交互模式,界面上会有各种模式操作提示。键入"linux text",会进入文本安装模式。
Image  <—包含有各种引导镜像。最重要的是引导第二阶段安装需要用到的镜像文件install.img(rhel 5中是stage2.img),anaconda程序就在这个镜像文件中。另外还有用于制作微型启动光盘的boot.iso(为节省空间rhel 6.0中已经删除了,在rhel 5中是有的),有可放置于USB或其他大容量可引导介质的VFAT分区上,制作引导工具的镜像diskboot.img(rhel 5中有),也有用于制作PXE安装方式引导介质的pxeboot文件夹等。
 
 
 
#mount /dev/cdrom /mnt   将RHEL6的光盘挂载到/mnt下

#vi /etc/yum.repos.d/yumserver.repo   在/etc/yum.repos.d/下创建 以.repo结尾的文件

#ls /mnt | grep ^[A-Z][b-z][^.][A-Za-z]*$ > /etc yum.repos.d/yumserver.repo  这里先不急配置YUM文件,通过简单的正则把那             五个仓库检索出来然后在写入到/etc/yum.repos.d/yumserver.repo,省的我们看光盘了写了.

 

具体配置:
[Server]               //仓库名称
name=Server             //仓库描述信息
baseurl=file:///mnt/Server              //URL的访问路径
enabled=1               //启用此仓库软件
gpgcheck=1               //验证软件包的签名
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release  //GPG公钥文件的位置
 
[HighAvailability]
name=HighAvailability
baseurl=file:///mnt/HighAvailability
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
 
[LoadBalancer]
name=LoadBalancer
baseurl=file:///mnt/LoadBalancer
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
 
[ResilientStorage]
name=ResilientStorage
baseurl=file:///mnt/ResilientStorage
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
 
[ScalableFileSystem]
name=ScalableFileSystem
baseurl=file:///mnt/ScalableFileSystem
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
至此yumserver.repo文件写入完毕.
 
 
YUM的命令格式:
yum的命令形式一般是如下:yum [options] [command] [package ...]
其中的[options]是可选的,选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。[command]为所要进行的操作,[package ...]是操作的对象。
概括了部分常用的命令包括:
自动搜索最快镜像插件:   yum install yum-fastestmirror
安装yum图形窗口插件:    yum install yumex
查看可能批量安装的列表: yum grouplist
1 安装
yum install 全部安装
yum install package1 安装指定的安装包package1
yum groupinsall group1 安装程序组group1
2 更新和升级
yum update 全部更新
yum update package1 更新指定程序包package1
yum check-update 检查可更新的程序
yum upgrade package1 升级指定程序包package1
yum groupupdate group1 升级程序组group1
3 查找和显示
yum info package1 显示安装包信息package1
yum list 显示所有已经安装和可以安装的程序包
yum list package1 显示指定程序包安装情况package1
yum groupinfo group1 显示程序组group1信息yum search string 根据关键字string查找安装包
4 删除程序
yum remove &#124; erase package1 删除程序包package1
yum groupremove group1 删除程序组group1
yum deplist package1 查看程序package1依赖情况
5 清除缓存
yum clean packages 清除缓存目录下的软件包
yum clean headers 清除缓存目录下的 headers
yum clean oldheaders 清除缓存目录下旧的 headers

yum clean, yum clean all (= yum clean packages; yum clean oldheaders) 清除缓存目录下的软件包及旧的headers

 
 
问题排错:
如果首次安装软件包之后,再次安装别的软件包的时候,很可能会发现报错了,错误信息如下:

Error: Cannot retrieve repository metadata (repomd.xml) for repository:

InstallMedia. Please verify its path and try again

 
其实,rhel6在首次读取改软件仓库之后,会把原本光盘根目录下,也就是一同被你拷贝到软件仓库目录的media.repo复制一份到/etc/yum.repos.d/,而该文件也就是导致本地yum源失效的罪魁祸首。
 
解决方法:
删除软件仓库中的media.repo
# rm -f /share/rhel/media.repo
或者在/etc/yum.conf增加以下选项
skip_if_unavailable=True
其次,如果安装软件出现public key for……rpm is not install
解决方法,导入完整性验证的公钥:
#mount /dec/cdrom /mnt

#rpm –import /mnt/RPM-GPG-KEY-redhat-release

 
----------------------本地YUM(硬盘源)-------------------------
#mkdir /yum       //在本地创建一个存放YUM源的目录

#cp –rf  /mnt/*  /yum           //将光盘里的文件拷贝到刚创建的目录下

#vim   /etc/yum.repos.d/yumserver.repo   //创建YUM配置文件
配置内容与光盘源类似,只是URL路径有变,此处略过
 
 
----------------------YUM服务器(FTP)-------------------------
服务器配置(192.168.1.1):
SELINUX:setenforce 0 或 setsebool allow_ftpd_full_access on
iptables:开放对FTP端口的规则或关闭iptables
#mount /dev/cdrom /var/ftp/pub   //将光盘挂在在ftp的共享目录下
确保FTP的服务正常启动
YUM客户端配置(192.168.1.2):
创建YUM配置文件/etc/yum.repos.d/yumserver.repo,内容如下:
[Server]              
name=Server            
baseurl=ftp://192.168.1.1/pub/Server              //YUM服务器URL的访问路径
enabled=1              
gpgcheck=1              
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
其他配置内容类似,略过
测试
 
----------------------YUM服务器(HTTP)-------------------------
与ftp方式类似
YUM服务器配置(192.168.1.1):
#mount /dev/cdrom /var/www/html   //将光盘挂在在HTTP的访问目录下
确保HTTP的服务正常启动
YUM客户端配置(192.168.1.2):
创建YUM配置文件/etc/yum.repos.d/yumserver.repo,内容如下:
[Server]              
name=Server            
baseurl=ftp://192.168.1.1/Server             //YUM服务器URL的访问路径
enabled=1              
gpgcheck=1              
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
其他配置内容类似,略过
测试
 
很多时候自己搜集的一些软件包,要想通过yum来安装这些软件包的话,我们就得自己创建repodata数据文件,这就要用到createrepo工具
repodata 数据库介绍
repodata 数据库中的文件主要是 XML 格式,精确描述一个 rpm 包的详细信息, 如依赖关系,包含文件,校验码信息。目前,这个格式被 apt-rpm,smartpm,red carpet 和 yum 支持。
repodata作为软件的仓库,其目录下有四个必要文件:filelists.xml.[gz],other.xml.[gz],primary.xml.[gz]和repomd.xml(md 意思是 metadata),其中最主要的是repomd.xml文件。一般出现的找不到repodata目录或文件的错误的原因通常有三个:一是路径问题;二是没有生成repodate目录;三是*.repo配置文件冲突(这个需要特意注意)。
以RHEL6安装光盘中Packages/目录下的包为例
安装createrepo工具:
#mount /dev/cdrom /mnt

#rpm –ivh  /mnt/Packages/createrepo-*

配置软仓库目录:

#mkdir  /yum/Packages

#mkdir /yum/repodata
把光盘里的包拷贝到/yum/Packages下
创建软件仓库信息文件:
#cd /yum
#createrepo –database ./
至此repodata文件已经创建完成
 
 
 
 
 
 
 
 
 
 
 
本文如有错误之处,请留言指出,谢谢!!