当使用模拟构建 srpm,然后重建它以创建 rpm 模拟时,会自动生成一些依赖项。在大多数情况下,这完全没问题,但由于我尝试构建的内容已经带来了它所需的一切,所以我不希望出现这种行为。我无法解决的自动要求是 libffmpeg.so()(64bit) - 但正如我所说,它作为文件包含在内。
我已经尝试过(在规范文件中)
- %define __requires_exclude libffmpeg.so
- 自动请求:否|0
- AutoReqProv:否|0
以上所有内容,无论是否手动指定要求(例如 coreutils)。
使用的命令:
mock -r epel-7-x86_64 --buildsrpm --no-clean --no-cleanup-after --spec="${RPM_NAME}.spec" --source="${WORKING_DIR}" --resultdir="${WORKING_DIR}" -v
mock -r epel-7-x86_64 --rebuild --no-clean --no-cleanup-after "${WORKING_DIR}"/${RPM_NAME}*.src.rpm --resultdir="${WORKING_DIR}" -v
答案1
这与 Mock 没有严格关系。内部模拟使用rpmbuild,并且这种自动依赖关系是由rpmbuild计算的。
如果您将 libffmpeg.so 放在系统路径中,那么您可以(顺便说一句,这应该自动完成):
Provides: libffmpeg.so()(64bit)
但如果它不在系统路径中,您应该只过滤 Require。这是综合指南: https://fedoraproject.org/wiki/Packaging:AutoProvidesAndRequiresFiltering
我想指出两个你可能会犯的错误:
1)不累计。仅使用最后一个宏并替换前一个宏。
2)它是需要匹配整个字符串的正则表达式。即 libffmpeg.so 不会匹配“libffmpeg.so()(64bit)”。所以你必须:
%global __requires_exclude ^libffmpeg\\.so.*$
此外,您还应该添加:
Provides: bundled(<libname>) = <version>