打包 Yacreader 的时候遇到一个无法处理的情况

如果在%files 里面指定包含/usr/share/man 和/usr/share/doc 等目录,osc 会报错:
standard-dir-owned-by-package:

  • /usr/share/man
  • /usr/share/man/man1
  • /usr/share/doc

如果不包含目录,osc 会报错:
[ 57s] yacreader-9.8.2.2106204-0.x86_64.rpm: directories not owned by a package:
[ 57s] - /usr/share/doc
[ 57s] - /usr/share/man
[ 57s] - /usr/share/man/man1

我的%files 是这样的:

%files
%{_bindir}/YACReader*
%{_mandir}/man1/*
%{_datadir}/yacreader
%{_datadir}/applications/YACReader*
%{_datadir}/doc/yacreader
%{_datadir}/icons/hicolor/scalable/apps/*
%{_userunitdir}/yacreader*

请问如何解决?

https://opensuse-packaging.opensuse.narkive.com/16butf2G/directories-not-owned-by-a-package

Do not include a system directory such as /usr/bin, as RPM will assume your package owns all of /usr/bin, which contains hundreds of commands. This can be a problem when you try to remove a package.

https://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch09s05s02.html

不好意思我没有看懂你的解决方案……

试着添加:

%dir /usr/share/doc
%dir /usr/share/man
%dir /usr/share/man/man1

如果还存在问题,就参考一下别人的 spec

(openSUSE 与 Fedora 在打包时关于%files 部分出现重复文件夹和系统文件夹的情况时的处理好像不太一样)

肯定不能这么加吧?在往更准确的子目录走一级?比如/usr/share/doc/xxx.md 或者 /usr/share/doc/dir1,不然 doc&man 下的文件全都归属到这个包了?而且卸载的时候岂不全干掉了。。

记得 %files 好像是标记文件归属的,

在 Fedora(和 CentOS)我可以确定不应该将系统目录加入文件列表,但是 openSUSE 的处理方案似乎不一样,你可以已第二个错误为关键字找到 openSUSE 的 wiki。

哦哦,我想当然了,以及打过 CentOS 的包,我去看看 wiki~ :stuck_out_tongue_winking_eye: