【离线安装】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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342