不同OS版本中的同一yum源yum list差异排查思路

问题描述:

qemu-guest-agent二进制rpm包的yum仓库源和yum源仓库配置文件path_to_yum_conf,
通过yum list --available -c path_to_yum_conf 查询时,不同的OS版本出现了不同的结果
anolis-8无法识别
centos8可以识别
说明:
1 测试时已禁用除自定义yum源path_to_yum_conf之外的其他yum源
2 qemu-guest-agent二进制rpm包的架构和OS的架构是一致的
3 OS端的rpm管理器版本是相同的

问题确认:

相同架构、相同RPM版本、相同仓库配置下,CentOS 8可识别包而Anolis 8.6无法识别


一、关键排查方向
  1. OS发行版标识差异

    • Anolis和CentOS的发行版标识(如$releasever$basearch变量)可能不同,导致仓库路径或包依赖不匹配。
    • 检查OS标识文件:
      cat /etc/os-release          # 查看ID和VERSION_ID
      rpm -E '%{dist}'             # 查看RPM宏中的发行版标识(如.el8、.an8)
      
  2. 仓库元数据兼容性

    • 仓库中repodata的生成工具(如createrepo版本)可能包含针对特定发行版的过滤规则。
    • 检查仓库元数据中的包依赖条件:
      # 查看qemu-guest-agent包的Requires/Conflicts字段
      rpm -qpR /path/to/qemu-guest-agent.rpm
      
  3. YUM变量动态解析差异

    • Anolis可能未正确定义$releasever$basearch变量,导致仓库URL或包选择失败。
    • 查看YUM变量实际值:
      yum -c path_to_yum_conf makecache  # 生成缓存后查看变量解析
      cat /etc/yum/vars/*                # 检查变量定义
      

二、分步验证与修复
1. 验证OS发行版标识
# 在Anolis 8.6和CentOS 8上分别执行
cat /etc/redhat-release
rpm -E '%{dist}'
  • 若Anolis返回类似.an8的标识
    仓库元数据或包依赖可能包含CentOS专属标识(如Requires: centos-release),导致Anolis不满足条件。
2. 检查YUM详细输出
# 在Anolis上启用调试模式
yum -c path_to_yum_conf --verbose --disablerepo='*' --enablerepo=custom_repo list available
  • 观察输出中是否提示包被排除(如Excluding: qemu-guest-agent due to OS mismatch)。
3. 分析仓库元数据
  • 下载仓库的repodata/primary.xml文件,搜索qemu-guest-agent包条目:
    <package type="rpm"><name>qemu-guest-agent</name><arch>x86_64</arch><version epoch="0" ver="2.12.0" rel="1.el8"/><format><rpm:requires><rpm:entry name="systemd" /><!-- 检查是否存在发行版相关依赖(如'centos-release') --></rpm:requires></format>
    </package>
    
  • 若存在发行版限定依赖:需重构RPM包,移除对特定发行版的依赖。
4. 强制覆盖YUM变量
  • path_to_yum_conf中显式定义变量,强制匹配仓库路径:
    [custom_repo]
    name=Custom Repo
    baseurl=http://repo.example.com/$basearch/
    # 强制指定releasever(假设仓库路径使用8)
    enabled=1
    

三、解决方案
  1. 统一仓库元数据生成

    • 使用createrepo_c重新生成元数据,避免包含发行版过滤标签:
      createrepo_c --no-database /path/to/repo
      
  2. 修改RPM包依赖

    • .spec文件中移除发行版相关依赖(如BuildRequires: centos-release),重新构建RPM包。
  3. 调整Anolis的YUM变量

    • 创建符号链接或覆盖变量定义文件:
      # 若Anolis的$releasever应为8
      echo "8" > /etc/yum/vars/releasever
      
  4. 测试兼容性模式

    • 在Anolis上使用--releasever=8强制指定版本:
      yum -c path_to_yum_conf --releasever=8 list available
      

四、根本原因总结
因素CentOS 8Anolis 8.6
发行版标识 (%{dist}).el8.an8
仓库元数据过滤匹配.el8不匹配.an8
YUM变量解析$releasever=8$releasever可能未定义

通过调整仓库元数据生成策略或对齐OS标识变量,可解决此类兼容性问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/80254.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用极狐GitLab 软件包仓库功能托管 helm chart?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 软件包库中的 Helm charts (BASIC ALL) WARNING:Helm chart 库正在开发中&#xff0c;由于功能有限&#xff0c;尚未准备好用…

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】3.1 数据质量评估指标(完整性/一致性/准确性)

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 数据质量评估核心指标&#xff1a;完整性、一致性、准确性实战解析3.1 数据质量评估指标体系3.1.1 完整性&#xff1a;数据是否存在缺失1.1.1 核心定义与业务影响1.1.2 检测…

详解 FFMPEG 交叉编译 `FLAGS` 和 `INCLUDES` 的作用

FLAGS 和 INCLUDES这两行是 Android NDK 编译时的编译器选项&#xff0c;用于控制代码生成、优化、调试、安全性和头文件搜索路径。下面逐项详解&#xff1a; 1. FLAGS 详解&#xff08;编译器选项&#xff09; FLAGS 定义了传递给 C/C 编译器&#xff08;如 clang 或 gcc&…

【RK3588嵌入式图形编程】-Cairo-Cairo图形库支持后端

Cairo图形库支持后端 文章目录 Cairo图形库支持后端1、PNG图像后端2、PDF文件后端3、SVG文件后端4、GTK窗口支持Cairo库支持多种后端。在本文中,我们使用Cairo创建PNG图像、PDF文件、SVG文件,并在GTK窗口上绘制。 1、PNG图像后端 在第一个示例中,我们创建一个 PNG 图像。 …

【常用算法:排序篇】2.快速排序的算法精要

快速排序是算法领域的"九阳神功"&#xff0c;掌握其精髓能让你在算法修炼之路上突破瓶颈。 1. 快速排序的核心思想 快速排序&#xff08;Quicksort&#xff09;是一种基于分治思想的高效排序算法&#xff0c;核心步骤为&#xff1a; 选择基准值&#xff08;Pivot&…

在现代Web应用中集成 PDF.js (pdfjs-dist 5.2 ESM): 通过 jsdelivr 实现动态加载与批注功能的思考

PDF 文档在现代 Web 应用中越来越常见&#xff0c;无论是作为文档预览、报告展示还是在线编辑的载体。Mozilla 的 PDF.js 是一个功能强大的 JavaScript 库&#xff0c;它使得在浏览器端渲染和显示 PDF 文件成为可能&#xff0c;无需依赖原生插件。 本文将深入探讨如何在你的项…

基于FPGA控制ADC0832双通道采样+电压电流采样+LCD屏幕显示

基于FPGA控制ADC0832双通道采样电压电流采样LCD屏幕显示 前言一、芯片手册阅读1.SPI通信时序 二、仿真分析三、代码分析总结视频演示 前言 定制 要求使用ADC0832芯片进行ADC采样。其中电压采样以及电流采样是固定电路&#xff0c;是硬件设计&#xff0c;跟软件没没关系。本质上…

生产部署方案pm2配合python3脚本

前言 使用python3来处理redis 消息队列&#xff0c;记录下生产部署方案 「生产部署方案」&#xff1a; 多进程&#xff08;动态扩容&#xff09;无限自愈日志自动压缩系统级守护可多队列多worker 终极稳健版&#xff1a;PM2 Logrotate 自动扩容 守护链 适合&#xff1a…

Python全流程开发实战:基于IMAP协议安全下载个人Gmail邮箱内所有PDF附件

文章目录 一、需求分析与安全前置&#xff1a;为什么需要专用工具&#xff1f;1.1 痛点场景1.2 技术方案选择 二、准备工作&#xff1a;Gmail账号安全配置与环境搭建2.1 开启两步验证&#xff08;必做&#xff01;&#xff09;2.2 创建应用专用密码&#xff08;替代普通密码&am…

巧用python之--模仿PLC(PLC模拟器)

工作中用到了VM(VisionMaster4.3)有时候需要和PLC打交道,但是PLC毕竟是别人的,不方便修改别人的程序,这时候需要一个灵活的PLC模拟器是多么好呀! 先说背景: PLC型号 汇川Easy521: Modbus TCP 192.168.1.10:502 在汇川Easy521中Modbus保持寄存器D寄存器 ,在modbus协议中 0-4区…

docker构建镜像并上传dockerhub

docker构建镜像并上传dockerhub 前提条件&#xff1a;需要连接梯子 将梯子配置到虚拟机中&#xff08;确保主机能够连接 hub.docker.com&#xff09; 使用ipconfig 查询主机的 ip4地址虚拟机的连接模式改成桥接模式&#xff08;复制主机的地址网络&#xff09;将ip4配置到虚拟…

python实现的音乐播放器

python实现的音乐播放器 音乐播放器,原来写过一个简陋的例子,可见 https://blog.csdn.net/cnds123/article/details/137874107 那个不能拖动播放进度条上的滑块到新的位置播放。下面介绍的可以拖动播放进度条上的滑块到新的位置播放。 简单实用的音乐播放器 这个简单实用的…

[网安工具] 端口信息收集工具 —— 御剑高速 TCP 全端口扫描工具 · 使用手册

&#x1f31f;想了解其它网安工具&#xff1f;看看这个&#xff1a;[网安工具] 网络安全工具管理 —— 工具仓库 管理手册 https://github.com/NepoloHebo/Yujian-high-speed-TCP-full-port-scannerhttps://github.com/NepoloHebo/Yujian-high-speed-TCP-full-port-scanner 0…

数字孪生赋能智慧城市:从概念到落地的深度实践

在城市规模与复杂度持续攀升的当下&#xff0c;传统管理模式已难以满足现代城市精细化治理需求。数字孪生技术凭借构建虚拟城市镜像、实现实时数据交互与智能决策的特性&#xff0c;成为智慧城市建设的核心引擎。本文将通过多个典型案例&#xff0c;深度解析数字孪生技术如何重…

DeFi开发系统软件开发:技术架构与生态重构

DeFi开发系统软件开发&#xff1a;技术架构与生态重构 ——2025年去中心化金融开发的范式革新与实践指南 一、技术架构演进&#xff1a;从单一链到多链混合引擎 现代DeFi系统开发已从单一公链架构转向“跨链互操作混合模式”&#xff0c;结合中心化效率与去中心化安全双重优势…

相同IP和端口的服务器ssh连接时出现异常

起因 把服务器上的一个虚拟机搞坏了&#xff0c;所以删除重新创建了一个&#xff0c;端口号和IP与之前的虚拟机相同。 ssh usernameIP -p port 时报错 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone…

验证es启动成功

1. 查看命令行输出信息 在启动 Elasticsearch 时&#xff0c;命令行窗口会输出一系列日志信息。若启动成功&#xff0c;日志里通常会有类似下面的信息&#xff1a; plaintext [2025-05-06T13:20:00,000][INFO ][o.e.n.Node ] [node_name] started其中 [node_na…

CentOS网络之network和NetworkManager深度解析

文章目录 CentOS网络之network和NetworkManager深度解析1. CentOS网络服务发展历史1.1 传统network阶段&#xff08;CentOS 5-6&#xff09;1.2 过渡期&#xff08;CentOS 7&#xff09;1.3 新时代&#xff08;CentOS 8&#xff09; 2. network和NetworkManager的核心区别3. ne…

Unity:父挂 Rigidbody2D、子挂 Collider2D 时触发器不生效的问题分析

目录 ❓问题现象 &#x1f50d; 排查与定位 ⚠️ Unity 触发机制的核心要求 ✅ 为什么把 Collider2D 移到父物体后就能触发&#xff1f; &#x1f4a1; 解决方案 在 Unity 2D 游戏开发中&#xff0c;很多人习惯用父物体挂载 Rigidbody2D&#xff0c;而将不同的身体部位&am…

Google AI版图:解析AI Studio, Gemini, NotebookLM与GCP

1. 2C vs 2B: AI Studio: 主要是面向开发者&#xff0c;提供一个易用的界面来探索和构建基于Google模型的应用。虽然最终的应用可能服务于C端或B端&#xff0c;但AI Studio本身更多是一个开发者的工具平台&#xff0c;可以看作是连接模型能力和各种应用的桥梁。它可以被个人开…