我的理解是,如果我在 %files 列表下指定 %dir 指令,RPM 将不会列出该目录下的任何文件。这样做可以让您为相关目录(或用户、组等)设置特定权限。但是,当我除了指定的目录之外还明确列出文件时,我仍然会收到“文件列出两次警告”消息。我知道这听起来很愚蠢,但文件对目录具有不同的权限,这就是为什么我需要使用 %dir 指令单独定义目录的原因。
如果我没有使用 %dir 指令,那么我会看到这些警告信息。
我对么?
更新:
实际上,两次列出的文件似乎只有当我将 %dir 指令与 %config 指令结合起来时才会出现。
因此以下内容没有任何警告信息:
%files
%dir %attr(0755,testuser,test) /app/product/tracking-tool/bin/
%dir %attr(0755,testuser,test) /app/product/tracking-tool/bin/scripts/
%attr(0755,vscc_prod,vscc) /app/product/tracking-tool/bin/run.sh
%attr(0755,vscc_prod,vscc) /app/product/tracking-tool/bin/count.sh
%attr(0755,vscc_prod,vscc) /app/product/tracking-tool/bin/delete.sh
%attr(0755,vscc_prod,vscc) /app/product/tracking-tool/bin/scripts/script1.sh
但以下结果会出现警告信息:
%config %dir %attr(0755,testuser,test) /app/product/tracking-tool/config/
%config %dir %attr(0755,testuser,test) /app/product/tracking-tool/config/properties
%config %dir %attr(0755,testuser,test) /app/product/tracking-tool/config/other
%config %attr(0644,testuser,test) /app/product/tracking-tool/config/xmlconfig.xml
%config %attr(0644,testuser,test) /app/product/tracking-tool/config/properties/logging.properties
%config %attr(0600,testuser,test) /app/product/tracking-tool/config/properties/test.txt
%config %attr(0600,testuser,test) /app/product/tracking-tool/config/other/other.txt
Warning appear as follows:
[WARNING] warning: File listed twice: /app/product/tracking-tool/config/xmlconfig.xml
[WARNING] warning: File listed twice: /app/product/tracking-tool/config/properties/logging.properties
[WARNING] warning: File listed twice: /app/product/tracking-tool/config/properties/test.txt
[WARNING] warning: File listed twice: /app/product/tracking-tool/config/other/other.txt
答案1
据我所知,%config 指令不允许在其后添加其他指令,因为它仅用于将文件标记为配置文件。请尝试以下操作(我仍然不能 100% 确定 %config 指令是否适用于目录,文档中没有说明它是否适用):
%files
%config /app/product/tracking-tool/config/xmlconfig.xml
%config /app/product/tracking-tool/config/properties/logging.properties
%config /app/product/tracking-tool/config/other/other.txt
%dir %attr(0755,testuser,test) /app/product/tracking-tool/config/
%dir %attr(0755,testuser,test) /app/product/tracking-tool/config/properties
%dir %attr(0755,testuser,test) /app/product/tracking-tool/config/other
%attr(0644,testuser,test) /app/product/tracking-tool/config/xmlconfig.xml
%attr(0644,testuser,test) /app/product/tracking-tool/config/properties/logging.properties
%attr(0600,testuser,test) /app/product/tracking-tool/config/properties/test.txt
%attr(0600,testuser,test) /app/product/tracking-tool/config/other/other.txt