2016-04-24 45 views
1

我试图在Windows上使用RPM Maven插件构建RPM,以便在Linux机器上部署。为CentOS构建RPM

OS of machine that's building RPM: Windows 7 Enterprise, Cygwin 2.5.1

OS of VM installing RPM: CentOS 7

我已经运行了mvn clean install命令,并且构建成功。

[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 48.273s 
[INFO] Finished at: Sun Apr 24 21:08:51 BST 2016 
[INFO] Final Memory: 10M/157M 
[INFO] ------------------------------------------------------------------------ 

然而,当我使用scp这个到服务器并运行yum install -y Core1337-1.0-1.noarch.rpm

我得到以下错误:

Transaction check error: package Core1337-1.0-1.noarch is 
intended for a different operating system 

以下是从pom.xml文件剪断的XML插件。

<modelVersion>4.0.0</modelVersion> 
    <groupId>com.core</groupId> 
    <artifactId>Core1337</artifactId> 
    <packaging>rpm</packaging> 
    <version>1.0</version> 
    <name>Core Libz</name> 

    <properties> 
     <targetOS>i386-linux</targetOS> 
     <rpm-base>opt</rpm-base> 
     <rpm-path>app</rpm-path> 
     <base-dir>core</base-dir> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 
    </dependencies> 

    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>rpm-maven-plugin</artifactId> 
      <version>2.1.5</version> 
      <extensions>true</extensions> 
      <configuration> 
       <license>GPL (c) 2005, SWWDC</license> 
       <distribution>eSQuireDistro</distribution> 
       <group>eSQuireDevel</group> 
       <requires> 
        <require>at</require> 
        <require>wget</require> 
        <require>tree</require> 
        <require>cronie</require> 
        <require>openssh-server</require> 
       </requires> 
       <mappings> 
        <mapping> 
         <directory>/${rpm-base}/${rpm-path}/${base-dir}/python</directory> 
         <filemode>744</filemode> 
         <username>root</username> 
         <groupname>root</groupname> 
         <configuration>false</configuration> 
         <directoryIncluded>true</directoryIncluded> 
         <recurseDirectories>true</recurseDirectories> 
         <dependency /> 
         <sources> 
          <source> 
           <location>src/main/python</location> 
          </source> 
         </sources> 
        </mapping> 
        <mapping> 
         <directory>/${rpm-base}/${rpm-path}/${base-dir}/scripts</directory> 
         <filemode>744</filemode> 
         <username>root</username> 
         <groupname>root</groupname> 
         <configuration>false</configuration> 
         <directoryIncluded>true</directoryIncluded> 
         <recurseDirectories>true</recurseDirectories> 
         <dependency /> 
         <sources> 
          <source> 
           <location>src/main/scripts</location> 
          </source> 
         </sources> 
        </mapping> 
       </mappings> 
       <preinstallScriptlet> 
        <script>/bin/logger "installing"</script> 
       </preinstallScriptlet> 
       <postinstallScriptlet> 
        <script>/bin/logger "uninstalling"</script> 
       </postinstallScriptlet> 
      </configuration> 
     </plugin> 
    </plugins> 

这是生成的SPEC文件:

%define __jar_repack 0 
Name: Core1337 
Version: 1.0 
Release: 1 
Summary: Core Libz 
License: GPL (c) 2005, SWWDC 
Distribution: eSQuireDistro 
Group: eSQuireDevel 
Requires: at 
Requires: wget 
Requires: tree 
Requires: cronie 
Requires: openssh-server 
autoprov: yes 
autoreq: yes 
BuildArch: noarch 
BuildRoot: /cygdrive/C/Users/ala/workspace/alan/Core/target/rpm/Core1337/buildroot 

%description 

%install 

if [ -d $RPM_BUILD_ROOT ]; 
then 
    mv /cygdrive/C/Users/ala/workspace/alan/Core/target/rpm/Core1337/tmp-buildroot/* $RPM_BUILD_ROOT 
else 
    mv /cygdrive/C/Users/ala/workspace/alan/Core/target/rpm/Core1337/tmp-buildroot $RPM_BUILD_ROOT 
fi 

%files 

%attr(744,root,root) "/opt/esquire/core/python/" 
%attr(744,root,root) "/opt/esquire/core/scripts/" 

%pre 
/bin/logger "installing" 

%post 
/bin/logger "uninstalling" 

如何配置的插件来构建与Linux头的RPM?任何帮助深表感谢 !

+0

行“ i386-linux”在您的pom.xml中是非常可疑的... –

+0

http://www.mojohaus.org/rpm-maven-plugin/ident-params.html#targetOS这是所有我可以找到,但我无法获得任何有关需要插入的值的信息 – AK47

+0

我不知道是否必须自己填写。 “默认情况下,这将被填充到系统属性os.name。”。我在Linux上使用rpmbuild,并且我从来没有填充过自己......除非你想产生“noarch”;在这种情况下,你填写“noarch” –

回答

3

在windows上构建RPMS以部署在Linux机器上可能会很复杂。我会建议在部署它的同一个操作系统上构建RPMS。