--时间:2020年10月23日
--作者:飞翔的小胖猪
一、概述
1.1 前言
很多生产环境往往是独立的一张网络不与互联网相通,经常会出现的问题就是应用在部署的时候无法安装配套的依赖包。导致很简单的一个可能部署交互动作时间线脱得老长老长的,影响工程交互及业务上线。容器技术很大程度上解决这一问题,只需要把业务应用封装成镜像然后在部署有容器服务的基础环境上直接就可以业务run起来。在不能使用容器同时没有对应软件仓库的环境中安装部署应用时,往往需要我们自己提前把所需的软件及文件准备好。由于本人在工作中使用的系统大多是Centos系列的,文档使用Centos 7.6系统为基础环境演示操作如何下载rpm包。
1.2 环境说明
文档采取的操作系统及软件如下表:
1.3 操作及步骤说明
下载rpm包的方式一般有两种方式,一种是明确的指导所需的rpm包名和版本,一种是无法获取到准确的软件名。对于能够明确知道rpm包名的情况可使用“yum install --downloadonly rpm名”或“yumdownloader --destdir=/yum_down_soft/ rpm包名”依次下载包。无法准确知道包名的情况下可尝试把整个仓库的内存全部down下来使用reposync命令。
1.配置yum源
2.安装相关的软件
3.进行镜像同步或下载单个软件
4.生成repo清单文件
5.打包带走
二、具体方式
2.1 配置yum源
按照你的需求配置你想要同步的yum源,如使用zabbix为例,模拟下载同步zabbix的相关软件包。
配置正确的yum源文件,重新生成yum仓库缓存。
[root@docker_0001 ~]# vim /etc/yum.repos.d/zabbix.repo [zabbix]
name=zabbix
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/x86_64/
enabled=1
gpgcheck=0
[supported]
name=supported
baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/x86_64/
enabled=1
gpgcheck=0
[root@docker_0001 ~]# yum clean all #清空之前的yum源缓存
[root@docker_0001 ~]# yum makecache #重新生成仓库缓存,该步操作在网络不稳定的情况下可能会失败,不要慌多试几次,会成功的。
[root@docker_0001 ~]# yum repolist #查看仓库包id及仓库软件数2.2 安装相关软件
yum-utils安装包提供了reposync命令用来同步镜像,yumdownloader命令下载rpm包。
yum-utils安装包提供了reposync命令用来同步镜像,createrepo软件实现生成本地yum仓库的清单文件。 [root@docker_0001 ~]# yum install yum-utils -y
createrepo软件实现生成本地yum仓库的清单文件。
[root@docker_0001 ~]# yum install createrepo -y
2.3 同步镜像
如果需要同步制定的yum仓库数据则选取这一步的命令。单个rpm包下载请参考2.4章节的内容。
同步镜像到本地中 安装完成相关的软件过后,使用命令同步远端yum仓库数据到本地中。 命令格式: reposync -r 仓库名(repo_name) 查看仓库名 [root@docker_0001 ~]# yum repolist 同步zabbix仓库的包,执行命令过后会在本地当前目录下创建一个与仓库名同名的文件夹。同步zabbix仓库至当前文件夹。 [root@docker_0001 ~]# reposync -r zabbix
注:
如果reposync -r zabbix命令不能使用
# mkdir docker_自建的文件夹
# reposync --repoid repo_id_名 -p docker_自建的文件夹
该步骤执行过后同步完了仓库包过后,还需参考2.5章节进行软件关联关系文件生成。
2.4 下载rpm包
对于只下载几个rpm的包的情况下可使用命令直接对rpm包进行下载。使用命令直接下载仓库中rpm包有两种方式。
使用yum-utils软件包中的yumdownloader命令对软件进行下载。
命令格式:
yumdownloader --destdir=目录名/ 软件名
#下载vim软件到/yum_down_soft/目录下
[root@docker_0001 ~]# yumdownloader --destdir=/yum_down_soft/ vim
直接使用yum命令下载软件,不推荐这种方式。展示出来只是让你知道有这个玩意。
[root@docker_0001 ~]# yum install --downloadonly yum-utils
找到软件目录使用该种方式下载的包存放在/var/cache/yum目录下但是查找起来是一个大问题。不一定能够找到,所以这种方式直接滚蛋
下载完成软件后如果你想通过yum install命令来安装使用刚才新下载的rpm包,你还需要生成repo清单文件。但是如果你直接使用rpm -ivh命令安装的,恭喜你你可以跳过2.5章节,直接进入2.6章节打包打走。
2.5 生成repo清单文件
远端仓库同步完成洪还不能马上使用必须生成一个repodata清单目录,用户才能通过配置yum源的方式来使用仓库中的软件包。
我同步下来的zabbix仓库位置就是/root/zabbix,请个人根据自己的实际路径情况设置。
[root@docker_0001 ~]# createrepo /root/zabbix/
对于下载下来的rpm包如果想要通过yum命令安装使用也是要生成repo清单文件的,此处不累述
确认仓库中是否包含repodata数据 [root@docker_0001 ~]# ll /root/zabbix/ | grep -i repo
也可以使用该路径配置为yum源,尝试是否能够进行正常包的安装
2.6 打包带走
对于同步过后的镜像需要在其他地方使用直接打包压缩带走,然后在需要的地方解压就好了。
使用tar命令,通过gzip的方式压缩文件。
打包zabbix/文件夹命名为zabbix.tar.gz
[root@docker_0001 ~]# tar -zcvf zabbix.tar.gz zabbix/
解压仓库包,解压过后就可以像一般的仓库一样使用。
[root@docker_0001 ~]# tar -zxvf zabbix.tar.gz
ps:如果解压过后你需要把仓库内的rpm包添加到之前正在使用仓库中,一定要在拷贝过后使用createrepo重新生成一次repodata。