RedHat系统中获取hdf5.h头文件对应安装包的方法咨询
获取RHEL 6中的hdf5.h头文件
我来帮你梳理下这个问题的解决思路,结合你提到的Ubuntu对比场景,一步步来:
1. 你用的RHEL查询命令是完全正确的
Ubuntu里的dpkg -S用来查找文件所属包,对应RHEL/CentOS系的命令就是yum whatprovides "*/hdf5.h"和repoquery --whatprovides "*/hdf5.h"——这两个用法没毛病。之所以没返回结果,核心原因是你当前RHEL 6系统配置的软件源里没有包含提供hdf5.h的包。
2. 你找到的hdf5-devel包完全正确
在RHEL/CentOS这类系统中,库的开发头文件比如hdf5.h,几乎都存放在后缀为*-devel的包中(和Ubuntu的*-dev包是同一个逻辑)。你找到的hdf5-devel-1.8.7-1.el6.rf.x86_64.rpm就是对应RHEL 6 x86_64架构的正确包,安装后就能得到/usr/include/hdf5.h文件。
3. 两种可靠的安装方式
方式一:启用EPEL源推荐
EPEL是专门为企业级Linux提供额外软件包的官方第三方源,里面包含hdf5-devel,用yum安装能自动处理依赖,最省心:
- 先安装EPEL针对RHEL 6的repo配置包:
注:如果系统无法直接通过此命令获取,可手动下载对应rpm文件后上传到服务器再执行安装。rpm -ivh epel-release-latest-6.noarch.rpm - 安装hdf5-devel:
yum install hdf5-devel
方式二:手动安装下载的rpm包
如果不想启用第三方源,也可以直接安装你找到的rpm包,但需要自行处理依赖问题:
- 下载好对应的rpm包后,执行安装命令:
rpm -ivh hdf5-devel-1.8.7-1.el6.rf.x86_64.rpm - 如果出现依赖缺失的提示,用
yum install <缺失的依赖包名>先补全依赖,再重新安装。
小技巧
以后在RHEL系系统里找文件对应的包时,可以记住这些规律:
- 开发头文件找
*-devel包 - 运行时库文件找
*-libs包 - 核心程序一般在主包(无后缀)里
- 如果默认源找不到,优先检查是否启用了optional/supplementary官方源,或者考虑EPEL这类靠谱的第三方源
内容的提问来源于stack exchange,提问作者sancho.s ReinstateMonicaCellio




