rpmbuild 已安装(但未打包)的文件源
Posted
技术标签:
【中文标题】rpmbuild 已安装(但未打包)的文件源【英文标题】:rpmbuild Installed (but unpackaged) files source 【发布时间】:2012-11-04 07:13:36 【问题描述】:我正在尝试从 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:
请注意,错误消息中未列出任何文件。我不确定出了什么问题,有什么想法吗?
【问题讨论】:
【参考方案1】:您可以通过使用忽略这些类型的错误
%define _unpackaged_files_terminate_build 0
See also
【讨论】:
致从谷歌来到这里的人:上面的答案很危险,应该非常小心地使用。在使用此方法之前,请仔细查看您的 %build 和 %install 部分,并确保您已经考虑了它们在 %files 部分中生成的每个文件【参考方案2】:我猜你的 /path/to/fake/install 不正确。
%files
部分中的路径必须是最终安装文件的路径,例如/usr/local/bin/myprog
。在 rpm 构建期间,在 %build
部分中,您需要确保将文件放在您在 %files
部分中指定的相同位置,或者使用 rpmbuild
的 buildroot
选项并使用 @987654328您的规范文件中的 @ 变量,其子路径与 %files
列表匹配,在此示例中为 $RPM_BUILD_ROOT/usr/local/bin/myprog
。详情请见http://www.rpm.org/max-rpm-snapshot/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 在运行 rpmbuild 时是否将 buildroot 选项设置为 /pat/to/rpmbuild?【参考方案3】:可能发生这种情况的一个示例:假设在%post
部分有一个%install_info
,而在%postun
部分有一个关联的%install_info_delete
。这需要在%install
部分中使用rm -f %buildroot/%_infodir/dir
之类的命令显式删除信息文件的中间目录。
【讨论】:
以上是关于rpmbuild 已安装(但未打包)的文件源的主要内容,如果未能解决你的问题,请参考以下文章