Comment publier une application java

Ce tutoriel décrit une méthode pour publier une application java et la rendre installable via un ppa.

A noter que cette méthode peut également être utilisée pour publier une application réalisée dans un autre langage et dont l'installation ne requiert pas une re-compilation des sources.

Il est indispensable de créer un ppa sur launchpad.net. Cette page vous y aidera. Pour ce faire il faut :

  • Se créer un compte sur launchpad.net
  • Se créer une clef gpg (à l'aide de SeaHorse ou Kgpg)
  • Créer le ppa et le configurer.

Pour la suite nous considérons que le launchpad créé est "monlaunchpad" et le ppa "monppa". L'email associé est moi@email.com.

  • Créer un répertoire local ou seront construits les builds. Par exemple /home/user/ppa. Appelons le $PPA_HOME.
  • Dans $PPA_HOME, créer un sous-répertoire avec le nom de l'application (monappli)
  • Puis dans ce dernier répertoire un sous-répertoire avec la version de l'application. A noter que le nom de ce sous-répertoire est formaté : nomappli-version. Ici par exemple monappli-0.1.0.

A l'arrivée on a :

 /home/user/ppa
           |__ monappli
           |     |___monappli-0.1.0
           |     |___monappli-0.2.0
           |__ monapplibis

Pour la suite nous allons essayer de packager monappli.

Dans le répertoire $PPA_HOME/monappli/monappli-0.1.0 :

dh_make --single --native --copyright apache --email moi@email.com

A noter que le paramètre "copyright" indique la licence sous laquelle vous souhaitez publier votre oeuvre (ici apache). Pour plus de détails : ici Il est également important que l'email soit le même que celui avec lequel vous avez la clef GPG. Ceci va créer un sous-répertoire debian contenant différents fichiers. Les fichiers avec les extensions .ex et .EX sont sans intérêts. Donc sous $PPA_HOME/monappli/monappli-0.1.0 :

rm debian/*.ex debian/*.EX

Voyons maintenant les fichiers importants sous $PPA_HOME/monappli/monappli-0.1.0/debian.

Fichier changelog

Ce fichier contient les informations décrivant les changements opérés depuis la dernière version. Vous devez avoir cela :

monappli (0.1.0) unstable; urgency=low

  * Initial Release.

 -- Moi <moi@email.com>  Sat, 04 Oct 2014 19:07:31 +0200

A modifier pour obtenir quelque chose de plus pertinent :

  • Remplacer "unstable" par une version d'ubuntu ("trusty" par exemple pour la 14.04).
  • Compléter les éléments de modification.
  • Changer éventuellement la date en conservant le formalisme.

Finalement :

monappli (0.1.0) trusty; urgency=low

  * Initial Release.
  * Ma première publication

 -- Moi <moi@email.com>  Sun, 05 Oct 2014 21:00:00 +0200

Fichier control

Ce fichier est un descriptif de l'application et ressemble à cela :

Source: monappli
Section: unknown
Priority: optional
Maintainer: Moi <moi@email.com>
Build-Depends: debhelper (>= 8.0.0)
Standards-Version: 3.9.4
Homepage: <insert the upstream URL, if relevant>
#Vcs-Git: git://git.debian.org/collab-maint/test.git
#Vcs-Browser: http://git.debian.org/?p=collab-maint/test.git;a=summary

Package: test
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: <insert up to 60 chars description>
 <insert long description, indented with spaces>

Il convient de changer la section. Typiquement on peut mettre "utils". Plus de détails ici. Le plus important est la zone "depends" qui décrit les dépendances d'autres paquets. Pour une application java, manifestement on doit dépendre du paquet java. Au final on a quelque chose comme ça :

Source: monappli
Section: utils
Priority: optional
Maintainer: Moi <moi@email.com>
Build-Depends: debhelper (>= 8.0.0)
Standards-Version: 3.9.4
Homepage: <insert the upstream URL, if relevant>
#Vcs-Git: git://git.debian.org/collab-maint/test.git
#Vcs-Browser: http://git.debian.org/?p=collab-maint/test.git;a=summary

Package: test
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, openjdk-7-jre (>=7)
Description: Simple tool.
 Simple tool to do whatever you want.

Fichier install

Ce fichier décrit la destination des différents fichiers composant le paquet lors de l'installation par apt-get install. S'il n'a pas été créé par dh_make il faut le créer. A l'installation le shell lanceur devra se trouver dans /usr/bin, les autres élements nécessaires à l'exécution dans /usr/lib/monappli. Typiquement pour une application java on va trouver un jar (monappli-0.1.0.jar) contenant le bytecode, un shell (monappli) pour lancer le programme, éventuellement des ressources comme des images (monappli.png).

Egalement à l'installation on voudra créer un raccourci (monappli.desktop) dans le menu et y associer une icône (monappli_icon.png).

monappli /usr/bin
monappli-0.1.0.jar /usr/lib/monappli
monappli.png /usr/lib/monappli
monappli.desktop /usr/share/applications
monappli_icon.png /usr/share/pixmaps

Ci-dessous un exemple de fichier monappli.desktop

Version=0.1.0
Name=monappli
Comment=Simple tool
Exec=monappli
Icon=monappli_icon
Terminal=false
Type=Application
Categories=Utility
Keywords=Utility
StartupNotify=true

Autres éléments

Il reste à copier dans le répertoire $PPA_HOME/monappli/monappli-0.1.0 tous les fichiers nécessaires au fonctionnement de l'application (jar, shell, ressources, icône, .desktop, …). Vous pouvez également prévoir un répertoire src pour le source.

L'ensemble est désormais prêt à être packagé.

Sous $PPA_HOME/monappli/monappli-0.1.0 :

debuild -S

L'exécution de cette commande crée un ensemble de fichier sous $PPA_HOME/monappli :

  • monappli_0.1.0.dsc : descriptif technique du paquet
  • monappli_0.1.0_source.build : journal d'exécution du build
  • monappli_0.1.0_source.changes : autre descriptif technique du paquet
  • monappli_0.1.0.tar.gz : le package proprement dit

A noter que lors de l'exécution le programme vous demandera la passphrase que vous avez utilisé pour créer la clef GPG.

Il ne reste plus qu'à uploader le package sur launchpad.net. Sous $PPA_HOME/monappli/monappli-0.1.0:

dput ppa:monlaunchpad/monppa ../monappli_0.1.0_source.changes

A la suite de cette commande, les fichiers (.tar.gz, .dsc, .changes) sont chargés sur launchpad.net. Un mail vous est envoyé sur moi@email.com pour vous indiquer que la paquet a été accepté dans launchpad.net. En vous connectant sur https://launchpad.net/~monlaunchpad/+archive/ubuntu/monppa vous devez voir votre package.

Par contre il n'est pas forcément directement opérationnel car des process en background sur launchpad vont construire des paquets .deb directement opérationnels (1 en amd64, 1 en i386) ce qui peut prendre un peu de temps (de quelques minutes à 1h).

Cliquer sur le lien "view package details".

Une liste cliquable des paquets apparait. En cliquant sur le lien "monappli-0.1.1", vous voyez apparaitre le détail du package : au minimum un fichier .dsc et un .tar.gz. Si launchpad a déjà effectué son travail vous voyez également un fichier amd64.deb et un i386.deb, sinon il faut attendre.

Pour pouvoir installer l'application monappli il faut ajouter le ppa à votre liste :

sudo add-apt-repository ppa:monlaunchpad/monppa 
sudo apt-get update

Il reste à installer l'application via le gestionnaire de logiciel ou via la ligne de commande :

sudo apt-get install monappli

Si vous faites évoluer votre application, pour publier la version suivante, il suffit de copier le sous-répertoire de la dernière version, d'en actualiser le contenu (fichiers changelog, control, install, …) et de reprendre les commandes depuis l'étape "debuild : construction du package". Par exemple sous $PPA_HOME/monappli :

cp -r monappli_0.1.0 monappli_0.2.0
  • tutoriel/comment_publier_une_application_java.txt
  • Dernière modification: Le 06/04/2020, 09:29
  • (modification externe)