rpmbuild已安装(但未打包)的文件源

21

我正在尝试在REDHAT 6系统上从二进制文件构建RPM。我在%files部分包含了所有文件(find /path/to/fake/install -type f >> specfile)

当我运行rpmbuild -bb specfile --target x86_64时,出现以下情况

Checking for unpackaged file(s): /usr/lib/rpm/check-files /path/to/rpmbuild/BUILDROOT/Package-1.0.0-1.el6.x86_64
error: Installed (but unpackaged) file(s) found:

RPM build errors:
    Installed (but unpackaged) file(s) found:
请注意错误信息中没有列出任何文件。我不确定问题出在哪里,有什么想法吗?
3个回答

26

你可以通过使用以下方法忽略这种类型的错误

%define _unpackaged_files_terminate_build 0

另见


17
对于从谷歌跳转至此的人:上面的答案很危险,应该非常谨慎地使用。在采用此方法之前,请仔细查看您的%build和%install部分,并确保在%files部分中考虑了它们生成的每个文件。 - Son of a Sailor
@SonofaSailor 如果您正确地测试了您的 RPM,那么这不应该是一个问题,但我同意这只应该用于 RPM 的初始开发,因为还有 %ghost 指令,它可以更好地忽略(不包括)您不想在软件包中安装的文件。 - brookbot

14
我猜你的/path/to/fake/install路径不正确。
在%files部分中的路径必须是文件最终安装的路径,例如/usr/local/bin/myprog。在rpm构建过程中,在%build部分中,你需要确保将文件放置在与%files部分指定的相同位置,或者使用rpmbuild的buildroot选项,并在你的spec文件中使用$RPM_BUILD_ROOT变量,与%files列表匹配的子路径,例如$RPM_BUILD_ROOT/usr/local/bin/myprog。详细信息请参见http://ftp.rpm.org/max-rpm/ch-rpm-anywhere.html

请注意,我是从现有的二进制文件生成RPM(没有%build)。我的%files看起来像这样:/usr/share/foo/opt/foo/bar而我的目录结构是:/path/to/rpmbuild/usr/share/foo/path/to/rpmbuild/opt/foo/bar - Trevor
当运行rpmbuild时,您是否将buildroot选项设置为/pat/to/rpmbuild? - Bernhard
@Bernhard http://www.rpm.org/max-rpm-snapshot/ch-rpm-anywhere.html 这个链接已经失效了(而且在https://web.archive.org/上也找不到)。 - undefined

0
一个可能出现这种情况的例子:假设在%post部分有一个%install_info,而在%postun部分有一个相关的%install_info_delete。这需要在%install部分使用类似rm -f %{buildroot}/%{_infodir}/dir的命令显式删除信息文件的中间目录。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接