文章目录
前言
由于公司主要业务都在专网、内网环境下运行,无法使用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
验证成功!