搭建YUM服务器,配置yum客户端

搭建YUM服务器 配置yum客户端

 

作者:沈小然

版本:1.0

日期:2013年4月23日

1   YUM介绍

YUM是Yellow dog Updater, Modified的缩写,是由Duke University所发起的计划,目的就是为了解决在安装或卸载RPM包过程中的依赖问题,使用者在对RPM包的安装、升级、卸载过程中自动安装需要的依赖,卸载过程也自动卸载相关的软件包。可以实现这样功能的除了YUM外,还有APT (Advanced Package Tool,是由debian所发展的一个软件管理工具)。

 YUM的工作原理,在每一个 RPM软件的头(header)里面都会纪录该软件的依赖关系,那么如果可以将该头的内容纪录下来并且进行分析,可以知道每个软件在安装之前需要额外安装哪些基础软件。也就是说,在服务器上面先以分析工具将所有的RPM档案进行分析,然后将该分析纪录下来,只要在进行安装或升级时先查询该纪录的文件,就可以知道所有相关联的软件。

所以YUM的基本工作流程如下:

服务器端:在服务器上面存放了所有的RPM软件包,然后以相关的功能去分析每个RPM文件的依赖性关系,将这些数据记录成文件存放在服务器的某特定目录内。

客户端:如果需要安装某个软件时,先下载服务器上面记录的依赖性关系文件(可通过http或FTP方式,所以yum服务器还要把RPM数据源通过http或ftp发布出来),通过对服务器端下载的纪录数据进行分析,然后取得所有相关的软件,一次全部下载下来进行安装。

2   搭建YUM服务器

 

系统环境:

Red Hat Enterprise Linux Server release 5.6 (Tikanga)

YUM服务器需要的软件包:

yum

yum-security

yum-rhn-plugin

yum-metadata-parser

yum-updatesd

createrepo

yum客户端需要安装的软件包:

yum

yum-updatesd

YUM服务器配置步骤

1.  复制RHEL5光盘中的Cluster  ClusterStorage  Server  VT四个目录做为YUM服务器的数据源。RHEL6中只需要copy一个目录Packages就可以了。

# mkdir -p /apps/Yum_Server/redhat5.6/

将Cluster  ClusterStorage  Server  VT四个目录拷贝到/apps/Yum_Server/redhat5.6/

注:用户属主是root.root,不影响http的虚拟机发布。

2.  使用Createrepo命令将这4个目录里的所有包进行一次“包依赖性关系生成”,并且会把生成关系的xml文件保存到同级目录的一个叫repodata的文件夹里comps-rhel5-xxxx.xml(xxxx和目录名一致)。命令如下:

# createrepo Cluster(RHEL6 则是createrepo Packages

32/32 - Cluster_Administration-as-IN-5.2-1.noarch.rpm                          

Saving Primary metadata

Saving file lists metadata

Saving other metadata

查看生成的文件

# ls Cluster/repodata/

comps-rhel5-cluster.xml

 

# createrepo ClusterStorage/

39/39 - Global_File_System-si-LK-5.2-1.noarch.rpm                              

Saving Primary metadata

Saving file lists metadata

Saving other metadata

查看生成的文件

# ls ClusterStorage/repodata/

comps-rhel5-cluster-st.xml

 

# createrepo Server/

2428/2428 - gettext-devel-0.17-1.el5.i386.rpm                                   

Saving Primary metadata

Saving file lists metadata

Saving other metadata

查看生成的文件

# ls Server/repodata/

comps-rhel5-server-core.xml

 

# createrepo VT/

38/38 - Virtualization-as-IN-5.2-11.noarch.rpm                                 

Saving Primary metadata

Saving file lists metadata

Saving other metadata

查看生成的文件

# ls VT/repodata/

comps-rhel5-vt.xml

3. 配置一个HTTP或FTP服务器,发布Cluster  ClusterStorage  Server  VT四个目录

直接通过非80端口来发布,这样不影响原来80端口运行的应用。

Listen 9100

<VirtualHost *:9100>
    ServerAdmin shenxiaoran
    DocumentRoot /var/www/html/Yum_Server
    ServerName test.yum.com
</VirtualHost>

 

重启apache服务,记得关闭selinux,否则不允许开9100端口。

测试HTTP服务

 

http://192.168.1.10:9100/Packages/

4. 创建一个YUM客户端的xxx.repo文件,放到服务器上供yum客户端下载,这样不必在上百台客户端上逐个手动配置了。

