• CentOS 自建 yum repository 仓库加速


    最近升级了下电脑内存到32G,开多台虚拟机做一些测试,初始化系统升级内核的时候下载 kernel.*rpm 包太慢了,于是自建了一个 yum repo 仓库。

     

    1、找一个 repo 源,既然是内核方面的,自然要找 elrepo 了,先下载这个kernel repo

    # rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
    # rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
    

    执行以上两步,elerpo 就安装到了 /etc/yum.repo.d 中:

     

    2、确认自己要同步的 rpm 包所在的 repo id,大家可以打开 elrepo.repo 看一下,里面是多个 repo id ,不同的 id 里的 rpm 包是不一样的,此处我需要 kernel 相关的包,所有只 需要 “[elrepo-kernel]” 下的内容

     3、安装 repo 的两个工具:

    (1)资源同步工具 -  reposync

    (2)元数据遍历工具 - createrepo

    # yum install yum-utils createrepo -y
    

      

    4、在本地服务器上创建 repository 资源目录,准备存放用 reposync 工具同步下来的 rpm 包

    # mkdir /opt/work/repository

     将 elrepo 源中的 elrepo-kernel 组中的 rpm 包同步到本机的 /opt/work/repository/ 目录

    # reposync -g -m -r elrepo-kernel -p /opt/work/repository/

     同步动作完成后,去看下资源目录,发现 reposync 自动创建了层级目录

    5、建立自建源的元数据和依赖关系,执行:

    # createrepo /opt/work/repository/elrepo-kernel/RPMS/
    

     

    看一下目录,元数据都创建好了,有兴趣的自己打开文件看下

    6、最后编辑自己的 repo 文件,此处我命名为 selfbuild.repo,注意必须放在 /etc/yum.repo.d/ 目录下,我是复制的 elrepo.repo 文件修改的

    # vim /etc/yum.repos.d/selfbuild.repo
    [selfbuidrepo-kernel]                  
    name=selfbuild Linux Kernel Repository - el7
    baseurl=file:///opt/work/repository/elrepo-kernel/RPMS/
    enabled=1                              
    gpgcheck=0 

    创建好自己 repo 之后,可以检查一下:

    # yum clean all
    # yum repolist all

    此时 repo 源已基本可用,但只能在本机使用,不能为内网其他的服务器服务

    可以利用 nginx 将本地目录发布出来,替换 baseurl 字段即可,以下贴出 nginx 的配置,自己参考修改即可:(此处我修改了/opt/work/repository/elrepo-kernel 目录名称)

    # vim /usr/local/nginx/conf/vhosts/9002-repo.conf  
    server {
        listen 9002;
        root /usr/local/nginx/html;
     
        location /yum {
            alias /opt/work/repository/selfbuild-kernel/RPMS;
            autoindex on;
            autoindex_exact_size off;
            autoindex_localtime on;
        }
    }  

     替换 /etc/yum.repo.d/selfbuild-kernel.repo 中的 baseurl:

    # vim /etc/yum.repos.d/selfbuild.repo 
    [selfbuidrepo-kernel]                 
    name=selfbuild Linux Kernel Repository - el7
    baseurl=http://172.16.0.11:9002/yum
    enabled=1                                                                                                                                                                                                                                     
    gpgcheck=0  

    最后确认一下,将 selfbuild-kernel.repo 放到目标服务器的 /etc/yum.repo.d/ 目录下即可

     备注:使用 yum clean all 和 yum repolist all 来检查源是否已生效。

    扩展:

    1、reposync 是同步整个源站的 rpm 包,大部分时候我们并不需要这么大而全,仅仅需要很少量的包,

        可以使用 yumdownloader 来下载指定的包,使用 ‘--resolve ’ 参数将依赖包一并下载,使用 '--destdir' 来指定rpm的存放位置,默认下载到当前目录;

    备注: yumdownloader 命令在 yum-utils 包中

    # yumdownloader --resolve vim --destdir=/tmp

    2、每次更新 rpm 包后要重新建立元数据,可以做计划任务定时更新同步并重建 ;

    # createrepo --update /opt/work/repository/selfbuild-kernel/RPMS
    

    3、yum 指定特定的 repo;

    # yum --enablerepo=selfbuild-kernel install kernel-ml.x86_64
    

    4、注意 baseurl 后面的地址不能带权限访问。  

  • 相关阅读:
    51Nod-1006【LCS】+【输出路径】模板题
    POJ 2250 Compromise【LCS】+输出路径
    洛谷 P1387 最大正方形 【dp】(经典)
    【hdu】4521 小明序列【LIS变种】【间隔至少为d】
    HDU 1025 城市供应 【LIS】
    hdu 2191 悼念512汶川大地震遇难同胞 【多重背包】(模板题)
    HDU 2159 FATE【二维完全背包】
    POJ 1384 Piggy-Bank【完全背包】+【恰好完全装满】(可达性DP)
    洛谷 P1474 货币系统 Money Systems(经典)【完全背包】+【恰好装满的最大方案数量】
    洛谷 P1057 传球游戏 【dp】(经典)
  • 原文地址:https://www.cnblogs.com/unchch/p/11837399.html
Copyright © 2020-2023  润新知