CentOS 7离线软件安装(repotrack + createrepo)

为什么需要离线安装?

  • 数据中心隔离区、政企内网、涉密网络通常无法连接互联网,此时无法使用 yum install 下载软件,因为 YUM 无法连接官方仓库。
  • 通常采用:外网下载 → 制作离线仓库 → 导入内网 → YUM 安装
  • 整个流程只需要维护一份离线仓库,以后安装任何软件都和联网环境完全一致。
  • 准备一台与内网机系统版本、CPU 架构一致的外网机器,用于下载 RPM 包及所有依赖,拷贝到内网安装。

整体流程

image-20260721111812493

外网机操作(下载并制作离线仓库)

  1. 确认系统环境(与内网一致)

    cat /etc/centos-release      # 查看系统版本
    uname -m                     # 查看 CPU 架构(如 x86_64)
    
  2. 安装必要工具

    sudo yum install -y yum-utils createrepo
    
    • yum-utils:提供 repotrack 等下载工具。
    • createrepo:用于生成 YUM 仓库元数据 repodata
  3. 更换阿里云镜像源以提升下载速度(可选)

    sudo curl -o /etc/yum.repos.d/CentOS-Base.repo \
    https://mirrors.aliyun.com/repo/Centos-7.repo
    
    sudo yum clean all   # 清空缓存
    sudo yum makecache   # 重新生成缓存
    
  4. 创建统一下载目录

    sudo mkdir -p /kefeng-repo     # 所有 RPM 和仓库数据存放于此
    
  5. 下载软件及全部依赖

    # 下载单个软件
    sudo repotrack -p /kefeng-repo sysstat
    # 下载多个软件
    sudo repotrack -p /kefeng-repo sysstat nginx docker
    # 支持通配符
    sudo repotrack -p /kefeng-repo "httpd*"
    
    • repotrack 会自动递归解析依赖,下载所有需要的 RPM,不受当前系统已装软件影响。
    • 常用参数
      • -p:指定下载目录。
      • -a:指定 CPU 架构(如 x86_64)。
      • --repoid:指定从某个仓库下载。
  6. 生成仓库元数据(createrepo)

    createrepo /kefeng-repo            # 全量更新元数据
    createrepo --update /kefeng-repo   # 增量更新元数据
    
    • 下载完 RPM 后,必须生成 repodata/ 目录,YUM 才能识别此目录为有效仓库。
    # 执行完成后目录结构如下
    /kefeng-repo    
    ├── *.rpm
    └── repodata/
    
  7. 打包仓库并传输至内网

    tar -czf kefeng-repo.tar.gz -C /kefeng-repo .
    
    • 将生成的 kefeng-repo.tar.gz 通过 U 盘、内网共享等方式拷贝到内网服务器。

内网机操作(配置本地仓库并安装)

  1. 解压仓库到目标目录

    sudo mkdir -p /kefeng-repo                       # 创建仓库目录
    sudo tar -xzf kefeng-repo.tar.gz -C /kefeng-repo # 解压
    
  2. 禁用其他仓库(可选)

    • 内网环境通常只应使用本地仓库,避免 YUM 尝试访问外网仓库导致超时或冲突。
    • 方式一:将 /etc/yum.repos.d/ 下除 local.repo 外的 .repo 文件移走备份
    • 方式二:将不需要的仓库配置中 enabled=0 禁用。
  3. 创建本地仓库配置文件

    sudo vi /etc/yum.repos.d/local.repo
    
    [local]
    name=Local YUM Repository
    baseurl=file:///kefeng-repo
    enabled=1
    gpgcheck=0
    

    配置项说明

    • [local]:仓库唯一标识(Repository ID)。
    • name:仓库名称,仅用于显示。
    • baseurl:仓库地址,file:// 表示本地目录。
    • enabled:是否启用仓库(1=启用,0=禁用)。
    • gpgcheck:是否校验 GPG 签名,本地仓库通常关闭(0)。
  4. 刷新 YUM 缓存并验证

    yum clean all
    yum makecache
    yum repolist # 若输出包含 local 仓库,则表示配置成功。
    
    • 若输出中包含 local 仓库且数量正确,即配置成功。
  5. 安装软件(与联网环境一致)

    sudo yum install -y sysstat
    # 或其他已下载的软件
    
    • YUM 会自动读取本地仓库元数据,解析依赖并安装,无需手动指定 RPM 文件。

维护与更新

  • 需要新增软件时,在外网机
    1. 使用 repotrack -p /kefeng-repo 新包名 下载。
    2. 执行 createrepo --update /kefeng-repo 更新元数据。
    3. 重新打包并传输到内网机覆盖。
  • 内网机只需重新解压覆盖、刷新缓存(yum makecache)即可安装新软件。

总结

  • repotrack:负责下载 RPM 包及完整依赖。
  • createrepo:负责生成仓库元数据(repodata)。
  • local.repo:负责告诉 YUM 仓库的位置。
  • yum:读取仓库元数据,自动解析依赖并安装软件。
posted @ 2026-07-17 16:22  克峰同学  阅读(8)  评论(0)    收藏  举报