yum(Yellowdog Updater, Modified) 是 RHEL、CentOS、Fedora 等基于RPM的 Linux 发行版中最经典的软件包管理器。它基于 RPM 包 , 但能自动解决依赖关系、从远程仓库下载安装 , 极大简化了软件管理。

注: RHEL 8 / CentOS 8 之后默认改用 dnf(下一代包管理器) , 但 yum 命令在多数系统上仍作为 dnf 的软链接或兼容别名存在 , 用法基本一致。

YUM 不直接操作 RPM , 先下载仓库元数据到本地缓存 , 解析依赖关系 , 算出需要安装 / 删除哪些 RPM 包 , 再批量下载 RPM 包 , 最后调用 rpm 底层执行安装。

核心概念

  • yum仓库(repo) : 仓库是存放 .rpm 包及其元数据的服务器(HTTP/FTP/本地目录)。yum 通过一个或多个仓库获取软件包。

    存放两类东西:

    • *.rpm : 软件包本身

    • repodata : 仓库元数据(xml/sqlite 数据库) , 记录每个包名、版本、架构、依赖关系、提供的文件、冲突信息。

    repodata 是 YUM 的灵魂 , 没有元数据 yum 无法自动解决依赖。

  • 客户端配置

    /etc/yum.repos.d/*.repo : 定义仓库地址、是否启用、GPG 校验。

    /etc/yum.conf : 全局配置(缓存、日志、keepcache 等)

  • 本地缓存

    路径 : /var/cache/yum/$basearch/$releasever/

    缓存内容 : 仓库元数据 +(可选)已经下载好的 rpm 包(keepcache=1才保留)

  • RPM底层程序

    yum 最终调用系统 rpm 命令完成包写入数据库、文件部署。yum 本身不实现文件安装逻辑。

1. 仓库配置

  1. /etc/yum.conf : yum 全局主配置文件 , [main] 段 , 所有仓库共用的默认参数。

  2. /etc/yum.repos.d/ :仓库配置目录 , 所有以 .repo 结尾的文件会被 yum 加载。

    • 可以有多个 .repo 文件 ; 单个 .repo 文件内可以写多个仓库 [repoid]

    • 备份时后缀改为 .bak , yum 自动忽略 , 不会加载。

  3. /var/cache/yum/ : yum 缓存目录 , 存放仓库元数据(repodata)和下载的 rpm 包。

  4. /var/log/yum.log : yum 操作日志

1.1 全局配置文件

全局配置文件:/etc/yum.conf

[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5

参数解释 :

参数

说明

cachedir

yum 缓存存放路径

keepcache

0 : 装完成删除 rpm 包 ; 1 : 保留 rpm 包

logfile

yum 日志路径

exactarch=1

只安装和本机架构匹配的包(x86_64)

obsoletes=1

更新时自动替换废弃包

gpgcheck=1

默认开启 GPG 签名校验 , 可被repo 文件内 gpgcheck 覆盖

plugins=1

启用 yum 插件

installonly_limit=5

最多保留 5 个内核版本 , 旧内核不会无限堆积

1.2 .repo 仓库配置文件详解

单个仓库段配置模板:

[base]
name=CentOS-$releasever - Base
baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

逐行参数分析 :

  • [repoid] : 仓库 ID , 本机必须唯一 , 不能有空格、中文。yum 内部识别标识 , yum repolist 可以看到。

  • name 仓库描述名称 , 仅展示作用 , 随便写 , 无功能影响。支持 yum 内置变量。

  • baseurl 仓库核心地址 , rpm 包所在位置 , 和 mirrorlist 二选一 , 不能同时启用。 支持三种协议 :

    • http:// / https:// : 互联网远程源(阿里云、清华源)

    • file:// : 本地目录(离线自建源 , 格式 file:///data/rpms , 三个斜杠)

    • ftp:// : ftp 服务器源(极少使用)

    需要注意baseurl指向yum仓库的根目录, 这个根目录必须要直接包含repodata/repomd.xml

  • mirrorlist 镜像列表地址 , 访问该地址返回一堆 baseurl , yum 自动挑选可用镜像。CentOS 官方源默认使用 ; 国内镜像源一般注释掉 , 改用 baseurl 固定地址。

  • enabled 是否启用当前仓库段 : 1启用 , 0禁用。默认 1。

    enabled=0 仓库不会自动加载 , 但可以在命令行用 --enablerepo 临时启用。

  • gpgcheck : 是否校验 RPM 包 ~数字签名 , 防止包被篡改:

    • 1 : 开启校验 , 必须配置 gpgkey

    • 0 : 关闭校验(内网离线源常用 , 不推荐公网源)

  • gpgkey : GPG 公钥地址 , 可以是 http/https , 也可以本地文件 file:///etc/pki/rpm-gpg/xxx。gpgcheck=1 时必填。

扩展高级参数(生产常用)

exclude=kernel* mysql*
includepkgs=nginx*
cost=50
  • exclude : 黑名单。该仓库不提供匹配的包 , 常用于禁止内核自动升级。多个包用空格分隔。

  • includepkgs : 白名单。仅允许匹配包从该仓库获取 , 其他包不走此源。

  • cost : 仓库优先级 , 原生自带 , 无需插件。默认值 100 ;数字越小优先级越高。

    当多个仓库存在同名同版本包 , yum 优先选择cost 小的仓库。

    priority=1 是 yum-plugin-priorities 插件的优先级 , 1 最高 , 需要额外安装插件 , 不建议和 cost 混用。

其他参数 :

  • failovermethod={roundrobin|priority} : 故障转移方式: roundrobin , 意为随机挑选 , 默认值 ; priority , 按顺序访问。

  • priority= : 仓库优先级(需要安装 yum-plugin-priorities)数字越小优先级越高 , 1 最高 , 99 最低。

  • sslverify= : https 源是否校验证书 , 1 校验 , 0 不校验(自建https 源证书不信任时用)

内置变量(yum自动替换)

  • $releasever : 系统版本号 , CentOS7 就是 7

  • $basearch : 系统架构 , x86_64 / aarch64

  • $arch : 完整架构, i386,i486 ,i586,x86_64等

  • YUM0−YUM0-YUM9 : 自定义环境变量

1.3 命令行管理仓库

yum-config-manager 是 YUM(Yellowdog Updater Modified)包管理器的辅助工具 , 主要用于管理 YUM 仓库(repository)配置和 yum 配置选项。它来自 yum-utils 软件包(注意 : dnf 环境下对应的是 dnf config-manager , 来自 dnf-plugins-core)

  • 语法 : yum-config-manager [options] [section ...]

  • 选项 :

    • --save : 保存本次修改到repo文件 ; 配合--setopt使用 ,写入磁盘永久生效

    • --enable REPOID : 启用指定仓库 , 自动保存(等价修改enabled=1)

    • --disable REPOID : 禁用指定仓库 , 自动保存(等价修改enabled=0)

    • --add-repo=URL/PATH : 添加并自动启用仓库 , 支持远程repo url或本地repo文件。(自动在 /etc/yum.repos.d/ 下生成 .repo 文件)

示例

# 启用epel仓库
yum-config-manager --enable epel
​
# 禁用epel仓库
yum-config-manager --disable epel
​
# 添加阿里CentOS7源
yum-config-manager --add-repo https://mirrors.aliyun.com/repo/Centos-7.repo
​
# 修改epel的baseurl并保存
yum-config-manager --save --setopt=epel.baseurl=https://mirrors.aliyun.com/epel/7/$basearch
​
# 查看epel仓库全部配置
yum-config-manager epel
​

yum-config-manager --help 命令可以看到两部分 : Yum Base Options; yum-config-manager options

Yum Base Options:        # yum主程序通用参数(yum-config-manager只是继承显示)
   ....
   --downloadonly
   --downloaddir
   ...
yum-config-manager options: # 这个才是 yum-config-manager 原生支持的参数
   --save
   --enable
   --disable
   --add-repo

yum-config-manager 是 yum-utils 里基于 yum 库开发的工具 , 它会加载 yum 所有基础参数和插件 , 所以help输出会把全部 Yum Base Options 一并打印出来。

这些Yum Base Options通用参数 : --enablerepo/--disablerepo/--downloadonly/--downloaddir , 是给 yum install/yum update 这类包安装子命令用的 , 不是给yum-config-manager命令使用。

有用的 Yum Base Options 搭配 yum-config-manager 的示例

# 安静模式查看epel仓库配置
yum-config-manager -q epel
​
# 指定自定义yum配置文件查看仓库
yum-config-manager -c /etc/yum/myyum.conf epel
​
# 临时禁用base仓库 , 查看epel仓库配置(本次命令生效)
yum-config-manager --disablerepo=base epel
​
# 禁用所有插件 , 查看仓库配置
yum-config-manager --noplugins epel
​

以下示例为 Yum Base Options中不能生效的参数

# 不会下载任何rpm!只会打印epel仓库配置
yum-config-manager --downloadonly --downloaddir=/tmp epel

在Yum Base Options的通用参数中, --setopts参数配合--save算比较常用的。 --setopts参数使用: --setopt=REPOID.配置项=值

# 修改epel仓库gpgcheck=0
yum-config-manager --save --setopt=epel.gpgcheck=0
​
# 修改epel仓库name描述
yum-config-manager --save --setopt=epel.name=EPEL7-Mirror
​
# 修改全局main段配置 /etc/yum.conf
yum-config-manager --save --setopt=main.keepcache=1
​

2 . yum 命令

  • 基础语法 : yum [options] [command] [package ...]

    • options : 全局选项(-y、-q、--enablerepo、--disablerepo、--downloadonly)

    • command : yum 子命令(install/remove/update/repolist等)

    • package : 包名 , 支持版本 nginx-1.20.1、通配符 nginx*

2.1 全局选项

全局选项(Options) : 作用于整条 yum 命令 , 临时生效 , 不会修改 /etc/yum.conf 和 .repo 文件 ; 放在 yum 之后、子命令(install/repolist 等)之前。

部分选项由插件提供(如--downloadonly需要yum-plugin-downloadonly)

基础交互于输出控制

参数

说明

示例

-h, --help

显示 yum 帮助信息

yum -h

-v , --verbose

详细输出 , 打印更多调试信息

yum -v info nginx

-q, --quiet

安静模式 , 减少输出 , 只保留关键报错

yum -q list installed

-y, --assumeyes

所有交互询问自动回答 yes , 脚本自动化最常用

yum -y install nginx

--assumeno

所有交互询问自动回答 no

yum --assumeno install nginx

-d [num], --debuglevel=[num]

调试级别 0~10 , 数字越大日志越详细

yum -d 3 info nginx

-e [num], --errorlevel=[num]

错误输出级别

yum -e 0 install nginx

--color=COLOR

控制颜色输出 : auto/on/off

yum --color=off repolist

配置文件与环境控制

参数

说明

示例

-c [file], --config=[file]

指定 yum 主配置文件 , 不使用默认/etc/yum.conf

yum -c /etc/myyum.conf repolist

--installroot=[path]

设置安装根目录 , chroot 场景 , 所有操作基于该目录

yum --installroot=/tmp/sysroot install nginx

-R [minutes], --randomwait=[minutes]

命令最大等待时间 , yum 执行前随机延时(分钟)

yum -R 2 update

--releasever=RELEASEVER

临时替换$releasever变量 , 改变仓库版本变量

yum --releasever=7 repolist

仓库临时开关

参数

说明

示例

--enablerepo=REPOID

临时启用指定仓库 , 支持通配符

yum install nginx --enablerepo=epel

--disablerepo=REPOID

临时禁用指定仓库 , 支持通配符

yum install nginx --disablerepo=base

临时生效 , 仅当前这条 yum 命令 , 不修改 repo 文件 ; 永久启用 / 禁用仓库用yum-config-manager --enable / --disable

包过滤、排除规则

参数

说明

示例

-x [pkg], --exclude=[pkg]

本次 yum 操作排除指定包 , 支持通配符

yum update -x kernel*

--disableexcludes=[repo]

取消仓库中 exclude 排除规则 , all代表全部

yum update --disableexcludes=base

--disableincludes=[repo]

取消仓库 includepkgs 包含规则

yum install --disableincludes=epel nginx

GPG 签名、插件控制

参数

说明

示例

--nogpgcheck

本次命令临时关闭 GPG 包签名校验 , 生产不推荐

yum install xxx.rpm --nogpgcheck

--noplugins

禁用所有 yum 插件执行本次命令

yum --noplugins install nginx

--disableplugin=plugin_name

只禁用指定插件

yum --disableplugin=fastestmirror repolist

--enableplugin=plugin_name

启用指定插件

yum --enableplugin=downloadonly reinstall nginx

依赖与事务控制

参数

说明

示例

--skip-broken

跳过依赖损坏的包 , 继续执行 ; 生产慎用 , 容易造成依赖不一致

yum update --skip-broken

--obsoletes

update 时开启废弃包替换逻辑(旧包被新版本包废弃替换)

yum update --obsoletes

缓存相关

参数

说明

示例

-C, --cacheonly

完全使用本地缓存元数据 , 不联网拉取仓库元数据 ,离线查询

yum -C info nginx

下载插件参数(yum-plugin-downloadonly)

参数

说明

示例

--downloadonly

只下载 RPM 包和依赖 , 不执行安装事务

yum reinstall --downloadonly nginx

--downloaddir=DLDIR

指定 RPM 包保存目 , 目录必须提前创建

yum reinstall --downloadonly --downloaddir=/data/rpms nginx

插件参数 , 仅搭配 install /reinstall/update 子命令生效! 单独 repolist/info 无效 ; yum-config-manager 使用该参数无下载效果

安全更新筛选参数(update 专用)

参数

说明

--bugfix

更新只选择 bug 修复类补丁包

--security

只安装安全漏洞相关更新包

--advisory=ADVS / --advisories=ADVS

根据红帽公告编号筛选更新

--bzs=BZS

根据 Bugzilla 编号筛选

--cves=CVES

根据 CVE 漏洞编号筛选更新包

--sec-severity=SEVS

根据安全等级筛选更新

2.2. yum子命令

子命令是 yum 的核心动作 , 分为五大类 : 仓库查询、包查询、包安装 / 更新 / 卸载、缓存管理、事务与辅助工具

说明 : 部分子命令在 CentOS8+ dnf 中保留 , 少数改名 ; yum-utils 是独立工具包 , 不属于 yum 原生子命令。

2.2.1 仓库相关子命令

  • repolist : yum repolist [enabled|disabled|all]

    • yum repolist : 默认 , 列出已启用仓库 , 显示仓库 ID、名称、可用包数量

    • yum repolist enabled : 同上 , 显式指定启用仓库

    • yum repolist disabled : 列出被禁用的仓库

    • yum repolist all : 列出全部仓库(启用 + 禁用)

2.2.2 软件包查询

  • list : yum list [installed|available|updates|extras|obsolete|all]

    • yum list : 列出所有包(已安装 + 仓库可用)

    • yum list installed : 列出本机已经安装的所有 rpm 包

    • yum list available : 列出仓库内可安装的包

    • yum list updates : 列出本机可以升级的包

    • yum list extras : 列出本机已安装 , 但不在任何 yum 仓库中的包(本地手动 rpm 安装)

    • yum list obsolete : 列出会被新版本软件废弃替换的包

    • 支持过滤 : yum list installed | grep nginx

  • info : 查看软件包详细信息 , 版本、发布者、仓库、大小、描述、依赖。类似rpm -qi , 但是可以查看仓库里未安装的包。

    yum info nginx
  • search : 按包名、包描述搜索仓库软件包 , 适合模糊查找软件。

    yum search nginx
    yum search "web server"
  • provides(等价 whatprovides) : 查询某个文件 / 命令属于哪个 rpm 包。服务器缺少某个命令 , 不知道装哪个包 , 用这个查。

    yum provides /usr/bin/nginx
    yum whatprovides /usr/bin/nginx
  • deplist : 查看一个软件包所有依赖 , 以及每个依赖来自哪个仓库。

    yum deplist nginx
  • grouplist/groupinfo :

    yum grouplist
    yum groupinfo "Development Tools"
    • grouplist : 列出所有软件包组(例如开发工具、GNOME 桌面)

    • groupinfo : 查看某个包组内包含哪些软件

2.2.3 安装、更新、卸载

  • install : 安装软件包 , 自动解析并安装依赖。

    yum install nginx
    yum install nginx-1.20.1
    yum install /tmp/nginx.rpm

    如果包已经安装 , 不会执行任何动作 ; 搭配--downloadonly时 ,不会下载依赖包。需要使用reinstall

  • reinstall : 重新安装已存在的软件包 , 覆盖现有文件 , 强制重新解析全部依赖。

    yum reinstall nginx
  • update : 升级软件包到仓库最新版本 , 不带包名代表全系统更新

    yum update
    yum update nginx
    yum update --exclude=kernel*

    --exclude 全局选项 , 升级时排除指定包(常见排除kernel)

  • downgrade : 软件包版本降级 , 将已安装包降低到仓库里的旧版本 ,自动处理依赖。

    # 自动降级到仓库中可用的低版本(自动匹配版本 , 处理依赖)
    yum downgrade nginx
    
    # 指定降级到某个具体版本(推荐 , 可控)
    yum downgrade nginx-1.18.0-1.el7

    `

  • check-update : 只检查 , 不升级 , 列出所有可更新的包。脚本巡检常用 ; 有可更新包返回非 0 退出码。

    yum check-update
  • remove(别名erase) : 卸载软件包 , 同时卸载当初因这个包安装的依赖。

    yum remove nginx
    yum erase nginx

    被其他软件依赖的包不会被删除 , 防止破坏系统。

  • localinstall : 安装本地磁盘上的 rpm 文件 , 自动从 yum 仓库下载解决依赖。

    yum localinstall /tmp/nginx.rpm

    CentOS8 dnf 中 localinstall 合并进 install , 直接dnf install xxx.rpm。

  • groupinstall/groupremove/groupupdate

    yum groupinstall "Development Tools"
    yum groupremove "Development Tools"
    yum groupupdate "Development Tools"
    • groupinstall : 安装一组软件包(例如开发工具组 gcc、make 等一次性安装)

    • groupremove : 卸载软件包组

    • groupupdate : 升级包组内所有软件

2.2.4 缓存管理子命令

  • clean

    yum clean [all|metadata|packages|expire-cache]
    • yum clean all : 清理元数据缓存 + 已经下载的 rpm 包 , 换源 / 修改仓库后最常用

    • yum clean metadata : 只清理仓库元数据(仓库包信息) , 保留已经下载好的 rpm

    • yum clean packages : 只清理缓存目录里下载完成的 rpm 包 , 保留元数据

    • yum clean expire-cache : 标记元数据过期 ,下次 yum 操作自动重新拉取

  • makecache : 联网下载所有启用仓库的元数据 , 生成本地缓存。

    yum makecache
    yum makecache fast

    修改 repo、新增仓库、换镜像源后 , 必须执行 yum clean all && yum makecache。

    makecache fast : CentOS7 简写 , 快速构建缓存。

2.2.5 事务历史与排错类子命令

  • history

    yum history
    yum history info 10
    yum history undo 10
    yum history redo 10

    yum 会记录每一次安装 / 卸载 / 更新事务 , 带事务 ID。

    • yum history : 列出所有 yum 操作记录 , ID、操作、时间

    • yum history info ID : 查看这条事务详细安装 / 卸载了哪些包

    • yum history undo ID : 回滚这条 yum 事务 , 撤销操作(安装→卸载 , 卸载→安装)

    • yum history redo ID : 重新执行这条事务

    使用yum history 之后显示所有的安装 , 卸载过程 , 按照图片中序号进行的 , undo/redo 命令涉及到的序号则是history中ID值

2.2.6 辅助子命令

  • shell : 进入 yum 交互式 shell , 可以批量执行多个 yum 操作(一次性多个 install/remove , 作为同一个事务)。

    yum shell

    示例

    # yum shell
    > install nginx
    > install redis
    > run
    ​

3. yum仓库自建

yum仓库自建的思路在于将互联网中的rpm包直接下载至本地, 然后通过createrepo命令生成对应的元数据信息。之后通过httpd或者nginx将本地库共享出去即可。

工作流程 :

  1. reposync 读取本地.repo文件中对应仓库的 baseurl , 拉取远程 repomd.xml 元数据 ;

  2. 解析元数据 , 获取仓库内所有 rpm 包的下载地址 ;

  3. 根据参数过滤包(--newest-only、--arch等) ;

  4. 下载 rpm 包到本地目录 ;

  5. 默认不会生成 repodata(除非加--download-metadata);

  6. 下载结束 , 手动 createrepo 生成本地元数据。

3.1. rsyncrepo

reposync : yum/dnf 仓库同步工具 , 作用是把远程 YUM 仓库的 RPM 包下载到本地 , 本身不生成 repodata 元数据 , 下载完包后需要配合 createrepo 生成元数据才能作为本地仓库使用。 版本区分:

  • CentOS7 : 属于 yum-utils 包 , 命令 : reposync

  • CentOS8/9/Rocky : 属于 dnf-plugins-core , 命令 : dnf reposync(新版是 dnf 子命令)

安装

# CentOS7
yum install -y yum-utils createrepo
​
# CentOS8+/Rocky/AlmaLinux
dnf install -y dnf-plugins-core createrepo
​
  • 语法

    # CentOS7
    reposync [选项]
    ​
    # CentOS8+
    dnf reposync [选项]
  • 选项

    参数

    说明

    -r, --repoid

    指定仓库 ID , 可以多次 -r repo1 -r repo2 一次性同步多个仓库

    -p, --download_path

    下载包的父目录 , 自动生成仓库 ID 子目录

    --newest-only

    只下载最新版本的 rpm 包 , 同一个包只保留最高版本 , 丢弃旧版本 , 节省磁盘空间(生产强烈推荐)

    --delete

    本地目录中 , 删除远程仓库已经不存在的 rpm 包。保持本地镜像和远程仓库完全一致 ; 慎用 , 会删除本地多余包

    --downloadcomps

    下载远程仓库的 comps.xml 软件组文件 , 后续 createrepo 带上这个文件 , 支持yum groupinstall

    --download-metadata

    直接下载远程仓库现成的 repodata 元数据 , 不需要本地 createrepo 生成元数据

    --norepopath

    不在 -p 指定目录下创建仓库 ID 子目录 , 直接把 rpm 下载到 -p 目录下

    -u, --urls

    只打印所有 rpm 下载链接 , 不实际下载包 , 调试仓库用

    --arch=x86_64

    只同步指定架构包 , 多架构服务器过滤包

生产推荐完整同步命令:

reposync -r base -p /data/mirror --newest-only --delete --downloadcomps

同步完成后生成元数据:

createrepo -g /data/mirror/base/comps.xml /data/mirror/base

--download-metadata 重点说明 : 直接拉取远程仓库现成的 repodata , 不需要本地执行 createrepo

reposync -r base -p /data/mirror --download-metadata
  • --download-metadata优点:

    1. 省去 createrepo 构建元数据步骤 ;

    2. comps.xml、元数据校验信息和远程仓库完全一致。

  • --download-metadata缺点 :

    1. 远程 repodata 是针对远程仓库文件列表生成 ; 如果本地包不全 , 直接使用会出现元数据和本地包不匹配 ;

    2. 远程仓库 GPG 签名、元数据哈希校验严格 , 内网使用时容易报校验失败 ;

    1. 一旦本地手动增删 rpm 包 , 下载来的 repodata 就失效 , 必须重新 createrepo。

    👉 使用场景 : 完整镜像、包不做任何修改 ; 如果后续本地要增删 rpm 包 , 不要使用该参数。

3.2 createrepo

createrepo 用于生成 YUM 仓库的元数据(metadata) , 让目录中的 RPM 包能被 yum 识别和使用。简单说 : 把一堆 RPM 文件变成一个可用的 YUM 仓库。

RPM 文件本身只是一堆二进制包 , yum 无法直接识别目录中有哪些包、版本多少、依赖关系如何。createrepo 会扫描目录中的所有 RPM , 生成元数据索引文件 , 之后就可以通过 baseurl=file:///目录 或 HTTP 方式作为仓库使用。

安装

# CentOS7
yum install -y createrepo
​
# CentOS8+/Rocky/AlmaLinux
dnf install -y createrepo_c
  • 语法 : createrepo [OPTIONS] <仓库根目录>

    后面跟的是仓库根目录 , 不是Packages 目录! 工具会扫描这个目录下所有 .rpm 文件(包括子目录Packages 里的rpm) , 然后在当前仓库根目录下生成 repodata/

  • 常用参数

    选项

    说明

    -v, --verbose

    显示详细输出

    -g, --groupfile comps.xml

    指定 group 组文件(配合 yum groupinstall 使用)。同步远程仓库时搭配 --downloadcomps 使用。

    --basedir

    指定元数据生成的基础目录

    --update

    增量更新(最常用)。只扫描新增 / 修改的 rpm 包 , 复用原有元数据 , 速度极快。新增 rpm 包后推荐用这个 , 不要全量重建。

    --delta

    生成 delta RPM 元数据

    -C, --cachedir

    指定缓存目录

    --unique-md-filenames

    文件名加入校验值(默认启用 , 防止CDN 缓存问题)

    -s sha256, --checksum=sha256

    指定校验算法(默认 sha256,旧系统用 sha1)

    -x, --exclude

    排除匹配的文件

    -q, --quiet

    静默模式

    --skip-symlinks

    跳过软链接 rpm 包 , 不扫描软链接 , 防止重复包。

    --retain-old-md

    保留旧版本元数据(默认保留 1 份)

    --workers N

    多线程并发扫描 rpm 包 , 大仓库提速。例:--workers 4

    --verbose

    详细输出 , 调试看扫描了哪些包。

示例

新建仓库, 带软件组支持

createrepo -g /data/mirror/base/comps.xml /data/mirror/base

新增 rpm 包后增量更新(生产最常用)

createrepo --update /data/mirror/base

大仓库 , 4 线程扫描 , 指定sha256 校验

createrepo --workers 4 --checksum sha256 /data/mirror/base


熊熊