离线YUM仓库搭建

项目需要,在一个封闭的内网环境中部署一套系统,为了避免后期的包安装不畅,决定先搭建一个离线YUM仓库。
以下内容在centos7.7系统中测试通过

包准备

软件部署可能会遇到各种依赖关系,最简单也是最直接的就是使用YUM进行安装,可以减轻部署的难度。准备各种包也是一项繁琐的工作,这里我采用的是最简单粗暴的方式,直接将镜像的ISO文件作为基础yum仓库。

镜像文件下载

最好使用国内镜像站下载,我选择的是清华大学的镜像站,下载Everything版本的镜像
https://mirrors.tuna.tsinghua.edu.cn/centos/7.7.1908/isos/x86_64/CentOS-7-x86_64-Everything-1908.iso

在这里插入图片描述

解释一下各个镜像:
1、DVD版本:标准安装版本
2、Everything版本:在标准版的基础上集成了常用的软件
3、LiveGNOME版本:GNOME桌面版
4、LiveKDE版本:KDE桌面版
5、Mininal版本:最小化安装,基本不包含软件
6、NetInstall版本:网络安装镜像

包上传

将下载以后的镜像进行解压,并在服务器上准备一个空目录作为后续仓库目录,上传Packages目录到目标服务器,其他文件无需上传。

[root@localhost localrepo]# pwd
/data/localrepo
[root@localhost localrepo]# ll
total 276
drwxr-xr-x. 2 root root 225280 Apr 12 00:18 Packages
[root@localhost localrepo]# ll Packages |more
total 3893852
-rw-r--r--. 1 root root  1800604 Nov 12  2018 389-ds-base-1.3.8.4-15.el7.x86_64.rpm
-rw-r--r--. 1 root root   715192 Nov 12  2018 389-ds-base-libs-1.3.8.4-15.el7.x86_64.rpm
-rw-r--r--. 1 root root   152952 Aug 10  2017 abattis-cantarell-fonts-0.0.25-1.el7.noarch.rpm
-rw-r--r--. 1 root root   549240 Nov 14  2018 abrt-2.1.11-52.el7.centos.x86_64.rpm
-rw-r--r--. 1 root root   197292 Nov 14  2018 abrt-addon-ccpp-2.1.11-52.el7.centos.x86_64.rpm
-rw-r--r--. 1 root root   108432 Nov 14  2018 abrt-addon-kerneloops-2.1.11-52.el7.centos.x86_64.rpm
-rw-r--r--. 1 root root    98676 Nov 14  2018 abrt-addon-pstoreoops-2.1.11-52.el7.centos.x86_64.rpm
-rw-r--r--. 1 root root   104548 Nov 14  2018 abrt-addon-python-2.1.11-52.el7.centos.x86_64.rpm

repodata数据生成

在Pasckage目录中,其实远不止上图中的包文件,里面大大小小的存放了几千个包,为了更好更快的查找包,repodata就出现了,repodata里面存放了所有包的元数据信息,repodate数据由createrepo生成。因此首先需要安装createrepo命令。

[root@localhost localrepo]# cd Packages/
[root@localhost Packages]# ll createrepo*
-rw-r--r--. 1 root root 95840 Aug 10  2017 createrepo-0.9.9-28.el7.noarch.rpm
[root@localhost Packages]# rpm -ivh createrepo-0.9.9-28.el7.noarch.rpm
Preparing...                          ################################# [100%]
        package createrepo-0.9.9-28.el7.noarch is already installed
[root@localhost Packages]# which createrepo
/usr/bin/createrepo
[root@localhost Packages]# cd ..
[root@localhost localrepo]# createrepo /data/localrepo/
Spawning worker 0 with 4012 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

当出现上述的内容后,表明本地的yum仓库搭建完毕,此时在当前目录下会新增repodata目录。

本机测试使用

新建本机yum.repos.d目录下的xx.repo文件,进行本地测试安装

[root@localhost yum.repos.d]# [root@localhost yum.repos.d]# pwd
/etc/yum.repos.d
[root@localhost yum.repos.d]# vi /etc/yum.repos.d/local.repo
[rhel7.7]     //中括号为固定格式,里面的内容只是一个标识
name =test local repo  //描述性信息
baseurl = file:///data/yumrepo  //指定baseurl的路径,本机使用file指定即可
gpgcheck=0   //是否进行gpg校验
enabled=1    //是否启用本repo文件       

使用yum命令今进行测试安装

[root@localhost yum.repos.d]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id                                                                               repo name                                                                                     status
rhel7.7                                                                               test local repo                                                                               4,010
repolist: 4,010

上面输出的结果中repo id和repo name就是我们在local.repo文件中自定义的内容,此时使用yum install 就可以安装需要的组件。

新增包的处理

上面仓库中的包都来自于centos基础镜像中,有些在epel源的包需要额外下载后,上传到Package目录,重新生成repodata的元数据,此时就需要用到createrepo的update了。

新增的包必须要完成如下更新repodata数据步骤才能使用

[root@localhost yum.repos.d]# createrepo --update /data/localrepo/
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

暴露YUM仓库

搭建离线本地YUM仓库绝不仅仅只是本机使用,为了完成一个项目的部署,往往其他主机也需要部署基础包,此时就可以将上面搭建的yum源使用http的形式暴露给其他服务器。本次我选用nginx的http服务进行暴露。

[root@localhost ~]# yum install nginx -y
[root@localhost ~]# vi /etc/nginx/nginx.conf
...
server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /data/localrepo;
...

修改server段中的root项,改为/data/localrepo,注意此处的路径只到repodata级目录即可,然后启动nginx即可。

其他服务器测试使用

[root@localhost yum.repos.d]# vi /etc/yum.repos.d/local.repo 
[reh17.7]
name = local repo
baseurl = http://192.168.254.128:80    //此处的地址就是yum仓库暴露出来的http服务地址
gpgcheck=0
enabled=1
[root@localhost yum.repos.d]# yum list|grep redis
redis.x86_64                            3.2.12-2.el7                   reh17.7  

使用yum命令就可以进行相关组件的安装

到这里就算结束了,其实并不难,记录下来就当一次经历吧,下次遇到时不用被人唬住了。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值