rpmbuild 跳过“检查未打包的文件 /usr/lib/rpm/check-files”

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

构建内核 rpm 包时

rpmbuild
是否很慢“检查未打包的文件”检查:

$ make -j$(nproc) binrpm-pkg
...
Checking for unpackaged file(s): /usr/lib/rpm/check-files /home/user/rpmbuild/BUI
LDROOT/kernel-4.17.0_rc5_next_20180517_3.gd86d9e8_default+-98.x86_64

对于内核,即使在功能强大的机器上也需要 30 分钟。如何避免这种情况? 我尝试用

_unpackaged_files_terminate_build
来避免它,但没有帮助:

echo "%_unpackaged_files_terminate_build    0" >> ~/.rpmmacros

还将

--nocheck
添加到
rpmbuild
binrpm-pkg
中的
scripts/package/Makefile
目标的调用也没有帮助。

但也许还有其他问题。当我使用配置构建时

make allyesconfig
rpm 文件有 168MB。使用 openSUSE Tumbleweed 配置构建的 RPM 文件有 647MB。

rpm rpmbuild
3个回答
1
投票

不幸的是,我很确定你无法阻止它。是在慢速行驶吗?您是否处于

/home/user
已联网的企业环境中?

您尝试更改的内容只是说“如果您发现我没有解释的文件,请将其设为警告而不是错误。”


1
投票

遇到同样的问题并找出发生了什么。

如果你的 rpmbuild 处理速度很慢,它不是来自 /usr/lib/rpm/check-files 脚本:
尝试注释它的所有行,你会发现它仍然挂起,即使这个脚本基本上不再做任何事情。

执行中:

strace -f -s900 rpmbuild [your args]

您将看到在挂起之间,会发出 DNS 调用(调用 /usr/lib64/libresolv.so lib)尝试解析构建计算机的主机名,该调用在一段时间后超时,然后重试....

如果您的计算机的 DNS 配置有错误或者您的 DNS 服务器无法正常工作,则 rpmbuild 进程将在每次启动时挂起。

为了避免这些挂起:

  • 更正构建机器上的 DNS 配置
  • sudo rm -f /etc/resolv.conf 在您的构建机器上

剩下的真正问题是:
为什么像 rpmbuild 这样的本地进程正在执行 DNS 调用?”....


0
投票

为了将来参考,问题行位于构建 RPM 内的 buildHost(void) 中。

代码:

    bhMacro = rpmExpand("%{?_buildhost}", NULL);
    if (strcmp(bhMacro, "") != 0) {
        rasprintf(&hostname, "%s", bhMacro);
    } else {
    hostname = rcalloc(NI_MAXHOST + 1, sizeof(*hostname));
    if (gethostname(hostname, NI_MAXHOST) == 0) {
        struct addrinfo *ai, hints;
        memset(&hints, 0, sizeof(hints));
        hints.ai_flags = AI_CANONNAME;

        if (getaddrinfo(hostname, NULL, &hints, &ai) == 0) {
        strcpy(hostname, ai->ai_canonname);
        freeaddrinfo(ai);
        } else {
        rpmlog(RPMLOG_WARNING,
                    _("Could not canonicalize hostname: %s\n"), hostname);
        }
    }

如果您使用主机名定义 _buildhost,这将跳过 DNS 调用。

示例:

rpmbuild -bb --define "_buildhost $(hostname)" ./path/to/spec/file.spec

注意:安装仍将挂在“检查文件”部分,但它会在后台执行其他操作,并且 dns 调用本身将被跳过。

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