创建一个yum.repo文件(扩展名必须是repo,文件名随便起)放到每个客户端的/etc/yum.repos.d/yum.repo位置。

[rhel-base]

name= redhat5.6 x86

baseurl=http://192.168.1.10:9100/redhat5.6/Server

gpgcheck=0

enabled=1

 

[rhel-vt]

name= redhat5.6 x86

baseurl=http://192.168.1.10:9100/redhat5.6/VT

gpgcheck=0

enabled=1

 

[rhel-cluster]

name= redhat5.6 x86

baseurl=http://192.168.1.10:9100/redhat5.6/Cluster

gpgcheck=0

enabled=1

 

[rhel-ClusterStorage]

name= redhat5.6  x86

baseurl=http://192.168.1.10:9100/redhat5.6/ClusterStorage

gpgcheck=0

enabled=1

 

相关参数说明:

l  [ ]:内的是仓库的名字,不重复即可。

l  name:仓库的描述。

l  baseurl: YUM源地址,这里配置的是http,还可以是ftp,FILE等。

l  enabled :是否启用这个仓库,1为起用,0为禁用

l  gpgcheck :是否检查GPG签名(验证要安装的包是不是REDHAT官方的),我们搭建内部的yum源这里要关闭GPG签名检查。

3   配置YUM客户端

 

首先从YUM服务器把客户端需要的yum文件下载到本地相应目录

# wget http://192.168.1.10:8080/redhat5.6/yum.repo

# cp -f /root/yum.repo /etc/yum.repos.d/

测试yum客户端

# yum install openssl*

 

至此,YUM服务器成功搭建,yum客户端也可以成功访问

4 创建国外Saltstack的本地yum镜像源

解决的问题:

因为Saltstack自己的repo源是在国外,解决国内服务器yum安装Saltstack的时候下载慢,经常下载失败的问题;

解决本地某些服务器无法访问外网的情况下需要yum源的问题;

解决国内镜像版本不够新的问题;

搭建步骤

1) 在之前搭建的yum server的基础上,我们只需要yum-utils包的/usr/bin/reposync命令即可实现镜像整个国外Saltstack的yum源。

2) yum -y install yum-utils

3) 在yum server存放yum源rpm包的目录结构下,单独创建一个SaltStack的目录,做为本地Saltstack的yum源目录

# mkdir -p /var/www/html/Yum_Server/SaltsStack/

4) 去Saltstack官网,找到对应操作系统的repo源

cat > /etc/yum.repos.d/saltstack.repo << EOF

[saltstack]

name=SaltStack repo for RHEL/CentOS \$releasever

baseurl=https://repo.saltstack.com/yum/redhat/\$releasever/\$basearch/latest

enabled=1

gpgcheck=1

gpgkey=https://repo.saltstack.com/yum/redhat/\$releasever/\$basearch/latest/SALTSTACK-GPG-KEY.pub

EOF

执行上面的命令,创建一个Saltstack的repo文件

5) 使用 yum repolist命令查看国外Saltstack的yum源的仓库标识

# yum repolist

 

6) 使用reposync命令把saltstack仓库里的所有软件包都镜像下载到本地的目录

# reposync -r saltstack /var/www/html/Yum_Server/SaltsStack/

 

一共116个包,大概10几分钟下载完了。

7) 最后,创建镜像yum源的依赖关系

[root@ops1 SaltsStack]# createrepo saltstack/

116/116 - python27-tools-2.7.14-2.ius.el6.x86_64.rpm                            

Saving Primary metadata

Saving file lists metadata

Saving other metadata

8) 创建本地客户端使用的salt.repo文件

# vi salt.repo

[saltstack-base]

name= local satlstack for redhat6.x_X64

baseurl=http://172.21.20.1:9100/SaltsStack/saltstack

gpgcheck=0

enabled=1

把这个salt.repo传到各个客户机上就大功告成。

5   客户端多yum源提速

场景:通常客户端除了加载本地yum源,还加载了很多互联网上的yum源,每次yum list都要先读取互联网上的yum源列表才会读取本地的,而需要安装的包却在本地yum源。如何提升访问yum的速度?

解决方案,使用yum-plugin-priorities插件,设置多个yum.repo的优先级。

1、安装YUM 的 yum-plugin-priorities 插件。

$ yum install yum-plugin-priorities

2、开启优先级配置,默认安装后即开启

cat /etc/yum/pluginconf.d/priorities.conf

[main]

enabled = 1

3、设置优先级

# vi yumdiy.repo

[DIY-base]

name= DIY for redhat6.x_X64

