1.关于yum软件仓库
YUM(Yellowdog Updater Modified)是基于 RPM 包管理的 Linux 系统软件包管理工具,主要用于 RHEL、CentOS、Fedora 等系列操作系统。YUM 软件仓库(YUM Repository)则是集中存储 RPM 软件包及相关元数据的服务器或存储位置,通过标准化结构实现软件的自动安装、升级、依赖解决等功能。搭建私有 YUM 仓库对于企业内部系统管理、离线环境部署或定制化软件分发至关重要。
2.部署本地软件仓库
1/本地软件仓库
#创建挂载点
mkdir -p /var/repo
#将镜像挂载在repo文件夹(/dev/sr0
通常代表物理光驱或虚拟光驱)
mount /dev/sr0 /var/repo
#查看挂载情况
df
#挂载后需确保/var/repo
目录下有BaseOS
和AppStream
子目录。
ls /var/repo/
#创建本地软件仓库文件
vim /etc/yum.repos.d/rhel9_local.repo
填入以下内容:
[rhel9-BaseOS]
name=Local RHEL 9 BaseOS
baseurl=file:///var/repo/BaseOS
enabled=1
gpgcheck=1
gpgkey=file:///var/repo/RPM-GPG-KEY-redhat-release
[rhel9-AppStream]
name=Local RHEL 9 AppStream
baseurl=file:///var/repo/AppStream
enabled=1
gpgcheck=1
gpgkey=file:///var/repo/RPM-GPG-KEY-redhat-release
参数 | 作用 | 示例值 | 说明 |
---|---|---|---|
[rhel9-BaseOS] | 仓库唯一标识符(ID),用于内部引用 | rhel9-BaseOS | 需保持唯一性,建议使用版本 + 仓库类型命名 |
name | 仓库显示名称,用于用户界面(如 dnf 命令输出) | Local RHEL 9 BaseOS | 可自定义,但建议反映来源和内容类型 |
baseurl | 软件包存储的基础 URL 路径 | file:///var/repo/BaseOS | 使用file:// 协议指向本地挂载目录,需确保目录存在且有读取权限 |
enabled | 是否启用此仓库(1 = 启用,0 = 禁用) | 1 | 禁用后 dnf 将不会从此仓库获取软件包 |
gpgcheck | 是否验证软件包的 GPG 签名(1 = 验证,0 = 不验证) | 1 | 生产环境建议启用,确保软件包未被篡改 |
gpgkey | GPG 公钥的路径(当gpgcheck=1 时必需) | file:///var/repo/RPM-GPG-KEY-redhat-release | 指向 RHEL 官方 GPG 密钥文件,用于验证软件包签名 |
#查看仓库部署情况
sudo dnf repolist enabled
部署成功如下图显示:
经过上面的操作,本地软件仓库已经能使用,但是当机器重启后,前面挂载镜像要重新进行挂载,也就是临时挂载,如果想要机器开机时就自动挂载,操作如下:
#编辑文件:
vim /etc/rc.d/rc.local
填入挂载光盘镜像命令:同时要注意所给的注释里说明要给予改文件权限
#按照文件注释给予权限:
chmod +x /etc/rc.d/rc.local
#测试:
重启设备查看挂载情况,挂载成功如下图所示:
3.部署网络软件仓库
这边以阿里云镜像为例子:
#编辑网络软件仓库repo文件
vim /etc/yum.repos.d/rhel9_aliyun.repo
填入以下配置:
[aliyun-BaseOS]
name=Aliyun RHEL 9 BaseOS
baseurl=https://mirrors.aliyun.com/centos-stream/9-stream/BaseOS/x86_64/os/
enabled=1
gpgcheck=0
[aliyun-AppStream]
name=Aliyun RHEL 9 AppStream
baseurl=https://mirrors.aliyun.com/centos-stream/9-stream/AppStream/x86_64/os/
enabled=1
gpgcheck=0
参数 | 作用 | 示例值 | 说明 |
---|---|---|---|
[aliyun-BaseOS] | 仓库唯一标识符(ID),用于内部引用 | aliyun-BaseOS | 需保持唯一性,建议使用有意义的名称(如镜像站点 + 仓库类型) |
name | 仓库显示名称,用于用户界面(如 dnf 命令输出) | Aliyun RHEL 9 BaseOS | 可自定义,但建议反映镜像源和内容类型 |
baseurl | 软件包存储的基础 URL 路径 | https://mirrors.aliyun.com/centos-stream/9-stream/BaseOS/x86_64/os/ | 指向镜像站点的具体仓库目录,需包含架构(如x86_64 )和路径标识(如os/ ) |
enabled | 是否启用此仓库(1 = 启用,0 = 禁用) | 1 | 禁用后 dnf 将不会从此仓库获取软件包 |
gpgcheck | 是否验证软件包的 GPG 签名(1 = 验证,0 = 不验证) | 0 | 生产环境建议启用(设为 1),需配合gpgkey 参数指定公钥路径 |
gpgkey | GPG 公钥的 URL 路径(当gpgcheck=1 时必需) | https://www.centos.org/keys/RPM-GPG-KEY-CentOS-Official | 用于验证软件包的完整性和来源,确保不被篡改 |
metadata_expire | 元数据缓存的有效期(秒),控制多久从服务器刷新一次元数据 | 86400 (默认 1 天) | 可根据镜像更新频率调整,频繁更新的源可设小值(如 43200=12 小时) |
cost | 仓库优先级成本值(数值越低越优先),需配合yum-plugin-priorities | 1000 (默认) | 当有多个仓库提供相同软件包时,成本低的优先使用 |
skip_if_unavailable | 当仓库不可用时是否跳过(1 = 跳过,0 = 报错) | 0 (默认) |
#查看仓库部署情况
sudo dnf repolist enabled
部署成功如下图显示: