yum list 和 repoquery的区别

yum listrepoquery 查看仓库包信息时,可能会出现两个命令查看的包数量对不上的问题。这通常是由于两者默认的过滤和行为模式不同导致的。

为了让你快速了解,它们的主要区别可见下表:

特性对比 yum list --all repoquery --repoid=patches --all
显示范围 默认只显示当前系统架构(如x86_64)和noarch的包 默认显示指定仓库中所有架构的包
重复版本 默认隐藏旧版本,通常只显示最新可用版本 默认显示所有版本 (除非使用--show-duplicates
输出格式 格式固定 输出格式更灵活,可通过--queryformat自定义
命令来源 yum核心命令 来自yum-utils工具包
依赖解析 会考虑依赖关系 更侧重于直接查询仓库元数据

命令repoquery --repoid=patches --all--repoid=指定yum仓库ID,可通过yum repolist命令查看具体ID。

🧐 应该以哪个为准?

对于你的漏扫打补丁 场景,repoquery --repoid=patches --all 的结果通常更全面、更准确,因为它会列出仓库中所有架构的所有包,不会因系统架构过滤而遗漏。你可以用它生成的完整包列表来编写你的安装脚本。

🔍 如何获取更精确的列表

想要验证并获取最准确的包列表,可以尝试以下命令:

  1. yum list 显示所有架构的包 (效果更接近 repoquery):

    bash 复制代码
    yum --disablerepo="*" --enablerepo="patches" list available --showduplicates
    • --showduplicates:这个选项会告诉 yum list 显示一个软件的所有版本,而不是只显示最新版本。
  2. 使用 repoquery 并精确输出

    bash 复制代码
    repoquery --repoid=patches --all --queryformat="%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}"

    这会输出所有包的完整名称(NAME-VERSION-RELEASE.ARCH),方便你写脚本处理。

  3. 统计包数量进行对比

    分别用以下命令统计数量,看是否一致:

    bash 复制代码
    # 统计yum list看到的包数量(包含所有版本和架构)
    yum --disablerepo="*" --enablerepo="patches" list available --showduplicates | wc -l
    # 注意:yum list的输出包含表头,实际数量需要减一
    
    # 统计repoquery看到的包数量
    repoquery --repoid=patches --all | wc -l

💡 注意事项

  • 确保仓库元数据最新 :在查询前,最好运行 yum clean all && yum makecache 清理并重建缓存,确保获取的是最新信息。
  • 理解 --all 选项 :对于 repoquery--all 表示列出指定仓库中的所有包。
  • 仓库配置 :确认你的 patches 仓库配置正确且处于启用状态(enabled=1)。
相关推荐
疯狂吧小飞牛6 小时前
GPG基础指令
linux·服务器·网络
C++ 老炮儿的技术栈6 小时前
volatile使用场景
linux·服务器·c语言·开发语言·c++
todoitbo7 小时前
用虚拟局域网打通 Win/Mac/Linux 三端:跨设备协作的实用方案
linux·运维·macos
源远流长jerry7 小时前
RDMA 基本操作类型详解:从双端通信到单端直访
linux·网络·tcp/ip·ip
Sylvia-girl8 小时前
Linux下的基本指令1
linux·运维·服务器
wyt5314299 小时前
Redis的安装教程(Windows+Linux)【超详细】
linux·数据库·redis
17(无规则自律)9 小时前
【Linux驱动实战】:字符设备之ioctl与mutex全解析
linux·c语言·驱动开发·嵌入式硬件
天赐学c语言10 小时前
Linux - 应用层自定义协议与序列/反序列化
linux·服务器·网络·c++
jarreyer10 小时前
CentOS 7 无法使用 yum 安装软件
linux·运维·centos
薛定谔的悦11 小时前
告别传统BMS!深度解读阳光电源 BM^2T 电池管理技术白皮书
linux·能源·储能·bms·ems