Я пытаюсь создать 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? Любая помощь высоко ценится !
линия « i386-Linux » в вашем pom.xml очень подозреваемый ... –
http://www.mojohaus.org/rpm-maven-plugin/ident-params.html#targetOS это все Я могу найти, но я не могу получить какую-либо информацию о значениях, которые необходимо вставить. – AK47
Не знаю, нужно ли вам заполнить его сами. «По умолчанию это будет занесено в свойство System os.name». Я использую rpmbuild в linux, и я никогда не заполняю его в себе ... ЕСЛИ вы хотите создать «noarch»; в этом случае вы заполняете «noarch» –