无法禁用 rpmbuild 中的动态依赖项?

问题描述 投票:0回答:1

我需要重建一个预构建的 RPM 包,更改其中

.service
文件的位置。 非常简单:

  1. 解压源码包:

    rpm2cpio "$srcrpm" | ( cd "$src" ; cpio --no-absolute-filenames -idmv)

  2. 生成SPEC文件:

    rpmrebuild -s "$spec" -p "$srcrpm"

  3. 对其进行更改:

    sed -i 's/\/etc\/systemd\/system/\/usr\/lib\/systemd\/system/' "$spec"

  4. 并构建它:

    rpmbuild -bb -vvv --define "_topdir $dstdir" --buildroot "$src" "$spec"

一切运行正常,但是:原始RPM没有任何

Requires
,而新生成的RPM确实有:

$ rpm -q --requires -p "$srcrpm" 
$ rpm -q --requires -p "$dstrpm"
/bin/sh
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1

这些依赖关系阻止在 RHEL7 系统上安装新的 RPM,而在 RHEL7 系统上安装原始 RPM 则没有任何问题。 (重建是在RHEL9系统上完成的)。

尝试了以下所有方法:

  1. 已添加
    rpmbuild --nodeps
  2. 添加到 SPEC 文件:
AutoReq: no
AutoProv: no
AutoReqProv: no
%global __requires_exclude ^.*$
%global __requires_exclude_from ^.*$
%define __requires ${nil}
  1. 编辑
    /usr/lib/rpm/find-requires
    ,评论
    rpmdeps

运气不好,新 RPM 中仍然存在

Requires
。为什么?我还缺少什么?

dependencies rpm rpmbuild
1个回答
0
投票
yum install mock
mock -r centos-7-x86_64 foo.src.rpm

您可能希望将自己添加到模拟组中,以避免每次运行时都输入密码:https://rpm-software-management.github.io/mock/#setup

© www.soinside.com 2019 - 2024. All rights reserved.