2

我正在尝试创建一个 RPM 包来安装一个软件,但是每当我尝试使用 rpm 插件构建它时,它会在构建时运行安装脚本,这将失败,因为我的机器不是预期的目标(也不应该是)

设置是这样的

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>rpm-maven-plugin</artifactId>
    <version>2.1.2</version>
    <extensions>true</extensions>
    <configuration>
        <group>Applications/Software</group>
        <mappings>
            <mapping>
                <directory>/tmp/${project.artifactId}</directory>
                <filemode>755</filemode>
                <username>user</username>
                <groupname>group</groupname>
                <sources>
                    <source>
                        <location>src/main/resources/</location>
                    </source>
                </sources>
            </mapping>
        </mappings>
        <requires>
            <require>unzip</require>
        </requires>
        <preinstallScriptlet>
            <scriptFile>src/main/scripts/preinstall.sh</scriptFile>
            <fileEncoding>utf-8</fileEncoding>
        </preinstallScriptlet>
        <installScriptlet>
            <scriptFile>src/main/scripts/install.sh</scriptFile>
            <fileEncoding>utf-8</fileEncoding>
        </installScriptlet>
    </configuration>
</plugin>

我还将 pom 打包配置为 rpm,并且我正在运行“mvn clean package”来生成 rpm。这只是一个构建器项目,这意味着它要做的就是将 rpm 中的 src/main/resources 中的所有文件与脚本一起打包,这些脚本将在该 rpm 在某些目标机器上运行时执行。

我错过了什么吗?

我正在安装了 rpmbuild 的 Ubuntu 14.04 机器上构建 rpm

4

1 回答 1

3

我刚刚阅读了 RPM 文档,发现这是完全正确的。install scriptlet 在构建 RPM 时调用,您可能需要的是 preinstall 或 postinstall scriptlet。安装本身(复制文件)由 RPM 完成。

参考:http ://www.rpm.org/max-rpm/s1-rpm-inside-scripts.html

于 2015-04-27T14:13:46.620 回答