Tout d’abord, nous allons commencer par modifier un peu notre programme. En effet, une fois installé, le chemin du dossier data ne sera pas le même que nous utilisions auparavant. Pour cela, on va faire simple. On va commencer par modifier le script shell permettant de lancer le programme. On commence par enlever son extension .sh qui ne sert pas à grand chose et qui va faire tâche une fois que ce script va se retrouver avec tous les autres déjà présents. Enfin on change les 2 premières lignes non commentées par celles-ci.
CLASSPATH=${CLASSPATH}:/usr/share/password-generator/data/gtk-4.0.jar
CLASSPATH=${CLASSPATH}:/usr/share/password-generator/passgenerator.jar


Maintenant, au tour des chemins qui se trouvent dans le code Java. Pour les modifier, on va créer une variable globale contenant le chemin, il ne restera ainsi qu’à concaténer le nom d’un fichier en cas de besoin. On ouvre alors le fichier PasswordGenerator.java. On ajoute tout de suite après la première accolade ceci.
public static final String DATA_PATH = "/usr/share/password-generator/data/";

On enregistre, puis on ouvre le fichier GtkInterface.java. On ajoute l’import suivant.
import static generator.PasswordGenerator.DATA_PATH;

On change la valeur du champ GLADE_FILE par celle-ci DATA_PATH + "PasswordGenerator.glade". Puis on cherche la ligne :
icon = new Pixbuf("./data/lock-logo.png");
Pour la remplacer par celle la.
icon = new Pixbuf(DATA_PATH + "lock-logo.png");

Il ne reste alors qu’à enregistrer.

Il faut maintenant compiler notre application. Pour ceci, on utilise le script Ant. Il faut donc que Ant soit installé (voir ce billet si ce n’est pas le cas). On se rend dans le dossier contenant le projet et on compile.
~$ cd workspace/PasswordGenerator
~/workspace/PasswordGenerator$ ant clean dist


On trouve alors un fichier passgenerator.zip dans le dossier build créé. On le récupère et le met dans notre répertoire perso. On en extrait tous les fichiers.
~$ unzip passgenerator.zip

Pour former un paquet Debian, il faut que l’on respecte une arborescence entre dossiers et sous-dossiers bien précise. Toujours dans le répertoire personnel, on crée le dossier password-generator.
~$ mkdir password-generator

Ce dossier doit contenir 2 sous-dossiers nommés respectivement DEBIAN et usr.
Commençons par nous intéresser au dossier DEBIAN et à son contenu. Il faut tout d’abord le créer et l’utiliser.
~$ mkdir password-generator/DEBIAN && cd password-generator/DEBIAN

A l’intérieur on va y déposer 3 fichiers : control, postinst et postrm.
Le fichier control permet de décrire le paquet : dépendances, description, nom, auteur et mainteneur du paquet… Voici son contenu pour nous.
Package: PasswordGenerator
Version: 1.0
Section: base
Priority: optional
Architecture: all
Depends: bash, sun-java6-jre
Maintainer: Guillaume Mazoyer <respawneral@gmail.com>
Description: Password generator written in Java and using GTK+.


Vous pouvez changer le nom du mainteneur du paquet, je ne vous en voudrais pas ^^. On remarque comme dépendances bash et sun-java6-jre (pour la JVM). On comprend vite comment ce fichier est utilisé une fois que l’on tente d’installer le paquet avec Gdebi.
Pour ce qui est de postinst et postrm, ce sont en fait 2 scripts. postinst est le script lancé après installation du paquet et postrm est le script exécuté après suppression du paquet. On va les utiliser entre autre pour créer le lanceur dans le menu GNOME et le supprimer. Dans la même veine, il est possible de créer les fichiers preinst et prerm qui correspondent aux scripts lancés avant installation et avant suppression.

Le fichier postinst va contenir ceci.
#!/bin/bash
LAUNCHER="/usr/share/applications/passgenerator.desktop"
touch $LAUNCHER
echo "[Desktop Entry]" > $LAUNCHER
echo "Name=Password Generator" >> $LAUNCHER
echo "Name[fr]=Générateur de mot de passe" >> $LAUNCHER
echo "Comment=Generate your passwords" >> $LAUNCHER
echo "Comment[fr]=Générez vos mots de passe" >> $LAUNCHER
echo "TryExec=passgenerator" >> $LAUNCHER
echo "Exec=passgenerator" >> $LAUNCHER
echo "Icon=gnome-lockscreen" >> $LAUNCHER
echo "Terminal=false" >> $LAUNCHER
echo "Type=Application" >> $LAUNCHER
echo "Categories=Utility;" >> $LAUNCHER
echo "MimeType=text/plain;" >> $LAUNCHER
echo "Password Generator successfully installed."


Et postrm lui contiendra ce code.
#!/bin/bash
LAUNCHER="/usr/share/applications/passgenerator.desktop"
rm $LAUNCHER
echo "Password Generator successfully uninstalled"


On crée le launcher et on le supprime ni plus ni moins.
A ce moment précis, les informations du paquet ainsi que le comportement d’installation et de suppression sont définis.

Il ne reste plus qu’à organiser correctement le contenu du dossier usr. Ce dernier va contenir 2 sous-dossiers nommés respectivement bin et share. A l’intérieur de bin, on mettre le script shell de lancement de notre programme (passgenerator). Le répertoire share lui va contenir un sous-répertoire nommé password-generator dans lequel on trouvera un dossier doc (contenant la documentation à réaliser comme vous le souhaitez), le dossier data et notre fichier JAR (passgenerator.jar). Ainsi lors de l’installation de notre paquet, le contenu de usr/bin ira dans /usr/bin (du système) et celui de usr/share ira de la même façon dans /usr/share (du système. On doit obtenir une arborescence comme celle-ci.

On n’oublie pas de rendre exécutable les scripts.
~/password-generator$ chmod 755 DEBIAN/post*
~/password-generator$ chmod 755 usr/bin/passgenerator


Il ne nous reste plus qu’à “packager” ceci. Pour cela, on se place dans le répertoire personnel. Et on utilise dpkg-deb.
~/password-generator$ cd ~
~$ dpkg-deb --build password-generator


On obtient alors le fichier password-generator.deb. On peut l’installer grâce à Gdebi ou encore avec la commande suivante.
~$ sudo dpkg -i password-generator.deb