baseurl=http://172.21.20.1:9100/DIY_RedHat6_X64

gpgcheck=0

enabled=1

priority=1

说明:priority=1,priority 越小表示优先级越高

6  FAQ

6.1 Yum客户端若提示类似下面的Public key 相关错误,如何处理?

“warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID e8562897

updates/gpgkey                                                                                                  | 1.7 kB     00:00    

Public key for openssl-devel-0.9.8e-26.el5_9.1.i386.rpm is not installed”

解决办法:删掉/etc/yum.repos.d/目录下其他的.repo文件,例如系统自带的rhel-xxx.repo文件,因为这些文件中包含对GPG签名的校验,这将导致无法成功安装我们自搭建的yum服务器中的rpm包。

6.2 Yum客户端提示错误“Error performing checksum Trying other mirror.”如何处理?

部分错误截取如下:

rhel-ClusterStorage                                                                        | 1.3 kB     00:00     
rhel-ClusterStorage/primary                                                                | 8.9 kB     00:00     
http://172.21.20.1:9100/RedHat5.8_X64/ClusterStorage/repodata/primary.xml.gz: [Errno -3] Error performing checksum
Trying other mirror.
rhel-ClusterStorage/primary                                                                | 8.9 kB     00:00     
http://172.21.20.1:9100/RedHat5.8_X64/ClusterStorage/repodata/primary.xml.gz: [Errno -3] Error performing checksum
Trying other mirror.
Error: failure: repodata/primary.xml.gz from rhel-ClusterStorage: [Errno 256] No more mirrors to try.

原因分析:如果使用redhat6版本搭建yum服务器,使用createrepo命令创建的数据仓库,而yum客户端是redhat5版本来执行yum list就会出现上面的错误。

原因是redhat6版本的createrepo默认使用的checksum类型是sha256算法,而redhat5客户端的yum使用的checksum类型是md5。二者校验时因使用了不同的校验类型导致校验结果不同,所以报错。

解决方法:在YumServer上对于搭建redhat5版本的yum源时,使用createrepo -s md5来创建数据仓库就可以解决这个问题。yum客户端执行 yum clean all 以后在试一切正常。

RHEL 6.5的yum.repo文件样例

[rhel-base]
name= redhat6.5_X64
baseurl=http://192.168.1.10:9100/Packages
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
enabled=1

 

CentOS 6 的客户端可以直接使用互联网的yum源

wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

yum clean all

增加第三方YUM源,方便安装APF,Saltstack等应用软件

1)安装rpmforge源,可以方便安装APF

wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
rpm -Uvh rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

2)安装epel源,方便安装Saltstack

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

rpm -ivh epel-release-latest-6.noarch.rpm

sed -i 's/mirrorlist=https/mirrorlist=http/g' /etc/yum.repos.d/epel.repo

sed -i 's/mirrorlist=https/mirrorlist=http/g' /etc/yum.repos.d/epel-testing.repo

RHEL7的YUM服务器和客户端配置

1、拷贝光盘中的Packages目录

 

cp -Rp /media/Packages/ /var/www/html/YumServer/rhel7.2/Packages/

2、使用createrepo命令创建依赖

createrepo Packages/
Spawning worker 0 with 1155 pkgs
Spawning worker 1 with 1155 pkgs
Spawning worker 2 with 1155 pkgs
Spawning worker 3 with 1155 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

3、配置HTTPD服务发布YumServer目录

vi /etc/httpd/conf/httpd.conf

Listen 9100

<VirtualHost *:9100>
    ServerAdmin shenxiaoran
    DocumentRoot /var/www/html/YumServer
    ServerName test.yum.com
</VirtualHost>

注:RHEL7的httpd安装后,httpd.conf文件内容中没有关于虚拟机的配置模版了

 

<VirtualHost>
  ...
</VirtualHost>

 

3、YUM客户端的配置

vi /etc/yum.repos.d/yum.repo
[rhel-base]
name= RedHatES7.2
baseurl=http://172.16.96.59:9100/rhel7.2/Packages
gpgcheck=0
enabled=1

 

4.6、RHEL7在安装httpd服务器时,提示“could not open mime types config file /etc/mime.types.”

分析:/etc/mime.types文件属于mailcap这个安装包,安装上即可解决问题。

解决办法:若不知道某个文件属于哪个rpm包,使用  yum install /etc/mime.types 安装就可以了。前提是需要配置yum源。

 

转载于:https://my.oschina.net/lionel45/blog/124940

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值