目前我正在使用 RPM Maven 插件根据需要生成 RPM。我的情况要求我对该目录中包含的文件应用不同的目录权限。
不幸的是,我不能使用默认目录权限,因为并非所有目录的所有权限都相同。
因此,我以导致以下规范文件片段的方式配置插件:
%files
%config %dir %attr(0755,team_prod,prodgroup) /basedir/product/tool/config
%config %dir %attr(0755,team_prod,prodgroup) /basedir/product/tool/config/examples
%config %attr(0644,team_prod,prodgroup) /basedir/product/tool/config/examples/test.conf
%config %attr(0644,team_prod,prodgroup) /basedir/product/tool/config/examples/dest.conf
从网站http://www.rpm.org/max-rpm-snapshot/s1-rpm-specref-files-list-directives.html我了解以下内容,因为我正在使用 %dir 宏,%dir 指令用于指示 RPM 仅对目录本身进行打包,而不管在创建包时目录中可能存在哪些文件。因此,默认情况下它不会列出该目录下的所有内容。这意味着使用 %dir 指令,然后在下面明确列出文件(具有不同的权限不应导致“文件列出两次”警告消息:
[WARNING] warning: File listed twice: /basedir/product/tool/config/examples/dest.conf
[WARNING] warning: File listed twice: /basedir/product/tool/config/examples/test.conf
我的问题与使用 maven RPM 插件无关,上述规范片段是否不足以消除警告消息?
此外,由于规范文件没有任何逻辑来查找文件或列出它们,忽略这些消息是否安全?
RPM 可以正常安装和卸载,并且所有其他 RPM 命令都可以正常工作,但是这些警告消息仍然出现?
目前我正在忽略它们。
请注意,如果目录和文件的权限相同(我认为),则不会出现警告消息。
提前感谢您的任何回复。
Maven 特定设置:
<mappings>
<mapping>
<configuration>true</configuration>
<directory>/basedir/product/tool/config</directory>
<filemode>0755</filemode>
<username>team_prod</username>
<groupname>prodgroup</groupname>
</mapping>
<mapping>
<configuration>true</configuration>
<directory>/basedir/product/tool/config/examples</directory>
<filemode>0755</filemode>
<username>team_prod</username>
<groupname>prodgroup</groupname>
</mapping>
<mapping>
<configuration>true</configuration>
<directory>/basedir/product/tool/config/examples</directory>
<directoryIncluded>false</directoryIncluded>
<filemode>0644</filemode>
<username>team_prod</username>
<groupname>prodgroup</groupname>
<sources>
<source>
<location>src/main/config/examples</location>
</source>
</sources>
</mapping>
与上述类似的条目有很多。我的以下定义太真实了,但没有别的。我知道这个插件也有递归 maven 道具,但我需要对应用的权限进行细粒度控制。例如对于 bin 目录,所有文件都有 755 等。如前所述,产生了 %dir 指令,但似乎不遵守 RPM 规则。