毕设需要应用 32 位的 CentOS,但是网上基本上没有关于 32 位的 yum 源的配置,使用官方默认源也已经 404 了。经过调研后发现了可以使用的方法,记录如下。

Environment:CentOS i686 7.6.1810

1. Procedure

和 Ubuntu 的 old-releases 类似,大部分 CentOS 不再维护的版本都会有留一个 centos-vault 源(包含了所有的 CentOS 版本的源)。同时在国内清华源也有 centos-vault 的镜像,可以使用。

经过测试,CentOS 上的 $releasever 默认是大版本号,而对应的目录下已经没有相应的 repomd.xml 文件了。但在具体的版本号目录下仍然有,故需要将 yum 源文件中的 $releasever 替换为相应的 7.6.1810

参考清华源提供的方式,我这里提供了对 32 位 CentOS 7.6 的官方镜像替换的脚本:

$ sed -e 's|^mirrorlist=|#mirrorlist=|g' \
      -e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/altarch|g' \
      -e 's|altarch/\$releasever|altarch/7.6.1810|g' \
      -i.bak \
      /etc/yum.repos.d/CentOS-Base.repo

2. Others

这里额外记录对内核模块编译环境的安装。

CentOS 默认没有装内核的一些头文件,可以通过以下脚本快速安装:

$ UNAME=$(uname -r)
$ yum install gcc kernel-devel-${UNAME%.*}
$ rm /lib/modules/${UNAME}/build # (if nesessary)
$ ln -s /usr/src/kernels/${UNAME} /lib/modules/${UNAME}/build

3. References

CentOS 镜像使用帮助 - 清华大学开源软件镜像站
CentOS 7 Base.repo - DISI
make: *** /lib/modules/3.10.0-693.el7.x86_64/build: 没有那个文件或目录 - 嘿 lemon