搭建YUM服务器,配置yum客户端
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客户端相关推荐
- 离线安装yum,配置yum源
离线安装yum,配置yum源 下面是基于centos7的步骤 首先从镜像http://mirrors.163.com/centos/7/os/x86_64/Packages/下载文件 python-i ...
- Ubuntu下安装yum和配置yum源
1.简介 Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管理,能够从指定的服务 ...
- Linux 怎么配置yum源,配置yum源的两种方法
由于 redhat的yum在线更新是收费的,如果没有注册的话不能使用,如果要使用,需将redhat的yum卸载后,重启安装,再配置其他源,以下为详细过程: 1.删除redhat原有的yum rpm - ...
- RedHat安装yum和配置yum源
yum介绍 Yum(全称为 Yellow dogUpdater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管理,能够从指定的服务 ...
- 配置linux syslog服务器+配置syslog客户端
参考文档: 1)https://linux.cn/article-5023-1.html:在 Linux 上配置一个 syslog 服务器 2)http://www.111cn.net/sys/Cen ...
- linux搭建git服务器,windows客户端配置git
Linux服务器配置之Git服务器搭建步骤: 一.配置环境 1.服务器:CentOS 8.2(64位) + Git (version 2.27.0) 2.客户端:Windows 10 (64位) + ...
- 搭建nfs服务器与nfs客户端挂载
实习第三天,搭建nfs环境 通过在虚拟机搭建一个nfs,可以让板子直接连接虚拟机上的指定文件夹,并访问里面的内容. 首先需要安装nfs,使用的是桥接方法进行联网 使用的是ubuntu14 先检验板子与 ...
- 【Linux网络服务】Centos7搭建yum服务器
yum服务器概述 yum软件仓库通常借助HTTP或FTP来进行发布,这样可以面向网络中的所有客户机提供软件源服务.为了便于客户机查询软件包,在软件仓库中需要提供仓库数据,其中手机了目录下所有rpm包的 ...
- 中标麒麟V7环境离线搭建本地YUM服务器
一.需求 因生产系统环境无法访问互联网,安装软件包时会出现各种依赖,一个个查找解决非常浪费时间,为了使用yum安装,我们需要搭建本地YUM服务器,离线局域网内可以通过本地YUM服务器实现YUM安装 ...
最新文章
- python 执行ping命令_Python黑科技:在家远程遥控公司电脑,python+微信一键连接!...
- webdriver中处理alert
- 【数据挖掘】卷积神经网络 ( 视觉原理 | CNN 模仿视觉 | 卷积神经网络简介 | 卷积神经网络组成 | 整体工作流程 | 卷积计算图示 | 卷积计算简介 | 卷积计算示例 | 卷积计算参数 )
- 后端传给前端 无限极分类_学徒|记者亲身体验垃圾分拣,臭到崩溃!我们还有什么理由不做垃圾分类?...
- GBin1分享的10个吸引眼球的jQuery插件
- c++编译时候fatal error C1075: end of file found before the left brace '{' at
- Android App图片轮播效果的组件化
- SQLServer导入excel报错因缺少插件
- 二分答案——数列分段 Section II(洛谷 P1182)
- android Activity的Task Affinity lanchMode
- Linux下头文件.h的使用
- pycharm安装scrapy失败_python爬虫框架scrapy
- 材料学和计算机哪个专业好,材料类专业包括哪些专业
- 复杂性思维中文第二版 八、自组织临界
- Oulipo HDU - 1686 (使用扩展kmp进行讨伐!)
- Failed to initiate the GitHub login process. Please try again(1.1.25.1678)
- MySQL——INSERT INTO
- 计算机专业研究生的英语复试
- 《通用数据保护条例》(GDPR)系列解读一:如何判断出海企业是否受GDPR管辖?
- 人工智能是真正能够理解人类语言、懂得故事含义、和人类大脑并无二致的AI
热门文章
- 用python中django创建网页终端直接关闭是什么问题_如何用Python Django创建网站?系列文章03(持续更新...)...
- 15年考的全国计算机应用技术,(2015年全国专业技术人员计算机应用能力考试.doc...
- oracle基本的查询语句,oracle 基本查询语句及实例
- 绘制半圆_AI教程/绘制雪人插画
- 神策数据房东雨:精准推荐的场景和实践
- 把字符串每隔四个字符使用“-”中横线分隔的方法
- 误入前端三年,一个文科生的独白(上)
- JMS学习(六)--提高非持久订阅者的可靠性 以及 订阅恢复策略
- 思科安全——企业安全棋局的“宇宙流”
- 工业触屏系统开发经验分享