利用 yum 和 rpm 命令离线安装软件的方法

我们在 Linux 环境中安装软件时经常使用 yum 命令,yum 基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装,在使用 yum 命令时服务器必须能够连接互联网。但在生产环境中,出于安全考虑,有些 Linux 服务器不允许连接互联网,此时可以采用以下策略来安装软件:
(1)部署一台和服务器环境相同的能够联网的服务器,在该服务器上使用带 downloadonly 和 downloaddir 参数的 yum 命令把所需的 rpm 包下载到本地。
(2)把 rpm 包拷贝到目标服务器,使用 rpm 命令安装本地的 rpm 包。下面以安装 vim 软件为例,安装过程如下:

一、操作系统环境

部署两台虚拟机,操作系统均为 CentOS7.3,最小化安装:

操作系统版本信息:
[root@localhost etc]# cat /etc/redhat-release 
CentOS Linux release 7.3.1611 (Core) 

机器一IP地址:192.168.1.11
机器二IP地址:192.168.1.12

假设机器一可以连接互联网,而机器二不能连接互联网,需要在机器二上安装软件。

二、操作系统环境

部署两台虚拟机,操作系统均为 CentOS7.3,最小化安装:

操作系统版本信息:
[root@localhost etc]# cat /etc/redhat-release 
CentOS Linux release 7.3.1611 (Core) 

机器一IP地址:192.168.1.11
机器二IP地址:192.168.1.12

假设机器一可以连接互联网,而机器二不能连接互联网,需要在机器二上安装软件。

三、使用能联网的服务器下载 rpm 包

使用带 downloadonly 和 downloaddir 参数的 yum 命令把所需的 rpm 下载到本地。命令如下:

# 在机器一(192.168.1.11)上依次执行如下命令:
# 1、在 home 下创建一个目录
[root@localhost tmp]# cd /home
[root@localhost home]# mkdir soft
[root@localhost home]# ls
soft
# 下载 rpm 包
[root@localhost home]# yum install -y --downloadonly --downloaddir=/home/soft vim 
已加载插件:fastestmirror
......
总计                                                                                                             1.7 MB/s |  18 MB  00:00:11     
exiting because "Download Only" specified

# 查看下载的 rpm 包
[root@localhost home]# ls /home/soft
gpm-libs-1.20.7-6.el7.x86_64.rpm         perl-libs-5.16.3-295.el7.x86_64.rpm             perl-Storable-2.45-3.el7.x86_64.rpm
perl-5.16.3-295.el7.x86_64.rpm           perl-macros-5.16.3-295.el7.x86_64.rpm           perl-Text-ParseWords-3.29-4.el7.noarch.rpm
perl-Carp-1.26-244.el7.noarch.rpm        perl-parent-0.225-244.el7.noarch.rpm            perl-threads-1.87-4.el7.x86_64.rpm
perl-constant-1.27-2.el7.noarch.rpm      perl-PathTools-3.40-5.el7.x86_64.rpm            perl-threads-shared-1.43-6.el7.x86_64.rpm
perl-Encode-2.51-7.el7.x86_64.rpm        perl-Pod-Escapes-1.04-295.el7.noarch.rpm        perl-Time-HiRes-1.9725-3.el7.x86_64.rpm
perl-Exporter-5.68-3.el7.noarch.rpm      perl-podlators-2.5.1-3.el7.noarch.rpm           perl-Time-Local-1.2300-2.el7.noarch.rpm
perl-File-Path-2.09-2.el7.noarch.rpm     perl-Pod-Perldoc-3.20-4.el7.noarch.rpm          vim-common-7.4.629-6.el7.x86_64.rpm
perl-File-Temp-0.23.01-3.el7.noarch.rpm  perl-Pod-Simple-3.28-4.el7.noarch.rpm           vim-enhanced-7.4.629-6.el7.x86_64.rpm
perl-Filter-1.49-3.el7.x86_64.rpm        perl-Pod-Usage-1.63-3.el7.noarch.rpm            vim-filesystem-7.4.629-6.el7.x86_64.rpm
perl-Getopt-Long-2.40-3.el7.noarch.rpm   perl-Scalar-List-Utils-1.27-248.el7.x86_64.rpm
perl-HTTP-Tiny-0.033-3.el7.noarch.rpm    perl-Socket-2.010-5.el7.x86_64.rpm

四、把 rpm 包复制到目标服务器

执行如下命令:

# 在机器二(192.168.1.12)上执行如下命令:
# 创建一个接收 rpm 包的目录
[root@localhost home]# cd /home
[root@localhost home]# mkdir rpm
[root@localhost home]# ls
rpm
# 在机器一(192.168.1.11)上执行如下命令,把下载的 rpm 包复制到机器二上:
[root@localhost rpm]# scp /home/soft/* 192.168.1.12:/home/rpm/
root@192.168.1.12's password: 
gpm-libs-1.20.7-6.el7.x86_64.rpm                          100%   32KB  32.3KB/s   00:00    
perl-5.16.3-295.el7.x86_64.rpm                            100% 8161KB   8.0MB/s   00:00    
perl-Carp-1.26-244.el7.noarch.rpm                         100%   19KB  19.2KB/s   00:00    
perl-constant-1.27-2.el7.noarch.rpm         
.......

