ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

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

2019-06-30 08:48:50  阅读:361  来源: 互联网

标签:do installation etc localrepo repos 离线 nginx yum rpmDeps


一、实验背景

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

标签:do,installation,etc,localrepo,repos,离线,nginx,yum,rpmDeps
来源: https://blog.csdn.net/michaelwoshi/article/details/94280537

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有