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

CentOS7.9环境下使用pip安装meson构建DPDK RPM包报错如何解决

问题排查与解决步骤

第一个问题:已pip安装meson但rpmbuild提示缺失构建依赖

rpmbuild的依赖检测只会读取系统rpm数据库内的包记录,通过pip安装的meson、ninja没有注册到rpm数据库,所以会被判定为依赖缺失。
解决方法二选一:

  • 执行rpmbuild命令时加上--nodeps参数,主动跳过构建依赖校验:
    rpmbuild -ba SPECS/dpdk.spec --nodeps
    
  • 若不想跳过依赖校验,可将spec文件中的BuildRequires: meson替换为BuildRequires: /usr/local/bin/meson,让rpm直接校验可执行文件是否存在,而非校验rpm包是否安装。

第二个问题:build阶段报fg: no job control错误

该报错的核心原因是CentOS 7的rpm-build包没有预定义%meson宏,%meson是CentOS 8及之后版本才默认提供的rpm宏。当spec中写了未定义的%xxx格式宏时,shell会将%识别为任务控制前缀,尝试调用fg切换前台任务,因此抛出该错误。

需要对spec文件做以下修改:

  1. 确认pip安装的meson、ninja路径已加入rpmbuild的执行环境PATH,可在spec文件开头添加如下配置:
    export PATH=/usr/local/bin:$PATH
    
  2. 替换%build阶段的%meson写法为直接调用meson命令,示例如下:
    %build
    # 替换原来的%meson开头的行
    meson setup build \
      --includedir=include/dpdk \
      -Ddrivers_install_subdir=dpdk-pmds \
      -Denable_docs=true \
      -Dmachine=default \
      --default-library=shared
    # 新增编译命令,替代原来的%meson_build(如果有写的话)
    ninja -C build
    
  3. 若%install阶段写了%meson_install,同样替换为直接调用ninja安装命令:
    %install
    rm -rf %{buildroot}
    ninja -C build install DESTDIR=%{buildroot}
    

按上述配置调整后即可正常完成构建。

内容的提问来源于stack exchange,提问作者Ruslan R. Laishev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:54:05