2016-04-24 65 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。