学习Linux的同学们应该都知道RPM软件包,但是在安装RPM软件包时,肯定会遇到需要安装具有依赖关系的其他软件包,如果依赖包数量少,我们还可以手动解决,但是如果数量多了,那我们怎么办呢?今天我们就来了解一下,解决这个问题的YUM软件仓库。

Yum(全称为 Yellow dog Updater, Modified)是一个在FedoraRedHat以及SUSECentOS中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

YUM软件仓库可以分为3大类

1本地YUMfile//

2网络YUMftp://http://

3第三方YUM

部署YUM软件仓库,我们需要准备服务器端客户端

1本地YUM源(光盘源)

配置服务端:

mount /dev/cdrom /media挂载光盘

配置客户端:

vi /etc/yum.repos.d/yum.repo 这里只要建立一个以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公钥文件的位置

[LoadBalancer]
name=LoadBalancer
baseurl=file:///
mnt/LoadBalancer
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[HighAvailability]
name=HighAvailability
baseurl=file://
/mnt/HighAvailability
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

Yum命令格式:

yum <options> <command> <package...>

参数说明:

options: 常用的有:

-y : 如果在工作过程中如要使用者响应,这个参数可以直接回答yes

command:

list : 列出在yum server 上面有的RPM套件;若执行yum list installed则表示只列出系统中已安装的软件包,yum list available则表示只列出软件仓库中可用(尚未安装)的软件包,yum list update则表示列出可以升级版本的软件包。

install: 安装某个套件

update : 升级某个套件,如果update后面没有接套件名称,即更新目前主机所有已安装的套件.

info列出某个套件的详细信息,相当于rpm -qi package内容

clean 将已下载到本机的packagesheaders移除

remove : 移除已经安装在系统中的某个套件

yum update全部更新

yum update package更新指定程序包package

yum check-update检查可更新的程序

yum info <package>显示安装包信息

yum list 显示所有已经安装和可以安装的程序包

yum list <package> 显示指定程序包安装情况

yum search <keyword>查找软件包,当需要根据某个关键词来查找相关的软件包时,可以执行yumsearch 关键词,默认仅根据软件包名称和描述信息进行搜索。若执行yum search all 关键词,可以扩大搜索范围,例如,以下将搜索软件仓库并列出与httpd相关的软件包。Yum search all httpd

yum clean headers清除header

yum clean packages清除下载的rpm

yum clean all清除headerrpm

yum grouplist,列出所有组

yum groupinstall 安装某个软件组如:yum groupinstall Virtualization安装虚拟化

问题解决:

1、如果首次安装软件包之后,再次安装别的软件包的时候,很可能会发现报错了,错误信息如下:
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
2
、如果安装软件包出现public key for …….rpm is not install

解决方法:导入完整性验证的公钥

#mount /dev/sr0 /mnt

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

本地YUM(硬盘源)

在本地创建一个存放YUM源的目录,如mkdir/yum

RHEL6光盘中的所有内容拷贝到/yum

#mount /dev/cdrom /media

#cp-rf/media/*/yum

/etc/yum.repos.d目录下创建一个以.repo结尾的文件:

配置内容参照光盘源的YUM,此处略过

清理YUM缓存

yum clean all 

验证本地YUM安装包

B):网络YUM(通过FTPHTTP协议方式实现网络YUM安装RPM包)

Linux主机中使用YUM客户端工具在线升级、安装软件时,由于受到网络连接速度、网络带宽的限制,往往给用户安装带来不必要的麻烦。但是如果在局域网中构建一个基于本地的YUM源服务器,则可以大大解决用户安装软件速度较慢的问题

通过FTP方式:(方式1:硬盘源)

实现步骤:

YUM服务器端配置:

将RHEL6光盘中的所有内容复制到本地硬盘相关目录下,如/var/ftp/rhel6

推荐步骤:

安装vsftpd服务软件包

#mkdir /var/ftp/rhel6

#mount /dev/cdrom /media

#cp /media/* /var/ftp/rhel6

启动vsftpd服务:

service vsftpd start

