2019独角兽企业重金招聘Python工程师标准>>>

搭建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

搭建YUM服务器,配置yum客户端相关推荐

  1. 离线安装yum,配置yum源

    离线安装yum,配置yum源 下面是基于centos7的步骤 首先从镜像http://mirrors.163.com/centos/7/os/x86_64/Packages/下载文件 python-i ...

  2. Ubuntu下安装yum和配置yum源

    1.简介 Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管理,能够从指定的服务 ...

  3. Linux 怎么配置yum源,配置yum源的两种方法

    由于 redhat的yum在线更新是收费的,如果没有注册的话不能使用,如果要使用,需将redhat的yum卸载后,重启安装,再配置其他源,以下为详细过程: 1.删除redhat原有的yum rpm - ...

  4. RedHat安装yum和配置yum源

    yum介绍 Yum(全称为 Yellow dogUpdater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管理,能够从指定的服务 ...

  5. 配置linux syslog服务器+配置syslog客户端

    参考文档: 1)https://linux.cn/article-5023-1.html:在 Linux 上配置一个 syslog 服务器 2)http://www.111cn.net/sys/Cen ...

  6. linux搭建git服务器,windows客户端配置git

    Linux服务器配置之Git服务器搭建步骤: 一.配置环境 1.服务器:CentOS 8.2(64位) + Git (version 2.27.0) 2.客户端:Windows 10 (64位) + ...

  7. 搭建nfs服务器与nfs客户端挂载

    实习第三天,搭建nfs环境 通过在虚拟机搭建一个nfs,可以让板子直接连接虚拟机上的指定文件夹,并访问里面的内容. 首先需要安装nfs,使用的是桥接方法进行联网 使用的是ubuntu14 先检验板子与 ...

  8. 【Linux网络服务】Centos7搭建yum服务器

    yum服务器概述 yum软件仓库通常借助HTTP或FTP来进行发布,这样可以面向网络中的所有客户机提供软件源服务.为了便于客户机查询软件包,在软件仓库中需要提供仓库数据,其中手机了目录下所有rpm包的 ...

  9. 中标麒麟V7环境离线搭建本地YUM服务器

    一.需求   因生产系统环境无法访问互联网,安装软件包时会出现各种依赖,一个个查找解决非常浪费时间,为了使用yum安装,我们需要搭建本地YUM服务器,离线局域网内可以通过本地YUM服务器实现YUM安装 ...

最新文章

  1. python 执行ping命令_Python黑科技:在家远程遥控公司电脑,python+微信一键连接!...
  2. webdriver中处理alert
  3. 【数据挖掘】卷积神经网络 ( 视觉原理 | CNN 模仿视觉 | 卷积神经网络简介 | 卷积神经网络组成 | 整体工作流程 | 卷积计算图示 | 卷积计算简介 | 卷积计算示例 | 卷积计算参数 )
  4. 后端传给前端 无限极分类_学徒|记者亲身体验垃圾分拣,臭到崩溃!我们还有什么理由不做垃圾分类?...
  5. GBin1分享的10个吸引眼球的jQuery插件
  6. c++编译时候fatal error C1075: end of file found before the left brace '{' at
  7. Android App图片轮播效果的组件化
  8. SQLServer导入excel报错因缺少插件
  9. 二分答案——数列分段 Section II(洛谷 P1182)
  10. android Activity的Task Affinity lanchMode
  11. Linux下头文件.h的使用
  12. pycharm安装scrapy失败_python爬虫框架scrapy
  13. 材料学和计算机哪个专业好,材料类专业包括哪些专业
  14. 复杂性思维中文第二版 八、自组织临界
  15. Oulipo HDU - 1686 (使用扩展kmp进行讨伐!)
  16. Failed to initiate the GitHub login process. Please try again(1.1.25.1678)
  17. MySQL——INSERT INTO
  18. 计算机专业研究生的英语复试
  19. 《通用数据保护条例》(GDPR)系列解读一:如何判断出海企业是否受GDPR管辖?
  20. 人工智能是真正能够理解人类语言、懂得故事含义、和人类大脑并无二致的AI

热门文章

  1. 用python中django创建网页终端直接关闭是什么问题_如何用Python Django创建网站?系列文章03(持续更新...)...
  2. 15年考的全国计算机应用技术,(2015年全国专业技术人员计算机应用能力考试.doc...
  3. oracle基本的查询语句,oracle 基本查询语句及实例
  4. 绘制半圆_AI教程/绘制雪人插画
  5. 神策数据房东雨:精准推荐的场景和实践
  6. 把字符串每隔四个字符使用“-”中横线分隔的方法
  7. 误入前端三年,一个文科生的独白(上)
  8. JMS学习(六)--提高非持久订阅者的可靠性 以及 订阅恢复策略
  9. 思科安全——企业安全棋局的“宇宙流”
  10. 工业触屏系统开发经验分享