【离线安装】How to do offline installation on CentOS7.x?

一、实验背景

CentOS上服务搭建,服务器能联网,一切好说,根据相关文档,添加指定的yum仓库源安装就是了。

问题是,很多时候,生产环境的服务器并不能联网,甚至登录相关服务器还要各种跳板机,最多你能拖个CentOS官方镜像去搭建本地yum源,解决相关软件安装的依赖。

那么,如果你要安装服务的目标服务器操作系统是最小化安装,需要安装的软件官方镜像文件中有没有,怎么办?

二、实验环境

操作系统: CentOS7.2 Minimal

开发机(联网): 192.168.1.101

测试机(不能联网): 192.168.1.102

三、实验说明

假设有一个web项目,我们需要安装一个高可用的前端,做反向代理,就是 nginx+keepalived组合,我们怎么做离线安装包?

本实验中,我们只讲离线安装包的制作,不涉及具体配置。

我们在能联网的开发机上制作离线安装包,在不能联网的测试机上做离线安装。

目标服务器是什么版本的CentOS操作系统,你就用什么操作系统做开发机!

四、实验操作

在能联网的开发机上:

# yum  -y install epel-release

# yum -y install createrepo

# yum -y install yum-utils

上述相关软件包的作用如下:

EPEL是企业版 Linux 附加软件包的简称,EPEL是一个由Fedora特别兴趣小组创建、维护并管理的,针对 红帽企业版 Linux(RHEL)及其衍生发行版(比如 CentOS、Scientific Linux、Oracle Enterprise Linux)的一个高质量附加软件包项目。

createrepo 命令用于创建yum源(软件仓库),即为存放于本地特定位置的众多rpm包建立索引,描述各包所需依赖信息,并形成元数据。

yum-utils是管理repository及扩展包的工具,包含一系列yum工具,本实验中我们用到其中的  repotrack,直接下载指定的包,包括所有依赖一块完成,实乃解决软件依赖之利器!

# yum list available  --disablerepo="*"  --enablerepo="epel" | grep keepalived

# yum list available  --disablerepo="*"  --enablerepo="epel" | grep nginx


可以看到,自带的yum联网仓库和epel源中,提供的keepalived和nginx版本,现在我们需要更新一点nginx版本,怎么办?

添加官方yum源,如果你要装类似开源软件,套路类似,一般都有官方提供的yum源,如zabbix,MySQL社区版等。

配置nginx官方yum源:

官方网址:http://nginx.org/en/linux_packages.html#stable

# vim  /etc/yum.repos.d/nginx.repo

################################################

[nginx]

name=nginx repo

baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/

gpgcheck=0

enabled=1

###################################################


# rpm  --import  http://nginx.org/keys/nginx_signing.key

# yum list available --disablerepo="*"  --enablerepo="nginx" | grep nginx

创建nginx和keepalived包目录

# mkdir /root/rpmDeps

下载keepalived主包及其依赖

# repotrack  keepalived -p /root/rpmDeps/

下载nginx主包及其依赖

# repotrack nginx -p /root/rpmDeps/

注:实际上,默认是拉最新包,只要仓库中有相关包,你可以指定需要下载的主包的版本,如  repotrack  nginx-1.14.2    -p /root/rpmDeps/  当然,前提是你要按套路出牌,别写错了指定版本的格式!

如果我有很多包及其依赖要一次性下载,怎么办?

聪明如你肯定想到了,写一个小脚本做循环:

# vim  rpmDownload.sh

################################

#!/bin/bash

for rpm in "nginx keepalived"

do

repotrack $rpm -p /root/rpmDeps

done

################################



# bash rpmDownload.sh  | tee rpmDownload.log

查看一下下载的相关主包:

# ll /root/rpmDeps/

# ll /root/rpmDeps/ | grep nginx

# ll /root/rpmDeps/ | grep keepalived


创建仓库清单文件

# createrepo -v  /root/rpmDeps/



将下载的rpm包打包

# tar -zcf rpmDeps.tar.gz  rpmDeps/


五、在实验机上做离线安装

将离线安装包 rpmDeps.tar.gz 上传到不能联网的测试机器上

# tar  -zxf  rpmDeps.tar.gz


搭建本地yum仓库

# mkdir /etc/yum.repos.d/backup

# mv /etc/yum.repos.d/*.repo  /etc/yum.repos.d/backup

# rm -rf  /tmp/localrepo

# mkdir  -p  /tmp/localrepo

#  cp  -rf  ./rpmDeps/*    /tmp/localrepo

####################################################

# cat >  /etc/yum.repos.d/localrepo.repo  << EOF

[localrepo]                                     

name=Local Repository                 

baseurl=file:///tmp/localrepo       

gpgcheck=0                                 

enabled=1         

EOF

###################################################

# yum clean all

yum -y install  nginx keepalived  --disablerepo="*"  --enablerepo="localrepo"

# rm  -rf /tmp/localrepo

# rm  -rf  /etc/yum.repos.d/localrepo.repo

#mv  /etc/yum.repos.d/backup/*.repo  /etc/yum.repos.d

#rm -rf /etc/yum.repos.d/backup

当然,你可以上述操作写成脚本:

# vim  build_localrepo.sh

###########################################################

#!/bin/bash

parent_path=$( cd "$(dirname "${BASH_SOURCE}")" ; pwd -P )

cd "$parent_path"

# build local repositry

mkdir /etc/yum.repos.d/backup

mv /etc/yum.repos.d/*.repo  /etc/yum.repos.d/backup

rm -rf /tmp/localrepo

mkdir -p /tmp/localrepo

cp -rf  ./rpmDeps/* /tmp/localrepo

cat > /etc/yum.repos.d/localrepo.repo << EOF

[localrepo]                       

name=Local Repository       

baseurl=file:///tmp/localrepo

gpgcheck=0                       

enabled=1

EOF

yum clean all

# install rpm from local repo

yum -y install nginx keepalived  --disablerepo="*" --enablerepo="localrepo"

# clean local repositry

rm -rf  /tmp/localrepo

rm -rf /etc/yum.repos.d/localrepo.repo

mv /etc/yum.repos.d/backup/*.repo /etc/yum.repos.d

rm -rf /etc/yum.repos.d/backup

############################################################

# sh -x  build_localrepo.sh


大功告成,如有疑惑,请详看下面列出的参考链接,现在如果你想离线安装其他软件,再也不用懵逼了!


六、参考

【yum】解决离线安装依赖包的方法

https://www.jianshu.com/p/6f4f9a80a726

【createrepo】createrepo生成仓库元数据,搭建本地yum源

https://www.jianshu.com/p/5cb5af152e75

【yum】yum install --help

https://www.jianshu.com/p/713979e2f9bc

【yum源】CentOS7安装第三方源

https://www.jianshu.com/p/63fdf9875633

【yum】在CentOS7.x中使用yum安装软件的指定版本

https://www.jianshu.com/p/ca3ddf69ca4e

【Nginx】CentOS7 上yum 安装nginx的最新版

https://www.jianshu.com/p/ebe4489dae66

【nginx】nginx最新稳定版的安装

https://www.jianshu.com/p/c2f579c44055

你可能感兴趣的:(【离线安装】How to do offline installation on CentOS7.x?)