创建本地yumrepo源
概述
在生产环境中,由于网络环境隔离,很多内网机器,无法直接通过网络下载安装相关软件包,所以这个时候就需要在内网搭建一个yum源,然后通过下载将需要的软件包rpm下载下来,然后添加进该yum源中,添加的过程很简单,分成两步:
- 下载软件包,复制进对应的目录
- createrepo,创建repo文件
实验描述
在这里,我们使用的是CentOS7的官方镜像,作为本地的yum源,然后搭建了一个简单的http服务,来为其他的服务器提供yum软件安装源。在基础软件包中,没有zabbix-agent的软件包,需要外网下载,然后添加进yum源中,才能使用。
这里的httpd使用的默认的站点目录/var/www/html,在该目录下创建了一个软连接,链接到本地的镜像文件中,实际上是cobbler的mirror。
CentOS7 -> /var/www/cobbler/ks_mirror/CentOS7.0-x86_64
在其他服务器上,使用repo配置文件,指定为该服务器的http服务。
[root@localhost ~]# cat /etc/yum.repos.d/localyumrepo.repo
[localyumrepo]
name= localyumrepo
baseurl=http://master/CentOS7
enable=1
在网上下载了zabbix-agent和zabbix的软件包,上传至Packages目录中。
然后在Packages的上层目录,也就是有repodata的目录上,执行createrepo。createrepo依赖于createrepo.noarch软件的安装.
[root@master /var/www/html]# createrepo /var/www/html/CentOS7/
Spawning worker 0 with 3896 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
是为了生存新的repodata文件,也就是索引文件,在其他服务器上就可以根据索引进行查找了。
在其他服务器上执行两条命令
yum clean all
yum upgrade
然后就可以根据rpm的名称,来进行zabbix-agent的安装了。
[root@localhost ~]# yum install zabbix40-agent
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package zabbix40-agent.x86_64 0:4.0.6-1.el7 will be installed
--> Processing Dependency: zabbix40 = 4.0.6-1.el7 for package: zabbix40-agent-4.0.6-1.el7.x86_64
--> Running transaction check
---> Package zabbix40.x86_64 0:4.0.6-1.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=======================================================================================================================================================================
Package Arch Version Repository Size
=======================================================================================================================================================================
Installing:
zabbix40-agent x86_64 4.0.6-1.el7 localyumrepo 188 k
Installing for dependencies:
zabbix40 x86_64 4.0.6-1.el7 localyumrepo 320 k
Transaction Summary
=======================================================================================================================================================================
Install 1 Package (+1 Dependent package)
Total download size: 508 k
Installed size: 1.7 M
Is this ok [y/d/N]:
yum仓库中,默认安装最低的版本,如果存在同一个名字的软件包,多个版本,yum无法安装,可以指定版本进行安装。
如果遇到安装软件包时,系统自带的软件包,比需要安装的软件包的版本还要高,可以通过yum downgrade对相关的软件包进行降级,然后再进行软件包的安装。
yum upgrade gcc* gcc-c++* autoconf* automake* zlib* libxml* ncurses-devel* libmcrypt* libtool* flex* pkgconfig*
这是某一次环境中,需要为开发准备这样的软件包环境,然后发现有好几个软件包都是高版本,无法进行安装。
Error: Package: zlib-devel-1.2.-.el7.x86_64 (localiso)
Requires: zlib = 1.2.-.el7
Installed: zlib-1.2.-.el7.x86_64 (@base)
zlib = 1.2.-.el7
Available: zlib-1.2.-.el7.x86_64 (localiso)
zlib = 1.2.-.el7
类似于这种错误的时候,就可以直接进行downgrade
[root@localhost yum.repos.d]# yum downgrade zlib
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package zlib.x86_64 :1.2.-.el7 will be a downgrade
---> Package zlib.x86_64 :1.2.-.el7 will be erased
--> Finished Dependency Resolution Dependencies Resolved ============================================================================================================================================================================================================================================
Package Arch Version Repository Size
============================================================================================================================================================================================================================================
Downgrading:
zlib x86_64 1.2.-.el7 localiso k Transaction Summary
============================================================================================================================================================================================================================================
Downgrade Package Total download size: k
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : zlib-1.2.-.el7.x86_64 /
Cleanup : zlib-1.2.-.el7.x86_64 /
Verifying : zlib-1.2.-.el7.x86_64 /
Verifying : zlib-1.2.-.el7.x86_64 / Removed:
zlib.x86_64 :1.2.-.el7 Installed:
zlib.x86_64 :1.2.-.el7 Complete!