Foreign Packaging: Difference between revisions
No edit summary |
|||
Line 24: | Line 24: | ||
[http://redline-rpm.org Redline RPM] is a pure Java library for manipulating RPM packages. It can be use in command line, with [http://ant.apache.org Ant] and with [http://maven.apache.org Maven]. | [http://redline-rpm.org Redline RPM] is a pure Java library for manipulating RPM packages. It can be use in command line, with [http://ant.apache.org Ant] and with [http://maven.apache.org Maven]. | ||
Redline requires [http://commons.apache.org/proper/commons-compress/download_compress.cgi Apache Commons Compress], [http://www.bouncycastle.org/latest_releases.html Bounty Castle] | Redline requires [http://commons.apache.org/proper/commons-compress/download_compress.cgi Apache Commons Compress], [http://www.bouncycastle.org/latest_releases.html Bounty Castle], [http://www.slf4j.org/download.html SLF4J] and [http://repo1.maven.org/maven2/org/tukaani/xz/1.4/ XZ]. | ||
Using a distinct name space or a different task name for the Redline RPM task is necessary to avoid any conflict with the build-in Ant [http://ant.apache.org/manual/Tasks/rpm.html RPM task]: | Using a distinct name space or a different task name for the Redline RPM task is necessary to avoid any conflict with the build-in Ant [http://ant.apache.org/manual/Tasks/rpm.html RPM task]: | ||
Line 35: | Line 35: | ||
<pathelement path="slf4j-api-1.7.7.jar"/> | <pathelement path="slf4j-api-1.7.7.jar"/> | ||
<pathelement path="slf4j-simple-1.7.7.jar"/> | <pathelement path="slf4j-simple-1.7.7.jar"/> | ||
<pathelement path="xz-1.4.jar"/> | |||
<pathelement path="redline-1.1.16.jar"/> | <pathelement path="redline-1.1.16.jar"/> | ||
</classpath> | </classpath> |
Revision as of 11:56, 7 October 2014
N.B: This article is subject to changes and is incomplete.
We assume that the application is packaged as a fat JAR called "user-app.jar" for the sake of simplicity.
Red Hat Package Manager
RPM (Red Hat Package Manager) is the default package management system under Red Hat, Fedora, Mageia, Mandriva, OpenSUSE, Oracle Linux, ...
Platform dependent tools
The following tools only work under GNU Linux or other Unix platforms with native rpm support.
rpmbuild can be used to build RPMs. You can find more information about RPM packaging in the official documentation.
The build tool Ant can call this command when you use its RPM task. The build system Maven does the same with its RPM plugin.
Cross-platform tools
jRPM
jRPM is a pure Java library for manipulating RPM packages.
Redline
Redline RPM is a pure Java library for manipulating RPM packages. It can be use in command line, with Ant and with Maven.
Redline requires Apache Commons Compress, Bounty Castle, SLF4J and XZ.
Using a distinct name space or a different task name for the Redline RPM task is necessary to avoid any conflict with the build-in Ant RPM task:
<taskdef name="pure-java-rpm" classname="org.redline_rpm.ant.RedlineTask">
<classpath>
<pathelement path="bcpg-jdk15on-151.jar"/>
<pathelement path="commons-compress-1.8.1.jar"/>
<pathelement path="slf4j-api-1.7.7.jar"/>
<pathelement path="slf4j-simple-1.7.7.jar"/>
<pathelement path="xz-1.4.jar"/>
<pathelement path="redline-1.1.16.jar"/>
</classpath>
</taskdef>
Then, you can call this Ant task:
<pure-java-rpm group="Games" name="mygame" version="0" release="0" destination="rpms">
<zipfileset prefix="/usr/share/games/mygame" file="user-app.jar"/>
<depends name="java" version=">= 1.6"/>
</pure-java-rpm>
The created RPM will use the JRE installed on the operating system.
Debian Package Manager
Dpkg (Debian packager) is the default management system under Debian, Ubuntu, Knoppix, Mint, ...
Platform dependent tools
The following tools only work under GNU Linux or other Unix platforms with native deb support.
dpkg-buildpackage can be used to build DEBs. You can find more information about DEB packaging in the official documentation.
The build system Maven can call this command when you use its Debian Maven plugin.
Cross-platform tools
Jpkg
Jpkg is a pure Java library for manipulating DEB packages. It provides an Ant task. You can find an example of use in its readme file.
JDeb
JDeb is a pure Java library for manipulating DEB packages. It can be use in command line, with Ant and with Maven.
JDeb requires Apache Commons Compress, Bounty Castle and Apache Commons IO.
Using a distinct name space or a different task name for the JDeb deb task is necessary to avoid any conflict with any other library used for the same purpose:
<taskdef name="pure-java-deb" classname="org.vafer.jdeb.ant.DebAntTask">
<classpath>
<pathelement path="bcpg-jdk15on-151.jar"/>
<pathelement path="commons-compress-1.8.1.jar"/>
<pathelement path="commons-io-2.4.jar"/>
<pathelement path="jdeb-1.3.jar"/>
</classpath>
</taskdef>
Then, you can call this Ant task:
<pure-java-deb destfile="debs" control="control" verbose="true">
<mapper type="perm" prefix="/usr/share/games/mygame"/>
</pure-java-deb>
You can find an example of control file here.