【问题标题】:rpm-maven-plugin automatically install required packgedrpm-maven-plugin 自动安装所需打包
【发布时间】:2019-12-17 02:54:26
【问题描述】:

我正在使用 rpm-maven-plugin 为我的应用程序创建安装/升级 RPM,该应用程序将安装在 CentOS 7 上。

对于新安装,需要一些软件包,但是 rpm-maven-plugin 会忽略 rpm.spec 文件中的设置(因此 'Requires:' 将不起作用)并且无法通过 RPM 执行 yum 或 rpm脚本。

是否有插件配置告诉 RPM 安装所需的包(在这种情况下为 PostgresDB 和 sshpass)?

如果不是,最好的选择是什么?告诉客户在安装 RPM 之前手动安装要求或创建一个处理完整设置的 shell 脚本?

这里是 pom.xml 的相关部分:

            <build>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>rpm-maven-plugin</artifactId>
                    <version>${rpm-maven-plugin.version}</version>
                    <inherited>false</inherited>
                    <executions>
                        <execution>
                            <inherited>false</inherited>
                            <phase>install</phase>
                            <goals>
                                <goal>rpm</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <license>Commercial</license>
                        <group>Networking/Admin</group>
                        <name>name</name>
                        <packager>packager</packager>
                        <prefix>$prefix</prefix>
                        <version>${project.version}</version>
                        <release>release</release>
                        <needarch>x86_64</needarch>
                        <mappings>
                        ...
                        </mappings>
                        <requires>
                            <require>postgresql &gt;= ${rpm.postgresql.version}</require>
                            <require>java-1.8.0-openjdk</require>
                            <require>sshpass</require>
                        </requires>
                        <postinstallScriptlet>
                            <script>
                                cd /opt/%{name}
                                if [ "$1" = 1 ] ; then
                                    if [ -e ./install.sh ]; then
                                        sh ./install.sh;
                                    fi
                                fi
                                if [ "$1" = 2 ] ; then
                                    sh ./upgrade.sh
                                fi
                            </script>
                        </postinstallScriptlet>
                    </configuration>
                </plugin>
            </plugins>
        </build>

【问题讨论】:

    标签: maven rpm rpm-maven-plugin


    【解决方案1】:

    今天遇到了这个问题。找到的解决方案,没有很好地记录。基本上需要以 LinkedHashSet 的形式传递需求列表。

    根据 maven-rpm-plugin documentation for 需要

    要求:

    此软件包的要求列表。

    类型:java.util.LinkedHashSet

    必填:否

    所以改变

                        <requires>
                            <require>postgresql &gt;= ${rpm.postgresql.version} </require>
                            <require>java-1.8.0-openjdk</require>
                            <require>sshpass</require>
                        </requires>
    

                        <requires>
                            <LinkedHashSet>postgresql &gt;= ${rpm.postgresql.version},java-1.8.0-openjdk,sshpass</LinkedHashSet>
                        </requires>
    

    假设 ${rpm.postgresql.version}=123 最终规范将有如下一行:

    Requires: postgresql >= 123,java-1.8.0-openjdk,sshpass
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-14
      • 1970-01-01
      • 1970-01-01
      • 2019-11-02
      相关资源
      最近更新 更多