五、在目标服务器上安装 rpm 包

在机器二(192.168.1.12)上安装 rpm 包,命令如下:

[root@localhost home]# cd /home/rpm
[root@localhost rpm]# ls
gpm-libs-1.20.7-6.el7.x86_64.rpm         perl-libs-5.16.3-295.el7.x86_64.rpm             perl-Storable-2.45-3.el7.x86_64.rpm
perl-5.16.3-295.el7.x86_64.rpm           perl-macros-5.16.3-295.el7.x86_64.rpm           perl-Text-ParseWords-3.29-4.el7.noarch.rpm
perl-Carp-1.26-244.el7.noarch.rpm        perl-parent-0.225-244.el7.noarch.rpm            perl-threads-1.87-4.el7.x86_64.rpm
perl-constant-1.27-2.el7.noarch.rpm      perl-PathTools-3.40-5.el7.x86_64.rpm            perl-threads-shared-1.43-6.el7.x86_64.rpm
perl-Encode-2.51-7.el7.x86_64.rpm        perl-Pod-Escapes-1.04-295.el7.noarch.rpm        perl-Time-HiRes-1.9725-3.el7.x86_64.rpm
perl-Exporter-5.68-3.el7.noarch.rpm      perl-podlators-2.5.1-3.el7.noarch.rpm           perl-Time-Local-1.2300-2.el7.noarch.rpm
perl-File-Path-2.09-2.el7.noarch.rpm     perl-Pod-Perldoc-3.20-4.el7.noarch.rpm          vim-common-7.4.629-6.el7.x86_64.rpm
perl-File-Temp-0.23.01-3.el7.noarch.rpm  perl-Pod-Simple-3.28-4.el7.noarch.rpm           vim-enhanced-7.4.629-6.el7.x86_64.rpm
perl-Filter-1.49-3.el7.x86_64.rpm        perl-Pod-Usage-1.63-3.el7.noarch.rpm            vim-filesystem-7.4.629-6.el7.x86_64.rpm
perl-Getopt-Long-2.40-3.el7.noarch.rpm   perl-Scalar-List-Utils-1.27-248.el7.x86_64.rpm
perl-HTTP-Tiny-0.033-3.el7.noarch.rpm    perl-Socket-2.010-5.el7.x86_64.rpm
# 查看机器上是否安装有 vim
[root@localhost rpm]# vim abc
-bash: vim: 未找到命令
# 开始安装
[root@localhost rpm]# rpm -ivh *.rpm
警告:gpm-libs-1.20.7-6.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:perl-parent-1:0.225-244.el7      ################################# [  3%]
   2:perl-HTTP-Tiny-0.033-3.el7       ################################# [  6%]
   3:perl-podlators-2.5.1-3.el7       ################################# [ 10%]
   4:perl-Pod-Perldoc-3.20-4.el7      ################################# [ 13%]
   5:perl-Pod-Escapes-1:1.04-295.el7  ################################# [ 16%]
   6:perl-Text-ParseWords-3.29-4.el7  ################################# [ 19%]
   7:perl-Encode-2.51-7.el7           ################################# [ 23%]
   8:perl-Pod-Usage-1.63-3.el7        ################################# [ 26%]
   9:perl-constant-1.27-2.el7         ################################# [ 29%]
  10:perl-Carp-1.26-244.el7           ################################# [ 32%]
  11:perl-Exporter-5.68-3.el7         ################################# [ 35%]
  12:perl-Filter-1.49-3.el7           ################################# [ 39%]
  13:perl-libs-4:5.16.3-295.el7       ################################# [ 42%]
  14:perl-macros-4:5.16.3-295.el7     ################################# [ 45%]
  15:perl-File-Path-2.09-2.el7        ################################# [ 48%]
  16:perl-File-Temp-0.23.01-3.el7     ################################# [ 52%]
  17:perl-PathTools-3.40-5.el7        ################################# [ 55%]
  18:perl-Scalar-List-Utils-1.27-248.e################################# [ 58%]
  19:perl-Socket-2.010-5.el7          ################################# [ 61%]
  20:perl-Storable-2.45-3.el7         ################################# [ 65%]
  21:perl-threads-1.87-4.el7          ################################# [ 68%]
  22:perl-threads-shared-1.43-6.el7   ################################# [ 71%]
  23:perl-Time-HiRes-4:1.9725-3.el7   ################################# [ 74%]
  24:perl-Pod-Simple-1:3.28-4.el7     ################################# [ 77%]
  25:perl-Getopt-Long-2.40-3.el7      ################################# [ 81%]
  26:perl-Time-Local-1.2300-2.el7     ################################# [ 84%]
  27:perl-4:5.16.3-295.el7            ################################# [ 87%]
  28:vim-filesystem-2:7.4.629-6.el7   ################################# [ 90%]
  29:vim-common-2:7.4.629-6.el7       ################################# [ 94%]
  30:gpm-libs-1.20.7-6.el7            ################################# [ 97%]
  31:vim-enhanced-2:7.4.629-6.el7     ################################# [100%]
# 安装成功,查看 vim 命令是否可以使用
[root@localhost rpm]# vim /tmp/abc.txt

I am a teacher.