YUM 完全指南:从基础命令到仓库架构与搭建实践

60 阅读5分钟

一:概述

  • 是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。
  • 基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

二:Yum 基本命令

  • 更新系统

    yum update            # 更新所有已安装的包
    yum upgrade           # 与 update 类似,但会删除过时的包
    
  • 安装软件包

    yum install package_name          # 安装指定软件包
    yum install package1 package2     # 同时安装多个软件包
    yum localinstall package.rpm      # 安装本地 RPM 文件并解决依赖
    
  • 移除软件包

    yum remove package_name           # 移除指定软件包
    yum autoremove                    # 移除不再需要的依赖包
    
  • 搜索软件包

    yum search keyword      # 搜索包含关键字的软件包
    yum list                # 列出所有可用软件包
    yum list installed      # 列出已安装的软件包
    yum list updates        # 列出可更新的软件包
    yum list available      # 列出仓库中可用但未安装的软件包
    yum info package_name   # 显示软件包的详细信息
    
  • 清理缓存

    yum clean all           # 清理所有缓存数据
    yum clean packages      # 清理缓存的软件包
    yum clean metadata      # 清理元数据
    
  • 仓库管理

    yum repolist            # 列出已配置的仓库
    yum repolist all        # 列出所有仓库(包括禁用)
    yum-config-manager --add-repo repository_url  # 添加新仓库
    yum-config-manager --enable repository_id     # 启用仓库
    yum-config-manager --disable repository_id    # 禁用仓库
    
  • 仓库管理

    yum repolist            # 列出已配置的仓库
    yum repolist all        # 列出所有仓库(包括禁用)
    yum-config-manager --add-repo repository_url  # 添加新仓库
    yum-config-manager --enable repository_id     # 启用仓库
    yum-config-manager --disable repository_id    # 禁用仓库
    
  • 组操作

    yum grouplist           # 列出软件包组
    yum groupinstall "Group Name"    # 安装软件包组
    yum groupremove "Group Name"     # 移除软件包组
    yum groupinfo "Group Name"       # 显示软件包组信息
    
  • 其他实用命令

    yum provides */command_name  # 查找提供特定命令的软件包
    yum history                  # 查看 YUM 操作历史
    yum history undo ID          # 撤销特定历史操作
    yum check-update             # 检查可用更新但不执行
    yum deplist package_name     # 列出软件包的依赖关系
    

三:Yum仓的网络架构

在这里插入图片描述

  1. 公共网络仓库(红区)

  2. 内网镜像仓库(绿区)

    • 位置:企业内网服务器
    • 配置示例:
      [local-cdrom]
      name=Local CD-ROM
      baseurl=file:///mnt/cdrom/
      enabled=1
      gpgcheck=0
      
    • 特点:
      • 通过reposync工具定期同步公网源

      • 可添加企业内部私有RPM包

      • 需要维护更新(可配置cron定时同步)

      • 推荐使用Nginx或Apache提供HTTP服务

  3. 本地仓库(黄区)

    • 位置:服务器本地
    • 配置示例:
      local-cdrom]
      name=Local CD-ROM
      baseurl=file:///mnt/cdrom/
      enabled=1
      gpgcheck=0
      
    • 特点:
      • 无网络环境

      • 系统安装基础包

      • 可挂载ISO文件:mount -o loop CentOS-xxx.iso /mnt/cdrom


四:Yum 建仓

1. 网络仓

本文通过阿里云的源来构建网络仓,网络仓的选型可以自定义

  1. 备份系统自带的 repo 文件

    # 进入yum配置目录
    [root@hadoop101 ~]# cd /etc/yum.repos.d
    
    # 备份
    [root@hadoop101 yum.repos.d]# mv CentOS-Base.repo CentOs-Base.repo.bak
    
  2. 获取 aliyun repo 源

    # 进入yum配置目录
    [root@hadoop101 ~]# cd /etc/yum.repos.d
    
    # 下载获取 CentOS-aliyun.repo
    [root@hadoop101 yum.repos.d]# curl -o CentOS-aliyun.repo https://mirrors.aliyun.com/repo/Centos-7.repo
    
  3. 验证是否下载成功 在这里插入图片描述

2. 本地仓

  1. 创建挂载点

    [root@hadoop101 ~]# mkdir -p /mnt/cdrom
    
  2. 挂载光盘

    [root@hadoop101 ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom
    
  3. 拷贝 rpm 包

    [root@hadoop101 ~]# cp -r /mnt/cdrom/Packages /opt/software/
    
  4. 创建 rpm 软件包索引

    [root@hadoop101 software]# cd /opt/software/Packages/
    [root@hadoop101 Packages]# createrepo ./
    
  5. 创建一个 local 本地的 repo 文件

    [root@hadoop101 yum.repos.d]# vim centos-local.repo
    [centos-local]
    name=centos-local
    baseurl=file:///opt/software/Packages
    gpgcheck=0
    enabled=1   
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
  6. 测试

    [root@hadoop101 ~]# yum install -y vim
    [root@hadoop101 ~]# yum install -y tree
    

3. 内网仓

  1. 安装 httpd 服务

    [root@hadoop101 ~]# yum install -y httpd
    
  2. 修改 httpd 端口

    [root@hadoop101 ~]# vim /etc/httpd/conf/httpd.conf
    Listen 82
    
  3. 重启服务

    [root@hadoop101 ~]# systemctl restart httpd
    
  4. 进入 html 目录

    [root@hadoop101 ~]# cd /var/www/html/
    
  5. 拷贝 rpm 索引包

    [root@hadoop101 html]# cp -r /mnt/cdrom/Packages ./
    
  6. 建立rpm包索引

    [root@hadoop101 html]# cd /var/www/html/Packages/
    [root@hadoop101 Packages]# createrepo ./
    
  7. 创建内网 repo 文件

    [root@hadoop101 Packages]# cd /etc/yum.repos.d/
    [root@hadoop101 yum.repos.d]# touch hadoop101.repo
    
  8. 编辑 repo 文件

    baseurl=http://192.168.2.101:82/Packages,这里的ip为配置内网仓的虚拟机外网ip

    [root@hadoop101 yum.repos.d]# vim hadoop101.repo
    [hadoop101]
    name=hadoop101
    baseurl=http://192.168.2.101:82/Packages
    gpgcheck=0
    enabled=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
  9. 清理和建立缓存

    [root@hadoop101 yum.repos.d]# yum clean all
    [root@hadoop101 yum.repos.d]# yum makecache
    

五:总结

本文系统性地介绍了 Linux 下 YUM 包管理工具的核心知识体系:

  1. 基础操作:涵盖软件安装/更新/搜索等高频命令,提供即查即用的命令速查表

  2. 架构解析:通过拓扑图清晰展示公共网络仓、内网镜像仓、本地仓三类架构的访问路径与适用场景

  3. 实战搭建:分步骤详解三种仓库的搭建方法,包括网络仓的同步策略、本地仓的 ISO 挂载技巧、企业内网仓的安全配置要点

全文贯穿生产环境最佳实践,既适合初学者快速上手,也能为运维人员提供架构设计参考。后续可扩展 Ansible 自动化部署、DNF 迁移方案等进阶内容。