考虑包含以下内容的SPEC文件:
%install
install -m u=rwx,g=rx,o= -D bin/blah.jar ${RPM_BUILD_ROOT}%{_libexecdir}/foo/blah.jar
然后在%files
部分中,权限不会更改(例如%defattr(-,bubba,users,-)
)。
安装RPM会导致blah.jar
拥有权限644
而不是640
。实际上,无论install
命令中使用了哪些权限,它们都会重置为默认640
。我发现原因是jar重新打包,因为如果我通过将%define __jar_repack %{nil}
添加到SPEC文件来禁用重新打包,则会保留权限。
这是重新包装商的一个令人讨厌的错误。
如何让重新打包工作和保留权限(我的意思是保留,而不是在%files
部分设置它们,因为那时我就是这样)不仅要在%install
中而且在%files
中提及单个文件,而不仅仅是后者中的整个目录?