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

news2025/5/9 22:06:38

问题描述:

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.coloradmin.cn/o/2371820.html

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

相关文章

奥威BI:AI+BI深度融合,重塑智能AI数据分析新标杆

在数字化浪潮席卷全球的今天&#xff0c;企业正面临着前所未有的数据挑战与机遇。如何高效、精准地挖掘数据价值&#xff0c;已成为推动业务增长、提升竞争力的核心议题。奥威BI&#xff0c;作为智能AI数据分析领域的领军者&#xff0c;凭借其创新的AIBI融合模式&#xff0c;正…

第三节第一部分:Static修饰类变量、成员变量

总结 案例 要求 代码&#xff1a; User类&#xff1a; package com.day1_static;public class User {public static int num;public User() {User.num;} }Test类&#xff1a; package com.day1_static;public class Test {public static void main(String[] args) {User us…

高级架构软考之网络OSI网络模型

高级架构软考之网络&#xff1a; 1.OSI网络模型&#xff1a; a.物理层&#xff1a; a.物理传输介质物理连接&#xff0c;负责数据传输&#xff0c;并监控数据 b.传输单位&#xff1a;bit c.协议&#xff1a; d:对应设备&#xff1a;中继器、集线器 b.数据链路层&#xff1a; a.…

Kubernetes(k8s)学习笔记(六)--KubeSphere前置环境安装

1、安装 helm&#xff08;master 节点执行&#xff09; Helm 是 Kubernetes 的包管理器。包管理器类似于我们在 Ubuntu 中使用的apt、Centos 中使用的 yum 或者 Python 中的 pip 一样&#xff0c;能快速查找、下载和安装软件包。Helm由客户端组件 helm 和服务端组件 Tiller 组…

架构思维:构建高并发读服务_异构数据的同步一致性方案

文章目录 一、引言二、全景架构回顾三、潜在问题问题1&#xff1a;Binlog 延迟——理想 vs 实际问题2&#xff1a;Binlog 格式解析问题3&#xff1a;高可靠消费1. 串行 ACK 消费2. 并行消费&#xff0b;乱序风险3. 解决方案 问题4&#xff1a;缓存数据结构设计1. Key–Value 冗…

剑指大规模 AI 可观测,阿里云 Prometheus 2.0 应运而生

作者&#xff1a;曾庆国&#xff08;悦达&#xff09; Prometheus 大家应该非常熟悉&#xff0c;正文开始前&#xff0c;让我们一起来回顾开源 Prometheus 项目的发展史。Prometheus 最初由 SoundCloud 的工程师 Bjrn Rabehl 和 Julius Volz 于 2012 年开发。当时&#xff0c;…

游戏引擎学习第260天:在性能分析器中实现钻取功能

昨天那个帧内存满之后触发段错误实在没找到什么原因导致的 继续研究一下为什么导致的 内存不够进来释放frame 释放frame 应该会给DebugState->FirstFreeStoredEvent 赋值吧 这段宏定义&#xff1a; #define FREELIST_DEALLOCATE(Pointer, FreeListPointer) \if(Pointer) {…

【自然语言处理与大模型】使用Xtuner进行QLoRA微调实操

本文首先对Xtuner这一微调框架进行简单的介绍。手把手演示如何使用Xtuner对模型进行微调训练&#xff0c;包括数据准备、训练命令执行及训练过程中的监控技巧。最后&#xff0c;在完成微调之后&#xff0c;本文还将介绍如何对微调结果进行简单对话测试。 一、Xtuner微调框架 X…

扣子创建一个应用

什么是扣子应用 扣子应用可以让你相对轻松的搭建一个具备AI功能的应用&#xff0c;它区别智能体&#xff0c;在于智能体的ui和交互相对固定&#xff0c;主要是以对话框聊天的方式进行交互&#xff0c;而扣子应用则可以让ui交互表现更加丰富。 实践一个生成图片的应用 这里我…

SpringBoot教程(vuepress版)

Spring Boot 教程 项目介绍 这是一个系统化的 Spring Boot 学习教程&#xff0c;采用循序渐进的方式&#xff0c;帮助开发者从零开始掌握 Spring Boot 开发。 教程特点 系统化的知识结构实用的代码示例完整的实战案例丰富的练习作业 目录结构 基础入门 Spring Boot 简介…

