解决linux安装软件依赖的曲线救国方案
相信大家在一台无法连接外网的linux上安装软件时,对于软件依赖的安装,都会特别头疼,因为软件依赖的安装,不论是其数量,还是安装的复杂度都比软件本身要高出一个维度!
今天就和大家分享一个,解决linux安装软件依赖的曲线救国方案,希望大家以后都可以愉快的安装软件!
首先,要和大家介绍一个非常好用的插件yum-plugin-downloadonly,这个插件的作用是从yum仓库下载目标软件及其所需依赖。
// 安装插件 $ sudo yum install yum-plugin-downloadonly -y
/* * 语法示例 * downloadonly:标记只下载不安装
* setopt=protected_multilib=false:避免“Protected multilib versions”错误,我们只想安静的下载所有依赖 * downloaddir:指定下载目录
* target_dir:指定依赖的存储位置
* soft_name:软件名称,可以yum search <keyword>去获取
*/ $ yum install --downloadonly --setopt=protected_multilib=false --downloaddir=<target_dir> <soft_name>
有了插件yum-plugin-downloadonly的支持,接下来我将以安装apache服务器为例进行本文主题的演示。
准备条件:
1、一台CentOS 6.5的linux,无法连接外网,记为服务器A;
2、一台CentOS 6.5的linux,可以连接外网,记为服务器B;
现在,我们需要在服务器A上安装apache服务器,我们先在服务器B上下载软件及依赖:
// 下载apache服务器软件及依赖 $ sudo yum install --downloadonly --setopt=protected_multilib=false --downloaddir=/root/downloads/httpd httpd.x86_64
$ cd /root/downloads/httpd
// 查看下载好的文件
$ ls
apr-1.3.9-5.el6_9.1.x86_64.rpm apr-util-ldap-1.3.9-3.el6_0.1.x86_64.rpm httpd-tools-2.2.15-69.el6.centos.x86_64.rpm
apr-util-1.3.9-3.el6_0.1.x86_64.rpm httpd-2.2.15-69.el6.centos.x86_64.rpm mailcap-2.1.31-2.el6.noarch.rpm
将下载好的文件,拷贝至服务器A上:
// 进入文件所在目录
$ cd /root/downloads/httpd
// 忽略依赖安装目录下所有的软件 $ sudo rpm -Uvh --nodeps --replacefiles *.rpm
至此,apache服务器就安装完毕了,是不是比平时的方式要简单很多。
凡事皆有两面性,以下是此方案的缺点:
1)目标服务器和源服务器版本必须相同;(由于CentOS是从RedHat编译过来的 ,因此二者可以互通,我们的生产环境就是这种情况。)
2)无法使用软件的最新版本,只能使用yum仓库中的版本(一般最新软件只能在官网下载,可能未及时收录到yum仓库,不过软件的依赖依然可以使用此方案。);