Photo de profil

Raphaël Le Puillandre

Linux Package Maker

Linux Package Maker est une application permettant de construire des packages d'installation afin de distribuer des applications sous (quasiment) n'importe quelle distribution Linux.

Linux Package Maker a été créé comme solution à un problème largement connu et admis : il est difficile voire parfois impossible de distribuer une application Linux qui fonctionnera automatiquement sans problèmes sur n'importe quelle distribution. La force de Linux est aussi sa faiblesse : chaque éditeur de distribution a une totale liberté sur les programmes, fonctionnalités, spécificités qu'il décide d'inclure dans sa distribution. Cela résulte en de grandes différences entre distributions qui sont la source de problèmes d'incompatibilités des applications.

Chaque distribution Linux vient avec son propre gestionnaire de paquets qui permet en une seule commande d'installer une application, et de résoudre proprement et efficacement les dépendances en bibliothèques des ces applications.

Au sein d'une même distribution, les problèmes d'incompatibilités se résument aux problèmes liés aux dépendances (les bibliothèques dynamiques nécessitées par un logiciel pour fonctionner). Les gestionnaires de paquets propres à chaque distribution prennent en charge ce problème en installant automatiquement les bilbliothèques nécessaires à une application pour fonctionner.

Ainsi, le problème de la distribution d'applications est partiellement résolu au sein d'une même distribution. Mais dès lors que l'on désire distribuer une application de la même manière sur plusieurs distributions Linux, les gestionnaires de paquets propres à chaque distribution ne sont d'aucun secours. Il faut donc soit créer un nouveau moyen de gérer les bibliothèques dynamiques de la même manière sur chaque distribution Linux afin de créer un runtime unifié et fonctionnant de la même manière partout, soit abandonner le défi du partage de bilbliothèques et inclure toutes les dépendances dans le paquet de l'application lors de sa distribution.

On retrouve différents représentants de ces deux approches sur différents systèmes d'exploitation. Sur Windows et sur MacOS, le choix a été fait de distribuer des applications contenant directement toutes leurs dépendances. C'est également le mode de fonctionnement des fichiers AppImage et du gestionnaire de paquets Snap sous Linux.

Le gestionnaire de paquets Flatpak (Linux) en revanche gère intelligemment le partage de bibliothèques dynamiques.

On remarque que les solutions de distributions globalisée d'applications gérant le partage de bibliothèques sont rares, à la fois à cause de leur complexité, mais également à cause des potentiels problèmes qui peuvent subsister.

Malgré cette différence de choix de fonctionnement, AppImage, Snap et Flatpak représentent des solutions viables et largement utilisées au problème que résout Linux Package Maker. Mais Linux Package Maker se distingue de tous ses concurrents sur un certain nombre de points, ce qui peut en faire un choix de premier plan dans certains cas.

Snap et Flatpak sont des gestionnaires de paquets. Cela signifie que pour installer un paquet Snap ou Flatpak, il faut nécessairement avoir au préalable installé le gestionnaire de paquets. Cela crée une couche complexe de logiciels et de dépendances qu'il n'est pas nécessaire d'avoir.

Au contraire, et à la manière de Windows, on peut distribuer des applications sous la forme de simples exécutables et qui embarquent avec elles toute l'infrastructure nécessaire à leur propre installation. Cela résulte en plus de libertés du côté de celui qui distribue son application : l'exécutable auto-installable est suffisant pour gérer entièrement l'installation de l'application. L'application se distribue sans aucune dépendance extérieure, et fonctionne d'elle-même.

Les applications AppImage ne sont pas sujettes à cette dépendance envers le gestionnaire de paquets, et la philosophie de AppImage se rapproche de ces exécutables auto-installables. AppImage résout avec succès le problème des dépendances ainsi que celui de la distribution multiplateforme. Mais le problème de l'installation autonome est contourné en faisant le choix de ne pas rendre les AppImage installables. Un AppImage est un exécutable qui lance l'application, et c'est tout. Ainsi l'intégration au système n'est que très partielle. Donc même si AppImage permet bien de distribuer des programmes sur des distributions Linux arbitraires, ces programmes ne sont en réalité pas des applications. C'est pourquoi AppImage n'est pas réellement considéré comme résolvant le problème de la distribution d'applications. Cependant vous verrez par la suite qu'il peut être combiné avec d'autres solutions moins complètes (telles que Linux Package Maker) afin de créer une solution réelle et complète.

Linux Package Maker a été créé pour un seul but : être la solution de distribution d'applications la plus simple possible, tant pour celui qui développe une application, que pour celui qui veut l'installer.

Ainsi le choix a été fait pour Linux Package Maker de distribuer les applications sous forme de simples exécutables, car c'est la seule manière de procéder qui fonctionne sans gestionnaire de paquets préalablement installé (donc sur n'importe quelle distribution Linux), tout en donnant le moins de travail possible à l'utilisateur pour l'installation et la désinstallation.

Linux Package Maker crée des packages avec comme extension .lpk (Linux Package) afin d'être reconnaissable, mais il s'agit en réalité de simples fichiers exécutables au format ELF.

Comment fonctionne Linux Package Maker ?

Linux Package Maker dispose d'un certain nombre de fonctionnalités souvent utiles, comme la possibilité de fournir une description pour l'application, d'exposer des commandes pour lancer l'application, une catégorie, une icône, mais les seules obligations pour empaqueter une application sont un nom, et le dossier contenant toute l'arborescence de l'application (c'est-à-dire un dossier contenant toutes les données nécessaires au fonctionnement de l'application telles que les exécutables, les librairies, les fichiers de configuration, de données, ...)

Il suffit de renseigner ces informations dans un fichier de configuration, puis de lancer la création de l'application avec la commande lpm build fichier_config.yaml

Ce procédé est déjà plus simple que la totalité des solutions actuelles permettant de distribuer des applications. Mais afin de rendre le procédé encore plus simple, Linux Package Maker dispose d'une interface graphique permettant de remplir ces tâches sans écrire le moindre fichier de configuration et sans ouvrir le moindre terminal. En trois clics de bouton, on peut packager une application sous Linux grâce à Linux Package Maker.

Plus d'informations sur l'utilisation et le fonctionnement de Linux Package Maker.

Combiner Linux Package Maker avec d'autres outils

Linux Package Maker est conçu comme étant une étape dans le processus de build d'une application (la dernière étape). Ainsi il peut facilement être inclus dans un script de build d'une application afin de gérer le packaging final de celle-ci.

Contrairement à Snap par exemple qui propose de gérer le processus de build entier dans son fichier de configuration, la philosophie de Linux Package Maker est différente, et plus proche de la philosophie Linux en général ; celle consistant à créer des programmes modulaires, facile à intégrer entre eux, et dont le but est résoudre une tâche bien précise.

Linux Package Maker a donc pour unique but de construire le package d'installation final d'une application, mais pas de construire l'application dans son entièreté.

Une conséquence de cela est que Linux Package Maker ne gère pas nativement les dépendances. Il se contente d'empaqueter un dossier contenant déjà toutes les dépendances de l'application.

Afin de résoudre le problème des dépendances, on peut par exemple combiner Linux Package Maker et AppImage. On peut utiliser AppImage afin de regrouper l'application et ses dépendances dans un seul exécutable contenant toute l'application, puis packager ce fichier AppImage grâce à Linux Package Maker, et en faire une véritable application, installable, désinstallable et exécutable facilement.