xiufeigo™
Home
运维
从零开始手搓离线 yum 源

一、查看系统版本

都说了手搓 yum 源,首先系统总得是标准的吧?

# 查看系统版本
cat /etc/redhat-release

CentOS Linux release 7.9.2009 (Core)

根据上面,咱知道了系统是 CentOS 7.9 的了哈

💡


二、找一个 CentOS 7.9 的测试环境

可以使用虚拟机装一个 CentOS 7.9 的系统(理论上 CentOS 7 的系统都行)

💡


三、配置测试环境 yum 源

检查 repo 内容

yum repolist

Loading mirror speeds from cached hostfile
repo id           repo name                                       status
base/7/x86_64     CentOS-7                                        10,072
epel/x86_64       Extra Packages for Enterprise Linux 7 - x86_64  13,791
extras/7/x86_64   CentOS-7                                        526
updates/7/x86_64  CentOS-7                                        6,173
repolist: 30,562

Tips: 如果环境 yum 源有问题,可以替换 yum 源

# 创建目录 && 备份 yum 源
cd /etc/yum.repo.d

sudo mkdir bak-$(date +%F)

mv ./*.repo bak-$(date +%F)/

# 使用阿里云 yum 源替换本地 yum 源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# 刷新缓存
yum clean all && yum makecache

Tips: 如果环境上没有 epel 的话,可以手动装一个

# 安装 epel 源
yum install epel-release

# 刷新 yum 源缓存
yum clean all && yum makecache


四、同步 yum 源中所有的包到本地

先找一个剩余空间大于 100G 的地方,下文中以 /mnt/CentOS-7.9-repo-ali/ 代替

安装 screen,并进入 screen,防止同步到一半掉线

yum install -y screen

# 进入 screen
screen -S reposync

使用 reposync 同步 yum 源的包到本地

reposync -r * -p /mnt/CentOS-7.9-repo-ali/

接下来就是等了,这一步可能要很久很久

💡


五、建立 yum 源索引

安装 createrepo

yum install createrepo

创建索引

createrepo /mnt/CentOS-7.9-repo-ali/

这一步也是挺久的,等就行了

💡


六、打包镜像

因为 sfs 支持多线程压缩解压,且支持直接挂载,因此咱这里使用 sfs 来压缩

安装 squashfs-tools 以支持压缩 sfs 文件

yum install squashfs-tools

开始压缩 sfs 镜像

mksquashfs /mnt/CentOS-7.9-repo-ali/ CentOS-7.9-repo-ali.sfs


七、给没外网的环境传上去,然后挂载一下

这里假设挂载在了 /mnt 下

mount CentOS-7.9-repo-ali.sfs /mnt/ -t squashfs -o loop


八、配置 yum 源

挪走原本的 repo 文件

cd /etc/yum.repo.d

mkdir bak

mv *.repo bak/

创建本地 repo

echo "
[local]
name=local
baseurl=file:///mnt/
enabled=1
gpgcheck=0"
> local.repo

注意:baseurl=file:// 后面跟的才是挂载的绝对路径

💡

刷新 yum 源内容

yum clean all && yum makecache


Enjoy~~~

粤ICP备2022009857号-1