You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让rpm-mpi-hooks为CMake构建的RPM添加正确MPI版本信息?

Rocky9下CMake构建OpenMPI项目生成RPM的依赖标识问题

在Rocky9虚拟机上使用CMake构建基于OpenMPI的C++项目时,生成RPM遇到依赖匹配问题。自RHEL8起,MPI发行版要求在.spec文件的Requires和Provides段添加MPI专属标识以标记特定版本,这项工作本应由rpm-mpi-hooks包自动处理,但无法找到该包实际运行的相关信息。

当前生成的RPM安装时会报错:

Problem 1: conflicting requests

  • nothing provides libmpi.so.40()(64bit) needed by myrpm

预期的依赖格式应为libmpi.so.40()(64bit)(openmpi-x86_64),但生成的RPM依赖仅为libmpi.so.40()(64bit)。查阅相关资料均指向Fedora的MPI打包指南,尝试过在.spec文件中使用宏、重命名二进制文件、迁移至特定MPI目录等方法,均未解决问题。

以下是用于测试的环境文件:

测试用CMakeLists.txt

cmake_minimum_required(VERSION 3.0)

project(HelloWorld)
add_executable(HWorld main.cxx)

set(CMAKE_INSTALL_PREFIX "/usr")

find_package(MPI REQUIRED)
include_directories(SYSTEM ${MPI_INCLUDE_PATH})
target_link_libraries(HWorld ${MPI_C_LIBRARIES} ${MPI_CXX_LIBRARIES})

install(TARGETS HWorld DESTINATION bin)

测试用.spec文件

Name:           HWorld
Version:        1
Release:        1%{?dist}
Summary:        Test script with MPI

License:        Test

Source0:        https://www.example.com/%{name}/releases/%{name}-%{version}.tar.gz

%define debug_package %{nil}

BuildRequires:  gcc
BuildRequires:  make

%description

%prep
%setup -q

%build
%cmake
%cmake_build

%install
%cmake_install

%files
%{_bindir}/%{name}

%post

%changelog
* ...

生成RPM后的依赖检查结果

$ rpmbuild -bb HWorld.spec
$ rpm -qp --requires HWorld-1-1.el9.x86_64.rpm
...
libmpi.so.40()(64bit)

内容的提问来源于stack exchange,提问作者Sadero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 20:34:51