我正在尝试在 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:
请注意,错误消息中没有列出任何文件。我不确定出了什么问题,有什么想法吗?
我猜你的 /path/to/fake/install 不正确。
%files
部分中的路径必须是文件最终安装的路径,例如/usr/local/bin/myprog
。在 rpm 构建期间,在 %build
部分中,您需要确保将文件放置在您在 %files
部分中指定的同一位置,或者使用 buildroot
的 rpmbuild
选项并使用 $RPM_BUILD_ROOT
规范文件中的
变量具有与 %files
列表匹配的子路径,在本例中为 $RPM_BUILD_ROOT/usr/local/bin/myprog
。有关详细信息,请参阅 http://ftp.rpm.org/max-rpm/ch-rpm-anywhere.html。
可能发生这种情况的一个示例:假设在
%post
部分中有一个 %install_info
,并且在 %postun
部分中有一个关联的 %install_info_delete
。这需要在 %install
部分中使用类似 rm -f %{buildroot}/%{_infodir}/dir
的命令显式删除信息文件的中间目录。