ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

ROCm 文档中的 Oracle Linux 版本选择器:从 show-cond 条件规则到 dnf 仓库注册的完整实现解析

2026/9/17 15:18:00 拓冰建站 浏览量
ROCm 文档中的 Oracle Linux 版本选择器:从 show-cond 条件规则到 dnf 仓库注册的完整实现解析 ROCm 文档中的 Oracle Linux 版本选择器从 show-cond 条件规则到 dnf 仓库注册的完整实现解析【免费下载链接】legacy-rocm-buildAMD ROCm™ Software - GitHub Home项目地址: https://gitcode.com/GitHub_Trending/ro/legacy-rocm-build本指南以 legacy-rocm-build 仓库中 docs/install/include/oracle-linux-ver-selector.rst 为核心讲解 ROCm 官方文档站点中“Oracle Linux 版本选择器”的定义方式与底层工作机制。读完本文你将理解如何通过show-cond条件让不同 AMD GPU 型号展示各自支持的 Oracle Linux 版本、选择器在前端如何依据选择状态显隐内容以及所选版本最终如何映射到dnf仓库注册命令从而完成 ROCm 7.14 在 Oracle Linux 上的完整安装。一、选择器在 ROCm 安装文档中的定位ROCm 文档站点的安装指南采用“渐进式选择”交互模型读者先选择硬件平台Instinct / Radeon / Ryzen再选择 Linux 发行版最后选择发行版的具体版本号页面会随着每次选择动态重排只显示与当前组合匹配的安装步骤。这一交互体系的起点是 docs/install/include/os-selector.rst 中的发行版选择器。其中 Oracle Linux 作为一个可选项在两类场景下出现faminstinct且gpumi355x gpumi350x gpumi325x gpumi300x时提供 Oracle Linux 选项value: oracle-linuxfamall兜底场景下同样提供 Oracle Linux 选项。而当读者选中 Oracle Linux 后oracle-linux-ver-selector.rst就会被激活负责呈现“该选哪一个大版本10 / 9 / 8”。它是整个安装文档选择器链中最末端的版本级筛选器其输出值oracle-linux-ver直接参与后续安装命令块的条件匹配。二、Oracle Linux 版本选择器的完整配置解析oracle-linux-ver-selector.rst全文围绕两个selector块组织分别服务于 GPU 细分场景与全家族兜底场景。2.1 GPU 维度按 Instinct 型号细分支持的版本.. selector:: Oracle Linux version :show-cond: gpumi355x gpumi350x gpumi325x gpumi300x :key: oracle-linux-ver .. selector-option:: 10 :show-cond: gpumi355x gpumi350x gpumi325x :width: 6 :value: 10 .. selector-option:: 9 :show-cond: gpumi355x gpumi350x gpumi325x :width: 6 :value: 9 .. selector-option:: 10 :show-cond: gpumi300x :width: 4 :value: 10 .. selector-option:: 9 :show-cond: gpumi300x :width: 4 :value: 9 .. selector-option:: 8 :show-cond: gpumi300x :width: 4 :value: 8这段配置的含义可以拆解为三层组级条件:show-cond: gpumi355x gpumi350x gpumi325x gpumi300x只有当读者在 GPU 下拉框中选中 MI355X、MI350X、MI325X、MI300X 之一时整个“Oracle Linux version”选择器组才会显示。注意该条件没有覆盖 mi350p、mi300a、mi250x、mi210、mi100 等型号——这些型号在 os-selector.rst 中本就不提供 Oracle Linux 选项因此组级条件与上游选择器保持一致。选项级条件show-cond附加在单个selector-option上把 GPU 型号进一步区分成两组支持矩阵MI355X / MI350X / MI325X仅支持 Oracle Linux10与9两个选项各占 6 列宽度等宽并排MI300X支持 Oracle Linux10 / 9 / 8三个版本各占 4 列宽度三等分并排。键名与取值:key: oracle-linux-ver定义了该选择器的状态键选中项的值通过:value:写入如10、9、8供后续.. selected:: oracle-linux-ver10之类的条件块使用。这种“同键多选项 各自 show-cond”的写法让同一个选择器可以在不同 GPU 下呈现不同的版本集合是 ROCm 文档实现“按硬件裁剪内容”的标准手段。2.2 全家族兜底famall场景.. selector:: Oracle Linux version :show-cond: famall :key: oracle-linux-ver .. selector-option:: 10 :width: 4 :value: 10 .. selector-option:: 9 :width: 4 :value: 9 .. selector-option:: 8 :width: 4 :value: 8当读者没有走 GPU 细分路径例如在安装方法选择器中选择了不依赖具体 GPU 的场景或选择了famall全家族视角时Oracle Linux 版本选择器退化为最宽松的形态10 / 9 / 8 三个版本全部可用、各占 4 列宽度且不再附带任何show-cond。选项默认全部可见读者可以自由选择任意受支持的 Oracle Linux 大版本。2.3 两个块的关系小结场景条件可选版本选项宽度gpumi355x gpumi350x gpumi325x10、96 6gpumi300x10、9、84 4 4famall兜底10、9、84 4 4从数据结构看famall块是 GPU 细分块的超集MI300X 的版本集合恰好与兜底一致而 MI355X/MI350X/MI325X 被约束在 10 和 9。这样既保证了细分场景的精确性又保证了通用场景的完整性。三、选择器机制的源码级原理oracle-linux-ver-selector.rst中出现的.. selector::、.. selector-option::等指令并非 Sphinx 内置功能而是仓库中自定义扩展 docs/extension/rocm_docs_custom/selector/init.py 提供的。理解其实现才能真正读懂这些配置的含义。3.1 指令注册与节点渲染扩展在setup(app)中注册了selectorSelectorGroupDirective、selector-optionSelectorOptionDirective、selector-dropdown、selected-content等指令并注册对应的 HTML 渲染节点。其中SelectorGroupDirective的option_spec接受key、show-cond、heading-width三个参数这正是文档中:key:与:show-cond:的来源SelectorOptionDirective的option_spec接受value、alt-name、show-cond、disable-cond、default、width、icon、toc-label指令还会在第一次使用时通过_register_selector_assets把 selector.js 与 selector.css 注入页面。3.2 条件字符串如何变成 HTML 属性:show-cond: gpumi355x gpumi350x gpumi325x这种空格分隔的keyvalue串会被工具函数 docs/extension/rocm_docs_custom/utils.py 中的kv_to_data_attr转换为 JSON 格式的data-show-cond属性pairs.setdefault(key, []).append(value.strip())即同一 key 的多个 value 会被合并成数组最终生成类似data-show-cond{gpu: [mi355x, mi350x, mi325x]}的 HTML 属性。同一文件中的normalize_key会把键名中的空格替换为下划线并转小写——所以文档里统一使用小写、连字符风格的值如oracle-linux-ver、mi300x。3.3 前端显隐判定shouldBeShown 与条件匹配页面加载后selector.js 通过shouldBeShown(elem)判断每个元素是否应显示function shouldBeShown(elem) { const raw elem.dataset.showCond; if (!raw) return true; // 无条件则恒显示 const conditions parseConditions(show-cond, raw); if (!conditions) return true; return matchesConditions(conditions, state); // 依据当前选择状态求值 }matchesConditions会在元素带disable-cond时如某些场景需要禁用而非隐藏走shouldBeDisabled分支。结合normalize_key与kv_to_data_attr可以推断state对象保存了os、gpu、fam、oracle-linux-ver等所有选择器的当前值元素只有在data-show-cond中列出的条件与state匹配时才可见。这也解释了 2.1 节的行为读者先在 GPU 下拉框选中mi300xstate.gpu变为mi300x于是“MI300X 专属的 10/9/8 三个版本选项”的data-show-cond匹配成功而显示同时 MI355X/MI350X/MI325X 那两个宽度为 6 的 10/9 选项因不匹配而隐藏。3.4 宽度参数栅格系统下的版式控制width在 selector/init.py 的_parse_width中被校验支持两种形态——整数1–12对应 Bootstrap 12 列栅格的col-N或百分比字符串0–100%。例如:width: 6渲染为col-6占一半宽度:width: 4渲染为col-4占三分之一宽度非法值会被警告并回退为默认值 6。因此 2.1 节中“两个选项各占 6 列”“三个选项各占 4 列”的写法实质是在控制选项按钮的栅格占比。四、从版本选择到实际安装dnf 仓库注册联动选择器本身不产生安装能力它真正的价值在于把oracle-linux-ver的值传递给安装正文中的条件块。在 docs/install/include/200-install.rst 中Oracle Linux 属于“使用dnf原生包管理器安装 ROCm”的发行版与 RHEL、Rocky Linux 同族见 000-intro.rst 中osoracle-linux的说明。4.1 三个版本对应的仓库地址200-install.rst针对oracle-linux-ver的三个取值分别给出了仓库注册命令核心差异仅在baseurl与元数据路径oracle-linux-verbaseurl说明10https://repo.amd.com/rocm/packages-multi-arch/rhel10/x86_64与 RHEL 10 同源9https://repo.amd.com/rocm/packages-multi-arch/rhel9/x86_64与 RHEL 9 同源8https://repo.amd.com/rocm/packages-multi-arch/rhel8/x86_64与 RHEL 8 同源可见 Oracle Linux 的 ROCm 软件仓库直接复用 RHEL 仓库路径——这是 Oracle Linux 与 RHEL 二进制兼容性的直接体现。4.2 Oracle Linux 10 的完整注册与安装流程以oracle-linux-ver10为例注册仓库的完整命令如下sudo tee /etc/yum.repos.d/rocm.repo EOF [rocm] nameROCm 7.14.0 baseurlhttps://repo.amd.com/rocm/packages-multi-arch/rhel10/x86_64 enabled1 gpgcheck1 gpgkeyhttps://repo.amd.com/rocm/packages-multi-arch/gpg/rocm.gpg priority50 EOF sudo dnf clean all字段要点nameROCm 7.14.0标识仓库对应的 ROCm 版本enabled1使仓库默认启用gpgcheck1配合gpgkey启用 GPG 签名校验保证包来源可信priority50设置了 dnf 优先级避免与系统仓库发生包版本竞争。仓库就绪后使用dnf安装 ROCm 核心包。仓库在 docs/install/include/200-install.rst 中同时提供了famall通用包与按gfx架构细分的包例如 Instinct MI300X / MI325Xgfx942对应sudo dnf install amdrocm7.14-gfx942对于不区分具体 GPU 的通用场景则直接安装sudo dnf install amdrocm7.144.3 版本选择器与安装命令的完整链路综合全文一次完整的 Oracle Linux 安装文档交互可抽象为如下链路读者在 os-selector.rst 中选择Oracle Linux→state.os oracle-linux读者在 gpu-selector.rst 中选择AMD Instinct MI300X→state.gpu mi300xoracle-linux-ver-selector.rst 中show-cond: gpumi300x的选项组显示呈现10 / 9 / 8三个版本读者选择10→state.oracle-linux-ver 10200-install.rst 中.. selected:: oracle-linux-ver10块被激活显示对应的rocm.repo注册命令与dnf install amdrocm7.14-gfx942安装命令。整个过程中rST 里的show-cond/selected是“数据与条件声明”selector.js 是“运行时求值引擎”而 200-install.rst 是“条件化的真实操作内容”。三者共同构成了 ROCm 文档精确到“GPU 型号 × 发行版 × 大版本”的动态安装指南。五、编写同类版本选择器时的关键要点如果你需要在 ROCm 文档体系中新增或调整某个发行版的版本选择器从本文涉及的源码与既有实践可以总结出以下规则键名全局唯一:key:会被normalize_key规范化同一键的不同 selector 块共享同一个state字段因此不要在多个选择器中重复使用不同含义的键组级与选项级条件分层组级show-cond控制整组是否出现选项级show-cond控制组内各选项的裁剪两者叠加使用才能表达“不同 GPU 支持不同版本”的矩阵默认选中逻辑从 selector/init.py 的实现看若某个选择器组内没有任何选项声明:default:首个选项会被自动设为默认编写时应注意选项顺序宽度取值范围width只接受 1–12 的整数或 0–100% 的百分比超出范围的配置会被告警并回退为 6与安装正文保持一致版本选择器的:value:必须与 200-install.rst 中.. selected:: oracle-linux-ver...的条件取值一一对应否则读者选择的版本将匹配不到任何安装步骤兜底块不可省略famall场景不经过 GPU 选择必须有独立的无show-cond选择器块覆盖否则该路径下版本选择器完全不可见。六、小结oracle-linux-ver-selector.rst虽然只有几十行却是 ROCm 安装文档交互体系中承上启下的关键一环它把“Oracle Linux 支持哪些大版本”这一事实按 GPU 型号精确建模为show-cond条件树并通过oracle-linux-ver状态键与dnf仓库注册、amdrocm7.14包安装命令完成端到端联动。理解它的配置语法结合 selector/init.py 与 selector.js 的源码实现你便可以在 ROCm 文档体系中自由定制类似的发行版版本选择器让安装指南真正适配每一块具体的 AMD 硬件。【免费下载链接】legacy-rocm-buildAMD ROCm™ Software - GitHub Home项目地址: https://gitcode.com/GitHub_Trending/ro/legacy-rocm-build创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考