1. 离线环境下的yum源构建背景
在企业的生产环境或者某些特殊场景中,服务器往往处于完全隔离的网络环境。这种情况下,常规的在线软件安装方式就会遇到困难。Rocky Linux 9作为RHEL的替代品,继承了其稳定性和安全性,但在离线环境下如何管理软件包就成了一个现实问题。
我遇到过不少这样的情况:新部署的服务器没有外网访问权限,但需要安装各种基础工具。这时候,本地yum源的构建就显得尤为重要。通过将ISO镜像中的软件包制作成本地仓库,我们就能在不联网的情况下使用yum命令安装软件,还能自动解决依赖关系。
2. 准备工作:获取和挂载ISO镜像
2.1 获取Rocky Linux 9 ISO镜像
首先需要准备Rocky Linux 9的安装镜像。可以从官网下载DVD版本,这个版本包含了BaseOS和AppStream两个主要仓库。建议下载最小安装镜像是不够的,因为它不包含完整的软件包集合。
下载完成后,可以通过多种方式将镜像传输到目标服务器:
- 使用U盘物理拷贝
- 通过内网文件共享服务
- 如果是虚拟机环境,可以直接挂载ISO文件
2.2 挂载ISO镜像到本地目录
挂载前需要创建一个挂载点目录。我习惯使用/iso目录,这样比较直观:
mkdir -p /iso然后就可以挂载ISO镜像了。根据你的环境不同,挂载方式也有所区别:
如果是物理服务器使用光盘:
mount /dev/cdrom /iso如果是挂载ISO文件:
mount -o loop Rocky-9.1-x86_64-dvd.iso /iso挂载完成后,可以通过ls命令查看内容:
ls /iso你应该能看到AppStream和BaseOS这两个关键目录。这两个目录包含了所有需要的软件包和元数据。
3. 配置本地yum仓库
3.1 创建仓库配置文件
Rocky Linux的ISO中已经包含了一个仓库配置模板,我们可以直接复制并修改它:
cp /iso/media.repo /etc/yum.repos.d/local.repo然后编辑这个文件,确保配置正确。我建议使用vim进行编辑:
vim /etc/yum.repos.d/local.repo配置文件应该包含两个仓库的定义:
[Local-BaseOS] name=Rocky Linux 9 - BaseOS baseurl=file:///iso/BaseOS gpgcheck=0 enabled=1 [Local-AppStream] name=Rocky Linux 9 - AppStream baseurl=file:///iso/AppStream gpgcheck=0 enabled=1这里有几个关键点需要注意:
- baseurl指向的是我们挂载的ISO目录
- gpgcheck设为0跳过了签名验证(生产环境建议开启)
- enabled=1确保仓库被启用
3.2 清理原有仓库配置
为了避免冲突,建议清理系统原有的仓库配置:
rm -f /etc/yum.repos.d/*.repo但要注意,如果你有其他本地仓库需要保留,就不要使用这个通配符删除,而是选择性删除。
4. 测试和使用本地仓库
4.1 更新yum缓存
配置完成后,需要让yum重新建立元数据缓存:
yum clean all yum makecache这个过程中,yum会读取我们配置的本地仓库,并建立软件包索引。如果一切正常,你应该能看到它成功加载了两个仓库的元数据。
4.2 安装测试软件
为了验证仓库是否正常工作,我们可以尝试安装一些常用工具。比如安装vim:
yum install vim -y如果安装过程没有报错,并且成功安装了vim及其依赖,说明我们的本地仓库配置正确。
4.3 查询软件包
你也可以通过搜索命令查看仓库中有哪些软件包:
yum list available或者搜索特定软件:
yum search nginx5. 常见问题排查
在实际操作中,可能会遇到各种问题。这里分享几个我遇到过的典型问题及解决方法。
5.1 挂载点权限问题
有时候挂载后访问/iso目录会提示权限不足。这是因为挂载的ISO文件系统可能有特殊的权限设置。解决方法:
chmod -R +r /iso这条命令会给所有文件添加读权限。
5.2 仓库元数据损坏
如果yum makecache失败,可能是元数据损坏。可以尝试重新挂载ISO,或者手动删除缓存:
rm -rf /var/cache/yum yum makecache5.3 软件包依赖问题
某些软件可能依赖的包不在ISO中。这种情况下,你有几个选择:
- 找更完整的ISO版本
- 手动下载缺失的rpm包并安装
- 搭建一个更完整的本地仓库
6. 进阶技巧:创建自定义仓库
如果ISO中的软件包不能满足需求,你可以创建自己的仓库,添加额外的软件包。
6.1 安装createrepo工具
首先需要安装创建仓库的工具:
yum install createrepo -y6.2 准备软件包目录
创建一个目录存放你的软件包:
mkdir -p /opt/myrepo把需要的rpm包都放到这个目录下。
6.3 生成仓库元数据
createrepo /opt/myrepo6.4 添加新仓库配置
创建一个新的repo文件:
vim /etc/yum.repos.d/myrepo.repo内容如下:
[myrepo] name=Custom Repository baseurl=file:///opt/myrepo gpgcheck=0 enabled=1然后更新缓存:
yum makecache现在你就可以安装自己添加的软件包了。
7. 性能优化建议
使用本地仓库虽然解决了离线问题,但在大型环境中可能会遇到性能瓶颈。这里有几个优化建议:
如果多台服务器需要使用,可以搭建一个HTTP服务器共享仓库,而不是每台服务器都挂载ISO。
对于频繁使用的仓库,可以考虑将ISO内容复制到本地硬盘,而不是每次都挂载。
定期更新你的本地仓库,确保包含最新的安全更新。
对于生产环境,建议开启GPG验证,确保软件包的安全性。
在实际项目中,我发现这种本地仓库方案特别适合以下场景:
- 安全要求高的生产环境
- 批量部署的服务器集群
- 开发测试环境的快速搭建
- 需要严格版本控制的场合
构建稳定的本地yum源是Linux系统管理中的一项基础但重要的技能。掌握了这个方法,你就能在各种网络受限的环境中游刃有余地管理软件包。刚开始可能会遇到一些问题,但按照这个流程多实践几次,很快就能得心应手了。