5. 创建自定义软件仓库

如果有些rpm包我们本地内网的yum仓库里面没有,又经常需要用到,要去外网去下载,那么每次要用的时候都会依赖外网带宽,可能速度会很慢,需要消耗很长时间。

那么这个时候,我们可以把这些包下载下来,在本地创建一个自定义仓库,就放这些包。

这里以安装k8s为例,我们多台服务器需要安装那些外网网络yum源的rpm包。每次从网络上下载都需要很长时间,三台服务器要安装,时间就是三倍。

所以现在我们将这些包下载到本地,做成自定义yum仓库,然后每台服务器都使用这个本地的yum源,那速度就快了。

5.1. 下载指定rpm包到本地

这里我们以docker-ce为例。

  • 添加docker-ce的yum仓库
$ wget -P /etc/yum.repos.d/ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 创建用于存放rpm包的目录,下载rpm包到该目录
$ sudo mkdir -p  /www/share/sophiroth
$ sudo yum install --downloadonly --downloaddir=/www/share/sophiroth docker-ce

5.2. 更新源

如果没有安装createrepo, 要先安装

sudo yum install createrepo -y

更新源

sudo createrepo --update -p /www/share/sophiroth/

5.3. 配置nginx

在nginx的server里添加如下配置

location /sophiroth {
       alias /www/share/sophiroth ;
}

然后通过web服务就可以访问了,这里我们部署的地址是: http://dc.alv.pub/sophiroth

5.4. 客户端访问

客户端配置yum仓库

[alvin@k8s1 ~]$ sudo vim /etc/yum.repos.d/sophiroth.repo
[sophiroth]
name=sophiroth
gpgcheck=0
enable=1
baseurl=http://dc.alv.pub/sophiroth
[alvin@k8s1 ~]$ yum repolist|grep sophiroth
sophiroth               sophiroth                                              1

然后客户端就可以通过这个内网yum源安装docker-ce了。

sudo yum install docker-ce

5.5. 后续更新新的包

后续添加新的包的时候,需要做以下几步。

  1. 添加yum源

    后续添加新的包的时候,首先添加能下载那个包的yum源

  2. 下载rpm包

    下载rpm包,通过以下命令,$packageName替换为实际要下载的包名。

    $ sudo yum install --downloadonly --downloaddir=/www/share/sophiroth  $packageName
    
  3. 更新仓库包信息

    $ sudo createrepo --update -p /www/share/sophiroth/
    
  4. 客户端清理缓存重新加载包信息

    客户端如果以前加载过,会有以前的仓库包信息的缓存,需要清理缓存后从新加载才能找到仓库里新增的包。

    $ sudo yum clean all
    $ sudo yum repolist