2

我正在尝试创建一个 .spec 文件,并将 ChangeLog、README、INSTALL、COPYING、NEWS、AUTHORS 放在 %file 指令下的 %doc 指令中。包 tarname 是 recafoh-prealpha,版本是 svn73。rpmbuild -ba recafoh.spec 说

RPM build errors:
    Installed (but unpackaged) file(s) found:
   /usr/share/doc/recafoh-prealpha/COPYING
   /usr/share/doc/recafoh-prealpha/ChangeLog
   /usr/share/doc/recafoh-prealpha/INSTALL
   /usr/share/doc/recafoh-prealpha/NEWS
   /usr/share/doc/recafoh-prealpha/README
   /usr/share/doc/recafoh-prealpha/TODO

但是它们安装在 BUILDROOT/usr/share/doc/recafoh-prealpha-svn73/{ChangeLog, README, INSTALL, COPYING, NEWS, AUTHORS} 中,还有一件奇怪的事情:README 也安装在 BUILDROOT/usr/share/ doc/recafoh-prealpha-svn73。

那么,任何人都可以解释 1)如何解决 rpmbuild 错误,以及 2)为什么 README 安装在 recafoh-prealpha-svn73 和 README 中,其余的安装在 recafoh-prealpha 中?

非常感谢

编辑:

这是 recafoh.spec 文件的相关部分:

%files
%doc AUTHORS ChangeLog COPYING NEWS README TODO
%{_sbindir}/recafohd
%{_bindir}/recafoh
4

1 回答 1

5

根据Fedora 构建文档:“通常,“%doc”用于列出 %{_builddir} 中未复制到 %{buildroot} 的文档文件。通常包括一个 README 和 INSTALL 文件。它们将被放置在目录 /usr/share/doc/%{name}-%{version} 中,不需要声明其所有权。

所以你两个问题的答案都与这一点有关。我假设您的 bzip2 文件中有这些文档,包含在 /usr/share/doc/recafoh-prealpha/ 目录中,对吗?因此,如果您查看文档,这是最重要的一点:通常,“%doc”用于列出 %{_builddir} 中未复制到 %{buildroot} 的文档文件。

如果您希望它们位于该特定目录(以及特定于版本的目录)中,请将您的 %file 部分修改为如下所示:

%files
%doc AUTHORS ChangeLog COPYING NEWS README TODO
/usr/share/doc/recafoh-prealpha/COPYING
/usr/share/doc/recafoh-prealpha/ChangeLog
/usr/share/doc/recafoh-prealpha/INSTALL
/usr/share/doc/recafoh-prealpha/NEWS
/usr/share/doc/recafoh-prealpha/README
/usr/share/doc/recafoh-prealpha/TODO
%{_sbindir}/recafohd
%{_bindir}/recafoh

如果您只希望它们位于 /usr/share/doc 中,请使用以下 %files 部分:

%files
/usr/share/doc/recafoh-prealpha/COPYING
/usr/share/doc/recafoh-prealpha/ChangeLog
/usr/share/doc/recafoh-prealpha/INSTALL
/usr/share/doc/recafoh-prealpha/NEWS
/usr/share/doc/recafoh-prealpha/README
/usr/share/doc/recafoh-prealpha/TODO
%{_sbindir}/recafohd
%{_bindir}/recafoh

如果您只想将文档放在版本特定的目录中,您应该修改您的 bzip2 文件,以便文档文件是顶级的,然后它们应该与您最初提供的规范文件一起正确移动。

有关 %doc 指令的更详细信息,请查看:rpm.org

于 2012-11-27T04:08:39.007 回答