chkconfigvsftpd on

在另一台客户端测试,首先创建repo文件指定YUM源位置

vi /etc/yum.repos.d/server.repo,注意文件的扩展名要以repo结尾,文件内容如下

[Server]

name=Red Hat Enterprise Linux base

baseurl=ftp://192.168.10.200/rhel6/Server

enabled=1

gpgcheck=1

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

 

[HighAvailability]

name=Red Hat Enterprise Linux base

baseurl=ftp://192.168.10.200/rhel6/HighAvailability

enabled=1

gpgcheck=1

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

 

[LoadBalancer]

name=Red Hat Enterprise Linux base

baseurl=ftp://192.168.10.200/rhel6/LoadBalancer

enabled=1

gpgcheck=1

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

 

[ResilientStorage]

name=Red Hat Enterprise Linux base

baseurl=ftp://192.168.10.200/rhel6/ResilientStorage

enabled=1

gpgcheck=1

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

验证:在客户端上安装RPM包,如samba

若YUM服务器开启了selinux功能,客户端通过YUM安装会失败

解决方法1:关闭selinux功能setenforce 0

方法2:setsebool allow_ftpd_full_access on

YUM服务器开启了防火墙,客户端通过YUM安装会失败

解决方法1:关闭iptables

方法2:在INPUT规则链上创建允许FTP访问的规则。

通过FTP方式:(方式2:光盘源)

YUM服务器端配置:(IP:192.168.10.200

先将RHEL6系统光盘挂载到/var/ftp/pub目录下

确保vsftpd服务启动

YUM客户端配置:(IP:192.168.0.1)

在/etc/yum.repos/目录下创建一个以.repo为后缀的文件,内容如下:

[Server]

name=Red Hat Enterprise Linux base

baseurl=ftp://192.168.10.200/pub/Server

enabled=1

gpgcheck=1

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

 

[HighAvailability]

name=Red Hat Enterprise Linux base

baseurl=ftp://192.168.10.200/pub/HighAvailability

enabled=1

gpgcheck=1

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

 

[LoadBalancer]

name=Red Hat Enterprise Linux base

baseurl=ftp://192.168.10.200/pub/LoadBalancer

enabled=1

gpgcheck=1

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

 

[ResilientStorage]

name=Red Hat Enterprise Linux base

baseurl=ftp://192.168.10.200/pub/ResilientStorage

enabled=1

gpgcheck=1

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

在客户端上测试

2、通过HTTPD方式:与ftp方式类似

()

对于用户搜集的非RHEL6光盘的更多其他软件包(必须包括存在依赖关系的所有安装文件)除了应准备相应的目录以外,还需要手动创建repodata数据文件,这就要用到createrepo工具(RHEL6光盘中有)

RHEL6安装光盘中Packages/目录的RPM包为例:

安装createrepo工具:

createrepoa主要用于收集目录中的rpm包文件的头信息,以创建repodata软件仓库数据(经gzip压缩的xml文件)。

mount/dev/cdrom /mnt//挂载光盘

rpm –ivh/mnt/Packages/createrepo-0.9.8-4.el6.noarch.rpm

注意:安装createrepo包时要依赖以下两个包:deltarpmpython-deltarpm,不能忽略这两个包

安装FTP服务器:

rpm-ivh/mnt/Packages/vsftpd-2……..(TAB键自动补齐)

配置软件仓库目录:

可参考安装光盘的Server目录

mkdir /var/ftp/pub/Packages

mkdir /var/ftp/pub/repodata

从光盘把所有的RPM包复制到/var/ftp/pub/Packages目录下(要确保硬盘有足够的磁盘空间)

cp- a /mnt/Packages/* /var/ftp/pub/Packages/

创建软件仓库信息文件:

cd /var/ftp/pub/

createrepo--database./

[root@server pub]# lsrepodata/

filelists.sqlite.bz2other.sqlite.bz2primary.sqlite.bz2repomd.xml

filelists.xml.gzother.xml.gzprimary.xml.gz

可以看到已经创建好了相应的软件仓库信息文件.