我在rpm安装期间有一个我想要安装到/ usr / share / man / man8的man文件。这是我的映射。
<mapping>
<directory>/usr/share/man/man8</directory>
<documentation>true</documentation> <!-- no difference if I add or remove this -->
<filemode>644</filemode>
<username>root</username>
<groupname>root</groupname>
<directoryIncluded>false</directoryIncluded>
<recurseDirectories>false</recurseDirectories>
<sources>
<source>
<location>${project.build.directory}</location>
<includes>
<include>mymanpage.8</include>
</includes>
</source>
</sources>
</mapping>
rpm-maven-plugin错误并告诉我找不到 mymanpage.8 。我确认 mymanpage.8 位于目标目录中。然后我注意到该插件将 mymanpage.8.gz 复制到 target / rpm / rpmtest / buildroot / usr / share / man / man8 目录。所以我假设插件被识别,它可以gzip这个手册页并做到了但是因为我的映射是专门包括mymanpage.8它抱怨它找不到它。我尝试将include更改为mymanpage.8 *,它仍然给我找到相同的文件错误。
有没有人见过这个?有什么问题?
我想我有一个解决方法,就是将mymanpage.8文件复制到我的安装目录,然后在postinstall scriptlet中将其移动到/ usr / share / man / man8。
答案 0 :(得分:0)
rpm-maven-plugin将工作委托给rpmbuild命令。 这些压缩手册页。
您可以使用location
标记指定目录,也可以指定文件。
<mapping>
<directory>/usr/share/man/man8</directory>
<filemode>644</filemode>
<username>root</username>
<groupname>root</groupname>
<directoryIncluded>false</directoryIncluded>
<recurseDirectories>false</recurseDirectories>
<sources>
<source>
<location>${project.build.directory}/mymanpage.8</location>
</source>
</sources>
</mapping>
如果您更喜欢使用includes,则必须使用通配符模式。
documentation
标记不适用于联机帮助页,但适用于其他文档,例如更改日志。请参阅rpm-maven-plugin documentation。
答案 1 :(得分:0)
问题可能是手册页是在比包更晚的阶段构建的。因此,当rpm插件试图打包手册页时,它还没有。你可以在这里找到生命周期:
https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
因此,请确保手册页已创建并在包阶段之前在build目录中结束,例如在generate-resources中。
答案 2 :(得分:0)
在rpm打包之前,有扩展名为“ .8”的手册页。 Rpmbuild
强行压缩手册页,并以.gz扩展名重命名手册页,因此rpm-maven-plugin
找不到扩展名为“ .8”的文件。第一种解决方案是像这样用.gz扩展名重命名未压缩的文件
<mapping>
<directory>/usr/share/man/man8</directory>
<directoryIncluded>false</directoryIncluded><!-- required for CentOS 7 -->
<sources>
<source>
<!-- rpmbuild rename manpages from *.8 to *.8.gz, so we should use <destination> tag to set new name -->
<location>generated-docs/mymanpage.8</location>
<destination>mymanpage.8.gz</destination>
</source>
</sources>
<mapping>
现在rpmbuild
不再重命名文件,它适用于CentOS 7(使用man-db软件包来处理手册页),但不适用于CentOS 6(使用man软件包来处理手册页)。 ),CentOS 6无法打开此类手册页。
因此,要修复此问题,需要手动压缩手册页。对于压缩,您可以使用resourcecompressor maven插件
<plugin>
<groupId>com.github.ryanholdren</groupId>
<artifactId>resourcecompressor</artifactId>
<version>2017-06-24</version>
<executions>
<execution>
<goals>
<goal>compress</goal>
</goals>
<configuration>
<directory>generated-docs/</directory>
<filter>\.8$</filter>
<compression>SMALLEST</compression>
</configuration>
</execution>
</executions>
</plugin>
现在,rpm-maven-plugin
可以配置为使用.gz
文件(如果需要,可以使用通配符表达式),并且rpmbuild
不会尝试重命名和压缩手册页。 / p>
<mapping>
<directory>/usr/share/man/man8</directory>
<directoryIncluded>false</directoryIncluded><!-- required for CentOS 7 -->
<sources>
<source>
<location>generated-docs/</location>
<includes>
<include>*.8.gz</include>
</includes>
</source>
</sources>
</mapping>