1 介绍

有的生产环境是没有网络的,我们部署rpm包的时候会出现缺少很多rpm包的依赖问题,都去网上下载实在太麻烦,今天介绍一个办法可以解决这一问题。

2 解决方案

找一台可以联网的机器,在上边下载相应的rpm包。

使用命令:

#yum install rpmname--downloadonly --downloaddir=/rpmpath

命令解释:

此命令只是下载相关的rpm包,并下载相应的依赖。

Rpmname为rpm包的名字如httpd等

/rpmpath为下载的rpm包存放位置。

之后会下载很多依赖包,我们可以打包下载下来,通过移动设备传输到没有网的设备上之后就可以安装了。

3 安装rpm及相关依赖

3.1 方法一(推荐)

一个一个安装,但是比较麻烦,看这个包缺哪些依赖。依此安装。

使用rpm –ivh ****进行安装

3.2 方法二

如果能保证联网的机器和没有联网的机器环境一样,可以直接使用rpm –ivh –nodeps来进行安装。因为环境一样缺少的依赖包都相同,但是很少有这样的情况,因为联网的机器可能依赖包会安装。所以不建议这样操作。

4 举例说明

比如我使用要通过rpm包安装docker但是生产环境没有外网。我通过我的云服务器下载rpm及其依赖包。

4.1 下载依赖包

# yum install yum-utils --downloadonly --downloaddir=/root/dockerrpm/

# yum install policycoreutils-python --downloadonly --downloaddir=/root/dockerrpm/

# yum install docker-ce-18.06.1.ce --downloadonly --downloaddir=/root/dockerrpm/     

# ls /root/dockerrpm/ #会下载以下包

audit-2.8.1-3.el7_5.1.x86_64.rpm    libsemanage-python-2.5-11.el7.x86_64.rpm python-kitchen-1.1.1-5.el7.noarch.rpm

audit-libs-2.8.1-3.el7_5.1.x86_64.rpm libxml2-python-2.9.1-6.el7_2.3.x86_64.rpm setools-libs-3.3.8-2.el7.x86_64.rpm

audit-libs-python-2.8.1-3.el7_5.1.x86_64.rpm policycoreutils-python-2.5-22.el7.x86_64.rpm yum-utils-1.1.31-46.el7_5.noarch.rpm

checkpolicy-2.5-6.el7.x86_64.rpm python-chardet-2.2.1-1.el7_1.noarch.rpm

libcgroup-0.41-15.el7.x86_64.rpm python-IPy-0.75-6.el7.noarch.rpm

4.2 安装

# rpm -ivh audit-libs-2.8.1-3.el7_5.1.x86_64.rpm

# rpm -ivh audit-2.8.1-3.el7_5.1.x86_64.rpm

# rpm -ivh audit-libs-python-2.8.1-3.el7_5.1.x86_64.rpm

# rpm -ivh checkpolicy-2.5-6.el7.x86_64.rpm

# rpm -ivh libcgroup-0.41-15.el7.x86_64.rpm

# rpm -ivh libsemanage-python-2.5-11.el7.x86_64.rpm

# rpm -ivh python-IPy-0.75-6.el7.noarch.rpm

# rpm -ivh setools-libs-3.3.8-2.el7.x86_64.rpm

# rpm -ivh policycoreutils-python-2.5-22.el7.x86_64.rpm

# rpm -ivh container-selinux-2.68-1.el7.noarch.rpm

# rpm -ivh libtool-ltdl-2.4.2-22.el7_3.x86_64.rpm

# rpm -ivh docker-ce-18.06.1.ce-3.el7.x86_64.rpm

这样就解决了所有的依赖问题。可以成功的把docker安装到没有互联网的机器上

当生产环境由于安全原因处于断网状态的时候。通过本地源的方式,使用yum能够自动安装软件,并且自动处理好依赖关系。然而该方法最最关键的一个问题是——怎么获取该软件及其依赖包,供本地源使用?当安装软件的依赖包较少的话,通过手动的方式,一个个查找并下载,也许是一个可以考虑的方案,而当一个软件有上百个依赖、并且依赖上又有依赖,这时候你再试试?如果真的觉得很无力,那么downloadonly跟yumdownloade绝对是两个值得尝试的神器。本文简单介绍downloadonly跟yumdownloade的使用方法。
downloadonly的安装和使用
1、安装downloadonly
 
sudo yum install yum-plugin-downloadonly1
2、downloadonly使用
格式:yum install –downloadonly+软件名称,如:
 
sudo yum install --downloadonly nano1
默认情况下软件下载的路径在/var/cache/yum/x86_64/7/base/packages/下。如:上面命令下载的nano软件包位置如下图所示:
 
我们还可以指定软件包的下载路径。需要加入参数–downloaddir参数。
格式:yum install –downloadonly –downloaddir= your-dir  package-name,如:
 
sudo yum install --downloadonly --downloaddir=/root/package/nano nano1
此时,下载的nano包存放在/root/package/nano目录下,如图所示:
 
注:/root/package/nano目录要先存在。
 
yumdownloade的安装和使用
1、安装yumdownloade
 
sudo yum install yum-utils -y1
2、yumdownloade使用
格式:sudo yumdownloader 软件名,如:
 
sudo yumdownloader nano 1
默认情况下,下载的包会被保存在当前目录中,我们需要使用root权限,因为yumdownloader会在下载过程中更新包索引文件。与yum命令不同的是,任何依赖包不会被下载。我们可以通过加参数,使得下载包的过程中同时下载依赖以及自定义下载位置,格式为:yumdownloader 软件名 –resolve –destdir=保存目录
例如:
 
sudo yumdownloader httpd --resolve --destdir=/root/package/httpd
12
查看下载的httpd及其依赖,结果如图所示: