最近升级了下自家的电脑内存到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/ 目录下即可
扩展:
1、每次更新 rpm 包后要重新建立元数据,可以做计划任务定时更新同步并重建
# createrepo --update /opt/work/repository/selfbuild-kernel/RPMS
2、yum 指定特定的 repo
# yum --enablerepo=selfbuild-kernel install kernel-ml.x86_64
原文:https://www.cnblogs.com/unchch/p/11837399.html