FiLo++的框架图介绍

FiLo框架图模块详解 1. 文本生成模块 Normal Texts 功能&#xff1a;生成正常样本的文本描述。输入&#xff1a;固定模板&#xff08;如 A [domain] photo of [state][cls]&#xff09;和可学习模板&#xff08;如 [v1][v2]...[vm][state][cls]&#xff09;。输出&#xff1a;融…

C++--入门基础

C入门基础 1. C的第一个程序 C继承C语言许多大多数的语法&#xff0c;所以以C语言实现的hello world也可以运行&#xff0c;C中需要把文件定义为.cpp&#xff0c;vs编译器看是.cpp就会调用C编译器编译&#xff0c;linux下要用g编译&#xff0c;不再是gcc。 // test.cpp #inc…

准确---Typora配置Gitee图床并实现自动图片上传

下载地址&#xff1a;https://github.com/Molunerfinn/picgo/releases 安装就直接下一步&#xff0c;下一步就行 安装完以后然后回到Typora上偏好设置指定一下路径 默认是 C:\Program Files\PicGo\PicGo.exe 并且还需要选择规则 接下来就需要去PicGo上面配置了 配置之前需要去…

Day111 | 灵神 | 二叉树 | 验证二叉搜索树

Day111 | 灵神 | 二叉树 | 验证二叉搜索树 98.验证二叉搜索树 98. 验证二叉搜索树 - 力扣&#xff08;LeetCode&#xff09; 方法一&#xff1a;前序遍历 递归函数传入合法的左右边界&#xff0c;只有当前结点是合法的边界&#xff0c;才是二叉搜索树&#xff0c;否则就返回…

Redis 8.0 正式版发布,新特性很强!

就在前两天&#xff0c;Redis 8.0 正式版 (GA) 来了&#xff01;这并不是一次简单的更新&#xff0c;Redis 8.0 不仅带来了性能上的进一步提升&#xff0c;还带来一些实用的新特性与功能增强。并且&#xff0c;最重要的是拥抱 AGPLv3 重归开源&#xff01; 下面&#xff0c;简单…

以太坊智能合约开发框架:Hardhat v2 核心功能从入门到基础教程

一、设置项目 Hardhat 项目是安装了 hardhat 包并包含 hardhat.config.js 文件的 Node.js 项目。 操作步骤&#xff1a; ①初始化 npm npm init -y②安装 Hardhat npm install --save-dev hardhat③创建 Hardhat 项目 npx hardhat init如果选择 Create an empty hardhat.…

了解Dockerfile

定制docker 镜像的方式&#xff1a; 手动修改容器内容&#xff0c;导出新的镜像基于dockerfile 自行编写指令&#xff0c;基于指令流程创建镜像 镜像和容器的层级实现 docker拉取镜像到docker engine 之后&#xff0c;共享系统内核。 在内核层上有镜像层&#xff08;本质上只…

强化学习--2.数学

强化学习--数学 1、概率统计知识1.1 随机变量与观测值1.2 概率密度函数&#xff08;PDF&#xff09;1.3 期望1.4 随机抽样 2、数据期望E3、正态分布4、条件概率1. **与多个条件相关**&#xff08;依赖所有前置条件&#xff09;2. **仅与上一个条件相关**&#xff08;马尔可夫性…

边缘计算:开启智能新时代的“秘密武器”

大家好&#xff0c;我是沛哥儿&#xff0c;我们又见面了。今天我们来简单说下什么是边缘计算&#xff0c;它怎么工作的&#xff0c;有哪些优势。有哪些具体的应用场景。 文章目录 1、边缘计算是什么&#xff1f;2、边缘计算如何工作&#xff1f;3、边缘计算有哪些优势&#xff…

# 如何使用 PyQt5 创建一个简单的警报器控制界面

如何使用 PyQt5 创建一个简单的警报器控制界面 引言 在现代自动化和监控系统中&#xff0c;警报器扮演着至关重要的角色。它们可以提醒我们注意潜在的危险或紧急情况。在这篇文章中&#xff0c;我将向您展示如何使用Python的PyQt5库创建一个简单的警报器控制界面。这个界面将…