2016-04-24 3 views
1

Я пытаюсь создать RPM с помощью RPM Maven Plugin в Windows для развертывания на Linux-машине.Создайте RPM для CentOS

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] ------------------------------------------------------------------------ 

Однако, когда я ПКПП это на сервер и запустить 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 

Ниже приводится XML пропущено из файла pom.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" 

Как я могу настроить плагин для построения RPM с заголовком Linux? Любая помощь высоко ценится !

+0

линия « i386-Linux» в вашем pom.xml очень подозреваемый ... –

+0

http://www.mojohaus.org/rpm-maven-plugin/ident-params.html#targetOS это все Я могу найти, но я не могу получить какую-либо информацию о значениях, которые необходимо вставить. – AK47

+0

Не знаю, нужно ли вам заполнить его сами. «По умолчанию это будет занесено в свойство System os.name». Я использую rpmbuild в linux, и я никогда не заполняю его в себе ... ЕСЛИ вы хотите создать «noarch»; в этом случае вы заполняете «noarch» –

ответ

3

Создание RPMS на окнах для развертывания на Linux-машинах может быть сложным. Я бы предложил создать RPMS на той же ОС, на которой он будет развернут.

Смежные вопросы