Centos Linux下载rpm软件包(基础环境篇)-从零到无
--时间: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软件包(基础环境篇)-从零到无的更多相关文章
- Linux学习笔记之在 CentOS 里下载 RPM 包及其所有依赖包
0x00 概述 前几天我尝试去创建一个仅包含我们经常在 CentOS 7 下使用的软件的本地仓库.当然,我们可以使用 curl 或者 wget 下载任何软件包,然而这些命令并不能下载要求的依赖软件包. ...
- 如何在 CentOS 里下载 RPM 包及其所有依赖包
方法一.利用 Downloadonly 插件下载 RPM 软件包及其所有依赖包 默认情况下,这个命令将会下载并把软件包保存到 /var/cache/yum/ 的 rhel-{arch}-channel ...
- hadoop完全分布式手动安装(一主多从centos linux各版本均试验成功,文档完整无一遗漏)
hadoop完全分布式手动安装(一主多从centos linux各版本均试验成功,文档完整无一遗漏) 网上的文章99%都是垃圾,我凭良心书写,确保幼儿园同学也能安装成功! 查看系统环境 1.查看 ...
- CentOS 8.2 对k8s基础环境配置
一.基础环境配置 1 IP 修改 机器克隆后 IP 修改,使Xshell连接上 [root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg- ...
- linux的RPM软件包管理工具
RPM(Redhat Package Manage)原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎.逐渐受到其他发行版的采 ...
- linux 下载rpm包到本地,createrepo:创建本地YUM源
如何下载rpm包到本地 设置yum安装时,保留rpm包. 1.编辑 /etc/yum.conf 将keepcache的值设置为1; 这样就可以将yum安装时的rpm包保存在 /var/cache/yu ...
- [转]Linux下RPM软件包的安装及卸载 yum操作
在 Linux 操作系统下,几乎所有的软件均通过RPM 进行安装.卸载及管理等操作.RPM 的全称为Redhat Package Manager ,是由Redhat 公司提出的,用于管理Linux 下 ...
- linux之rpm软件包管理
1.RPM包的命名规则 例如:httpd-2.2.15-15.el6.centos.1.i686.rpm httpd · 软件包名 2.2.15 软件版本 15 ...
- Linux下RPM软件包的安装及卸载
http://os.51cto.com/art/201001/177866.htm 在 Linux 操作系统下,几乎所有的软件均通过RPM 进行安装.卸载及管理等操作.RPM 的全称为Redhat P ...
随机推荐
- __rept__和__str__
最近一下子学了很多的知识点,导致我有点没反应过来,粗略的在草稿纸记了点自己的想法,趁休息的时间将它敲到博客里面去,免得丢失,这一篇写的挺废话的,有点啰嗦,本篇的重点是第二段程序后开始的总结和后面的几个 ...
- Python打印JSON中中文的解决办法
code #!/usr/bin/python # encoding=utf-8 import json data = [{"a": "中文"}] print j ...
- 常见线程池 newScheduledThreadPool 定时执行任务的线程池 简单介绍
一 定时任务 package com.aaa.threaddemo; import static java.util.concurrent.TimeUnit.NANOSECONDS; import ...
- 如何在pyqt中实现窗口磨砂效果
磨砂效果的实现思路 这两周一直在思考怎么在pyqt上实现窗口磨砂效果,网上搜了一圈,全都是 C++ 的实现方法.正好今天查python的官方文档的时候看到了 ctypes 里面的 HWND,想想倒不如 ...
- Datawhale 人工智能培养方案
版本号:V0.9 阅读须知 每个专业方向对应一个课程表格 课程表格里的课程排列顺序即为本培养方案推荐的学习顺序 诚挚欢迎为本培养方案贡献课程,有意向的同学请联系Datawhale开源项目管理委员会 本 ...
- 张高兴的 .NET IoT 入门指南:(七)制作一个气象站
距离上一篇<张高兴的 .NET Core IoT 入门指南>系列博客的发布已经过去 2 年的时间了,2 年的时间 .NET 版本发生了巨大的变化,.NET Core 也已不复存在,因此本系 ...
- CF Round #687 Div2 简要题解
题面 A 可以发现,最远的几个人一定是 \((1, 1), (1, m), (n, 1), (n, m)\) 中的一个,直接计算即可. B 注意到颜色数量很少,直接暴力枚举最终的颜色后模拟即可. C ...
- MySQL 1093 - You can't specify target table 'sc' for update in FROM clause
错误代码如下: #(8) 把"邓维杰"同学的成绩全部删除. SELECT * FROM sc WHERE EXISTS(SELECT * FROM student WHERE st ...
- Java链式写法
原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11613067.html Java 链式写法:详细看代码 package chain; /** ...
- Python—列表元组和字典
Python-列表元组和字典 列表 元组 字典 列表: 列表是Python中的一种数据结构,他可以存储不同类型的数据.尽量存储同一种类型 列表索引是从0开始的,我们可以通过索引来访问列表的值. 列表的 ...