【yum】CentOS7.x上主包及其依赖的下载

一、实验背景

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

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

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

 

 

二、实验思路

如果需要安装的软件如 zabbix、MySQL、nginx等软件官方iso镜像文件中并没有或者说没有我们想要的指定的较新版本,我们需要做的是找一台联网的虚拟机(和安装服务的目标服务器操作系版本一致),用相关命令将其主包及其依赖一次性下载,用于内网服务器搭建本地yum,实现离线安装。

那么问题来了:我们怎么添加zabbix、MySQL、nginx等软件官方的官方yum源,下载其指定版本的主包及其依赖?

一般套路是去官方仓库,下载安装其 release rpm包,就会相应的添加仓库文件和软件包校验文件。

 

三、实验环境

操作系统: CentOS7.5 Minimal

开发机(联网): 192.168.1.101

 

四、安装主包及依赖包下载工具

 

# 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仓库

添加epel官方yum源

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

 

# yum  -y install eple-release 

# rpm -ql epel-release

# cat /etc/yum.repos.d/epel.repo

 

 

 

 

添加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

 

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

 

添加zabbix官方仓库

https://repo.zabbix.com/zabbix/4.3/rhel/7/x86_64

 

 

 

# rpm -ivh  https://repo.zabbix.com/zabbix/4.3/rhel/7/x86_64/zabbix-release-4.3-1.el7.noarch.rpm

# rpm -ql zabbix-release

# cat /etc/yum.repos.d/zabbix.repo

 

# yum list available --disablerepo="*" --enablerepo="zabbix" 

 

 

添加MySQL社区版官方仓库

https://repo.mysql.com

https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en

 

 

 

 

# rpm -ivh https://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm

# rpm -ql mysql57-community-release

# ll /etc/yum.repos.d/mysql-community*

# cat /etc/yum.repos.d/mysql-community.repo

 

 

# yum list available --disablerepo="*" --enablerepo="mysql57-community"

 

 

添加ceph官方仓库

 

国外官方仓库:

https://download.ceph.com

https://docs.ceph.com/docs/master/install/get-packages

 

阿里云镜像站: 

https://mirrors.aliyun.com/ceph

https://download.ceph.com/rpm-luminous/el7/x86_64

 

 

 

 

 

 

 

 

 

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

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

[ceph]

name=Ceph packages for $basearch

baseurl=https://mirrors.aliyun.com/ceph/rpm-luminous/el7/x86_64

enabled=1

gpgcheck=0

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

 

 

# yum list available --disablerepo="*" --enablerepo="ceph"

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

 

 

上面只列了 epel、nginx、zabbix、mysql-community、ceph的官方仓库的添加方法,其他软件仓库添加方式类似,触类旁通,举一反三!

# ll /etc/yum.repos.d/

 

 

 

六、下载主包及依赖包

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

# yum -y install yum-utils

# yum  info  yum-utils

 

# repotrack --help

 

 

 

# repotrack  X  -p   /path/to/destDir

# repotrack  X*  -p   /path/to/destDir

注:此命令,会将软件包X和其全部依赖关系包一并下载到某个指定目录,支持通配符

 

我们用一个小脚本,将项目安装所需要的所有软件包及其依赖一次性下载

# vim  downloadDeps.sh

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

#!/bin/bash

yum -y install yum-utils

mkdir -p /root/yum

rpms=(

  nginx

  keepalived

  bind

  ntp

  ntpdate

  libaio

  psmisc

  net-tools

  perl

  MySQL-python

  mysql-community-common

  mysql-community-libs

  mysql-community-client

  mysql-community-server

  mysql-community-libs-compat

  ceph

  ceph-base

  ceph-common

  ceph-mon

  ceph-mgr

  ceph-osd

  ceph-mds

  ceph-fuse

  httpd

  php

  php-mysql

  mod_ssl

  zabbix-server-mysql

  zabbix-web

  zabbix-web-mysql

  zabbix-sender

  zabbix-get

  zabbix-java-gateway

  php-gd

  php-bcmath

  php-mbstring

  php-xml

)

for rpm in ${rpms[@]}

do

  repotrack $rpm  -p /root/yum

done

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

 

# sh  downloadDeps.sh | tee downloadDeps.log

# ll  /root/yum

 

 

 

 

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

 

 

#  yum  -y install createrepo 

#  createrepo   -v  /root/yum

 

 

现在我们可以将下载的主包及其依赖整个打包,拷贝到内网机器搭建本地yum,做离线安装了! 

# tar -zcf yum.tar.gz   /root/yum 

 

七、在内网机器搭建本地yum

将yum.tar.gz 拷贝到内网离线机器,搭建本地yum

#  mkdir  /tmp/install

# tar -zxf   yum.tar.gz  -C   /tmp/install

 

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

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

[YUM]

name=Local Repositry

baseurl=file://tmp/install/yum

enabled=1

gpgcheck=0

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

# yum clean all 

# yum list available --disablerepo="*" --enablerepo="YUM" 

# yum  -y install   X  --disablerepo="*" --enablerepo="YUM" 

 

八、参考

 

【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

【repotrack】repotrack工具的使用

https://rnd-dev.com/download-rpm-and-dependencies-from-yum-repo/

https://www.thegeekdiary.com/downloading-rpm-packages-with-dependencies-yumdownloader-vs-yum-downloadonly-vs-repoquery

你可能感兴趣的:(Linux)