自建离线yum源



前言

由于公司主要业务都在专网、内网环境下运行,无法使用yum安装升级更新,服务器量少的情况下也可以使用离线安装,但是随着服务器规模上升并且人员混杂,还是使用统一的自建的yum源更加方面快捷。


一、yum以及源的概念?

yum是在RedHat中的一个包管理工具。基于RPM包管理,能够从指定服务器自动下载RPM包并且安装,可以自动处理依赖关系,能够一次安装所有依赖的软件包,无需一次一次的下载安装。yum源就是存放rpm包以及依赖关系的服务器,一般是指163、souhu、阿里、中国科技大学等公共的网络yum源,或者是自建的局域网yum仓库。


二、yum源标识(repo id)类型

base

指操作系统镜像源,包含了ISO镜像内的所有软件包

updates

包含了系统更新,升级的软件包

extras

扩充的软件包合集

epel

为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux.

自定义repo id
以k8s yum源为例,[repo id]本地可以随意定义,主要是看baseurl连接的源,当多个repo id重复时,会以最后加载的一个repo id为准

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=k8s
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

三、开始搭建

0、准备工作

首先需要准备一台可以连接互联网的服务器,安装所需依赖环境和软件包;

安装所需软件

yum -y install wget yum-utils createrepo 

createrepo:用于生成yum源各软件之间的依赖索引。
yum-utils:安装后可使用 yumdownloader 命令下载所需软件包。
reposync:Reposync用于将远程yum存储库同步到本地,使用yum检索包的目录。

配置yum源

这里使用阿里源Centos7的yum源为例

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
#替换阿里源地址,官方推荐操作
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo

1、全量离线yum源

1.1 查看已经配好的网络源id

yum repolist

1.2 按照源ID将网络源拉取到本地

reposync -r base -p /data/yum/base
reposync -r epel -p /data/yum/epel
reposync -r extras -p /data/yum/extras
reposync -r updates -p /data/yum/updates
reposync -r kubernetes -p /data/yum/kubernetes

1.3 生成repodata索引依赖

createrepo /data/yum/base
createrepo /data/yum/epel
createrepo /data/yum/extras
createrepo /data/yum/updates
createrepo /data/yum/kubernetes

在Packages同级目录中可以看到生成的repodata目录
在这里插入图片描述

1.4 使用测试

备份/etc/yum.repo.d/中的其他文件,手动添加:

[Centos7-base]
name=centos-base
baseurl=file:///opt/base/base
gpgcheck=0
enabled=1

#其他repo id按照同样格式书写
[kubernetes] 
name=k8s
baseurl=http://192.168.12.12/yum/kubernetes
......

注意:baseurl 可以使用file 、ftp或http,目录路径要写到Package和repodata目录。

1.5 测试

yum repolist

repo id                              repo name                            status
Centos7-base                         centos-base                          10,072
kubernetes                           k8s                                       0
repolist: 10,072

将本地的rpm包和依赖包压缩打包,放入内网环境,这样其他台的服务器也可能通过添加自定义的repop文件,以本机或者http的方式连接yum源仓库了


2、特定软件的离线yum源

上一种方法制作全量的yum离线源,虽然实用,但是把整个源全部都拉下来是在是太大了,仅拉取centos自带的yum源就占了10个G,加上epel和其他源,那就太大了。所以在大部分情况下不是很适用。

所以我们可以选择制作专门一个多多个软件包的小源,简单小巧,利于传输。

这里以docker举例,制作一个docker离线源

2.1 拉取特定服务rpm包和依赖

利用 yumdownloader 命令可以解决软件安装时的依赖关系,并且用参数可以将其所有都下载下来(并不安装到本地docker_rpms目录)

yumdownloader --resolve --destdir=./docker_rpms/ docker

2.2 生成repodata索引依赖

createrepo ./docker_rpms

2.3 测试

cat <<EOF>> /etc/yum.repos.d/test.repo
[docker]
name=dokcer-ce
baseurl=file:///root/docker_rpms
gpgcheck=0
enabled=1
EOF
yum repolist

repo id                              repo name                            status
Centos7-base                         centos-base                          10,072
docker                               dokcer-ce                                56
repolist: 10,128

验证成功!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值