--时间: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

Centos Linux下载rpm软件包(基础环境篇)-从零到无的更多相关文章

  1. Linux学习笔记之在 CentOS 里下载 RPM 包及其所有依赖包

    0x00 概述 前几天我尝试去创建一个仅包含我们经常在 CentOS 7 下使用的软件的本地仓库.当然,我们可以使用 curl 或者 wget 下载任何软件包,然而这些命令并不能下载要求的依赖软件包. ...

  2. 如何在 CentOS 里下载 RPM 包及其所有依赖包

    方法一.利用 Downloadonly 插件下载 RPM 软件包及其所有依赖包 默认情况下,这个命令将会下载并把软件包保存到 /var/cache/yum/ 的 rhel-{arch}-channel ...

  3. hadoop完全分布式手动安装(一主多从centos linux各版本均试验成功,文档完整无一遗漏)

    hadoop完全分布式手动安装(一主多从centos linux各版本均试验成功,文档完整无一遗漏) 网上的文章99%都是垃圾,我凭良心书写,确保幼儿园同学也能安装成功! 查看系统环境    1.查看 ...

  4. CentOS 8.2 对k8s基础环境配置

    一.基础环境配置 1 IP 修改 机器克隆后 IP 修改,使Xshell连接上 [root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg- ...

  5. linux的RPM软件包管理工具

    RPM(Redhat Package Manage)原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎.逐渐受到其他发行版的采 ...

  6. linux 下载rpm包到本地,createrepo:创建本地YUM源

    如何下载rpm包到本地 设置yum安装时,保留rpm包. 1.编辑 /etc/yum.conf 将keepcache的值设置为1; 这样就可以将yum安装时的rpm包保存在 /var/cache/yu ...

  7. [转]Linux下RPM软件包的安装及卸载 yum操作

    在 Linux 操作系统下,几乎所有的软件均通过RPM 进行安装.卸载及管理等操作.RPM 的全称为Redhat Package Manager ,是由Redhat 公司提出的,用于管理Linux 下 ...

  8. linux之rpm软件包管理

    1.RPM包的命名规则 例如:httpd-2.2.15-15.el6.centos.1.i686.rpm httpd ·        软件包名 2.2.15        软件版本 15       ...

  9. Linux下RPM软件包的安装及卸载

    http://os.51cto.com/art/201001/177866.htm 在 Linux 操作系统下,几乎所有的软件均通过RPM 进行安装.卸载及管理等操作.RPM 的全称为Redhat P ...

随机推荐

  1. gin中绑定表单数据至自定义结构体

    package main import "github.com/gin-gonic/gin" type StructA struct { FieldA string `form:& ...

  2. 集合框架-Map集合练习-记录字母次数思路及代码

    1 package cn.itcast.p10.map.test; 2 3 import java.util.Iterator; 4 import java.util.Map; 5 import ja ...

  3. java基础编程练习题

    1.題目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一 对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1 2 3 4 5 6 7 1 1 2 3 ...

  4. python开发之函数

    转:https://www.tuicool.com/wx/vEVrqeR 06 python开发之函数 博客园精华区12-12 20:56 06 python开发之函数 目录 6.2 调用函数与函数返 ...

  5. debian下编译安装redis并加入到systemd启动管理

    原文地址: http://blog.duhbb.com/2022/02/09/compile-and-install-redis-debian-and-add-to-systemd/ 欢迎访问我的个人 ...

  6. netty系列之:选byte还是选message?这是一个问题

    目录 简介 类型的定义 搭建UDT stream服务器 搭建UDT message服务器 Stream和Message的handler 总结 简介 UDT给了你两种选择,byte stream或者me ...

  7. Git .gitignore 不起作用的解决办法

    解决方法的原理:.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的. 解决方案:git rm -r --cached . ...

  8. ubuntu 终端乱码

    转载请注明来源:https://www.cnblogs.com/hookjc/ 解决方法: 一. Ubuntu默认的中文字符编码 Ubuntu默认的中文字符编码为zh_CN.UTF-8, 这个可以在 ...

  9. Activity的生命周期 (必须掌握)

      onCreate 方法 当Activity第一次启动的时候调用   onDestroy 方法 当Activity销毁的时候调用   onStart() 方法 当Activity变成可见的时候调用  ...

  10. Category注意事项

    1.分类的使用注意事项 分类只能增加方法, 不能增加成员变量 @interface Person (NJ) { // 错误写法 // int _age; } - (void)eat; @end 分类中 ...