{{tag>application format paquet}}
{{ https://upload.wikimedia.org/wikipedia/commons/thumb/7/73/App-image-logo.svg/220px-App-image-logo.svg.png?100}}
====== Appimage ======
Le format de paquets **Appimage** ([[wpfr>appimage|voir sur Wikipédia]]) permet de distribuer des logiciels de manière portable sur n’importe quelle distribution Linux, y compris Ubuntu.
Le but est de pouvoir déployer des applications par une procédure simple, assurant une grande compatibilité et évitant d’altérer le système hôte.
===== Avantages et inconvénients =====
==== Avantages ====
La grande force du format **Appimage** réside dans le fait qu’il n’exige aucun pré-requis pour utiliser un fichier Appimage, autre que bien sûr une connexion à Internet, ainsi que la librairie [[:FUSE]] :
* **Installation par un compte utilisateur standard** : aucun droit d’administration n’est nécessaire ;
* **Gestion par un seul fichier de tout le logiciel** : aucun paquet et aucune bibliothèque ne sont à installer au préalable, à part le paquet ''[[apt>libfuse2]]'' ou ''[[apt>libfuse2t64]]'' (voir [[#Installer une Appimage|ci-dessous]]) quand il ne l'est pas déjà. L'Appimage embarque ses propres dépendances. Cela permet à des applications assez anciennes de continuer à fonctionner alors que, pour des raisons d’obsolescence, leurs dépendances ont été retirées des versions plus récentes du système Ubuntu. À l’inverse, cela permet aussi de disposer de manière anticipée d'une nouvelle version pas encore disponible dans les [[:dépôts]] officiels d'Ubuntu.
==== Inconvénients ====
Le format **AppImage** a 6 principaux inconvénients :
- **Pas d'automatisation de la mise à jour** : les nouvelles fonctionnalités et les corrections de failles de sécurité seront disponibles dans les nouvelles versions à récupérer et à déployer de manière manuelle ;
- **Pas d'intégration au système** : à moins que l'installation soit gérée par l'application AppImage elle-même (ce qui est rarement le cas), aucune entrée ne sera ajoutée dans le menu des applications, et si l'AppImage ne l'a pas intégrée aucune icône ne sera affichée pour l'application une fois lancée (en fonction du pack d'icônes utilisée elle sera par exemple remplacée par un engrenage). Certains utilitaires tels que **AppImage Launcher** permettent de remédier à ces deux premiers inconvénients – voir ci-dessous la section concernant l'[[#intégration au bureau]] ;
- **Fichier plus volumineux** : un paquet AppImage embarque ses dépendances. Cela conduit à un plus grand nombre de fichiers inclus et à un plus grand espace occupé par rapport à l’équivalent au format [[:deb]] ;
- **Démarrage moins rapide** : le lancement du logiciel s’avère un peu plus lent que pour un logiciel classique au format [[:deb]] issu des [[:dépôts]] ;
- **Sécurité plus incertaine** : un éditeur de distribution contrôle les paquets qu'il publie dans ses dépôts. Cela réduit le risque de défectueux (//bugués//) ou malveillants (logiciels espions, //malwares//, etc.). Un fichier AppImage peut être téléchargé depuis n'importe quel site Internet, sans le contrôle d'une équipe de distribution. Le logiciel récupéré représente ainsi un risque de sécurité notable.
Dans ces conditions mieux vaut généralement lui préférer les formats [[:snap]] et [[:Flatpak]], qui offrent les mêmes avantages sans la plupart des inconvénients (dépôts centralisés, mises à jour automatiques).\\
Cependant au-delà de ces avantages et inconvénients, certains (rares) logiciels sont publiés uniquement dans ce format. Le choix ne se pose alors plus.
===== Installer une Appimage =====
L'installation se déroule en quelques étapes :
- À partir de la version Ubuntu [[:noble|Noble 24.04]], l'[[:tutoriel:comment_installer_un_paquet|installation du paquet]] ''[[apt>libfuse2t64]]'' est un pré-requis à l'utilisation d'une Appimage (à faire une seule fois sur chaque système Ubuntu). Pour Ubuntu [[:jammy|Jammy 22.04]], c'est le paquet ''[[apt>libfuse2]]'' qu'il faut [[:tutoriel:comment_installer_un_paquet|installer]]. Il était installé par défaut sur les versions précédentes.
- Récupérer le fichier AppImage du logiciel souhaité, en le téléchargeant sur Internet (attention à la confiance qu'on accorde au site : vérifier l'utilisation du protocole HTTPS, et que le nom de domaine soit bien celui de l'éditeur ou d'une [[:git#principaux_depots_git|forge Git]]) ;
- Déposer le fichier dans un répertoire quelconque (on recommande généralement de créer un répertoire ''~/Applications''(([[wpfr>Stack Exchange Network|Ask Ubuntu]] : //[[https://askubuntu.com/a/1106044|Where should I put .Appimages files?]]//))) ;
- Autoriser son exécution (clic-droit sur le fichier AppImage -> //Propriétés// -> //Permissions// -> autoriser l'//exécution//) ;
- (Optionnel) créer un [[:raccourci-lanceur|lanceur]] qui fera apparaître le programme dans votre menu des applications. Sinon, pour démarrer le fichier AppImage, double-cliquer sur le fichier depuis un [[:gestionnaire de fichiers]].
**Automatisation** : l’application **[[#AppImageLauncher]]** ou le service **[[#go_appimageappimaged|appimaged]]** permettent de gérer les points 4 et 5 automatiquement (autoriser l’exécution et créer un raccourci dans le menu d’Ubuntu) :
* le fichier AppImage est activé en exécution ;
* une icône est créée dans le menu Ubuntu sans vous poser de question ;
* le programme AppImage est déplacé dans le répertoire que vous aurez défini dans les paramètres ;
* enfin, //si// l'application au format AppImage présente une fonctionnalité de mise à jour distante, une offre de mise à jour vers une éventuelle nouvelle version est proposée.
Ces logiciels simplifient donc fortement l’installation et la mise à jour des fichiers AppImage.
==== Se procurer le fichier ====
Il faut tout d'abord se procurer le fichier AppImage de l'application qu'on veut utiliser. Vous pouvez le télécharger, ou l'amener sur votre ordinateur via une clé USB. Les fichiers en question n'ont hélas pas toujours l'extension ''.appimage'' ce qui ne facilite pas la compréhension de ce format par les débutants.
AppImage est le seul format de packaging existant sans gestionnaire de paquet ni dépôt : il faut chercher les applications en ligne soi-même, **faites attention à la fiabilité du site** sur lequel vous vous procurez l'AppImage.
Si on peut ponctuellement se procurer des logiciels Appimage sur le site officiel du développeur de l'application, sachez qu'il existe un « Appimage Store » officiel. [[https://appimage.github.io/apps/|Le AppimageHub officiel Linux]].\\
Il y a aussi le site [[https://apprepo.de]] qui en propose bon nombre en précisant bien **À vos risques et périls**
Des logiciels comme par exemple [[:Krita]]((Exemple d'application disponible au format AppImage : https://krita.org/fr/telechargement/krita-desktop/)), Subsurface, [[:kdenlive]] ou [[:Openshot]] fournissent les fichiers AppImage directement sur leur page web officielle, on peut donc leur faire confiance.
Arduino, [[:Blender]], Chromium, [[:Firefox]] ou encore [[:LibreOffice]] disposent aussi d'une installation par AppImage si besoin, mais de manière moins officielle((Le site https://bintray.com/probono/AppImages fournit des AppImages pour divers logiciels, avec l'aval et la confiance d'appimage.org)).
==== Modification des permissions ====
Tout d'abord, placez vos fichiers AppImage dans un dossier où ils pourront rester : si vous les supprimez par erreur, l'application sera supprimée !
Il va falloir **[[:permissions#modifier_les_permissions|rendre le fichier exécutable]]**. Cela peut être fait :
* Graphiquement (//clic-droit sur l'AppImage -> Propriétés -> Permissions -> Autoriser l'exécution//) ;
* En ligne de commande (pour une application fictive nommée truc) : \\ chmod a+x truc.appImage
Le format AppImage est en fait une archive, qui contient le logiciel et toutes les bibliothèques dont il dépend, si vous oubliez de le rendre exécutable, l'archive se montera comme un simple disque amovible, explorable avec un gestionnaire de fichiers !
===== Lancer un AppImage =====
Pour lancer un AppImage, il existe 4 possibilités :
- double cliquer sur le fichier AppImage.
- en ligne de commande, taper le nom du programme avec tout le chemin qui y mène. Par exemple pour Audacity, si ce dernier se trouve dans un répertoire **/Documents/appimage/**, il faudra taper : **~/Documents/appimage/audacity-linux-3.1.3-x86_64.AppImage**
- Créer __automatiquement__ un [[raccourci-lanceur|lanceur]] dans le menu des applications Ubuntu via le programme **Appimage Launcher** (cf. chapitre 2).
- Créer __manuellement__ un [[raccourci-lanceur|lanceur]], qu'on placera dans le répertoire caché **~/.local/share/applications/**, et qui apparaitra ainsi dans le menu des applications Ubuntu. Pour créer ce lanceur, créer un fichier au format texte que vous appellerez **//nom_du_programme//.desktop**. Dans ce fichier, collez les commandes suivantes (l'exemple ci-dessous est avec le programme [[audacity|Audacity]], adaptez-le à vos besoins) :
[Desktop Entry]
Encoding=UTF-8
Type=Application
Categories=Audio;AudioVideo;
Name=Audacity
Comment=Editions de fichiers audio
Exec=/home//Documents/appimage/audacity-linux-3.1.3-x86_64.AppImage
Icon=audacity
StartupNotify=false
Terminal=false
Hidden=false
===== Désinstaller un AppImage=====
Pour supprimer une application installée par ce format, il suffit de supprimer son fichier AppImage, tout simplement.
Effacez aussi le lanceur (s'il existe), qui est probablement dans **~/.local/share/applications/**.
===== Intégration au bureau =====
Les logiciels fournis dans ce format sont généralement directement des applications exécutables, et pas des installateurs. Ils ne sont pas directement intégrés au système, et ne sont par exemple pas présents dans les menus. Il faut manuellement [[:raccourci-lanceur|créer un lanceur]] vers le fichier AppImage concerné.
Certains logiciels (comme //Etcher//, //Motrix// ou //[[:Molotov]]//) proposent, au moment de la première utilisation, de créer un lanceur automatiquement, ça reste cependant une pratique peu répandue.
Nous vous conseillons de créer un répertoire AppImage dans Documents et y sauvegarder également les icônes de vos applications, afin de faciliter la création des lanceurs.
Il existe diverses applications d'intégration des paquets **AppImage** au sein des différentes interfaces graphiques d'Ubuntu, entre lesquelles il faut //choisir// (elles sont généralement incompatibles les unes avec les autres) :
==== AppImage Pool ====
**[[https://github.com/prateekmedia/appimagepool|AppImage Pool]]** est un client graphique simple pour [[https://www.appimagehub.com|AppImageHub]]. Il est disponible en AppImage, ainsi que sur le dépôt [[https://flathub.org/apps/io.github.prateekmedia.appimagepool|Flathub]] et peut donc s'installer en suivant [[:tutoriel:installer_application_flatpak|cette procédure]] puis en installant le paquet ''io.github.prateekmedia.appimagepool''.
Il permet de parcourir et de télécharger des AppImages depuis un dépôt centralisé. Puis d'intégrer les AppImages à l'environnement de bureau et de les mettre à jour ou de les désinstaller.
Il propose de définir chaque répertoire indépendamment, pour les AppImages, pour les //launchers//, et pour les icônes.
==== Levier de vitesse (Gear Lever en VO) ====
**[[https://github.com/mijorus/gearlever|Gear Lever]]** permet d'intégrer les AppImages au bureau, en téléchargeant des îcones et créant des lanceurs. Il est aussi disponible sur le dépôt [[https://flathub.org/apps/it.mijorus.gearlever|Flathub]] et peut donc s'installer en suivant [[:tutoriel:installer_application_flatpak|cette procédure]] puis en installant le paquet ''it.mijorus.gearlever''.
Il permet de choisir le répertoire des AppImages et y enregistre les icônes dans un sous-répertoire ''.icons''. Il détecte les AppImages dans les //launchers// existants, il faut malheureusement ajouter les autres manuellement un par un.
==== Go AppImage / appimaged ====
[[https://github.com/probonopd/go-appimage|Go AppImage]] est un ensemble d'outils développés par le créateur du format Appimage incluant **appimaged**. Celui-ci est un service permettant de rendre exécutable et d'intégrer automatiquement les applications Appimage à l'[[:environnements|environnement de bureau]]. C'est une solution plus moderne que **[[#AppImageLauncher]]**, et généralement recommandée.
La procédure pour l'installer est décrite en anglais sur [[https://github.com/probonopd/go-appimage/blob/master/src/appimaged/README.md|cette page]] :
# Supprimer les éventuels outils pré-existants susceptibles d'entrer en conflit
systemctl --user stop appimaged.service || true
sudo apt-get -y purge appimagelauncher || true
[ -f ~/.config/systemd/user/default.target.wants/appimagelauncherd.service ] && rm ~/.config/systemd/user/default.target.wants/appimagelauncherd.service
# Videz le cache
rm "$HOME"/.local/share/applications/appimage*
# Installez Firejail si vous le souhaitez (fournit des fonctionnalités de sandboxing)
# Téléchargez
mkdir -p ~/Applications
wget -c https://github.com/$(wget -q https://github.com/probonopd/go-appimage/releases/expanded_assets/continuous -O - | grep "appimaged-.*-x86_64.AppImage" | head -n 1 | cut -d '"' -f 2) -P ~/Applications/
chmod +x ~/Applications/appimaged-*.AppImage
# Lancez
~/Applications/appimaged-*.AppImage
Le fichier ''%%~/Applications/appimaged-***.AppImage%%'' est un //wrapper// pour les autres AppImages (une "pseudo application" qui sert à lancer les applications réelles).
On peut vérifier le bon fonctionnement du service avec la commande :
systemctl --user status appimaged
Ce service détecte les fichiers **AppImage** téléchargés, les rend exécutables, et créé automatiquement un [[:raccourci-lanceur|lanceur]] ''%%appimagekit_***.desktop%%'' dans le répertoire ''~/.local/share/applications'' (donc une icône / raccourci pour l'application). Ce lanceur est aussi supprimé ou mis à jour automatiquement avec le fichier AppImage de l'application.
==== AppImageLauncher ====
**[[https://github.com/TheAssassin/AppImageLauncher|AppImageLauncher]]** et **[[#go_appimageappimaged|appimaged]]** sont les gestionnaires généralement recommandés pour la gestion des paquets AppImages.(([[https://appimage.org|Documentation officielle]] : //Integrating AppImages into the desktop// -> //[[https://docs.appimage.org/user-guide/run-appimages.html#appimagelauncher|AppImageLauncher]]//))((se référer à [[https://www.linuxuprising.com/2018/04/easily-run-and-integrate-appimage-files.html|Easily Run And Integrate AppImage Files With AppImageLauncher]] \\ — site : Linuxuprising.com ; auteur : logix ; date : 17 juillet 2018.)) Ils ne sont cependant pas compatibles l'un avec l'autre !
Télécharger le paquet compilé ''.deb'' sur la page Github dédiée //[[https://github.com/TheAssassin/AppImageLauncher/releases|AppImageLauncher release builds]]// (la version AMD64 convient sur les ordinateurs classiques). Puis l’installer, la démarrer (**AppImage Launcher Settings**) et la paramétrer. Désormais un programme résident scrute le démarrage de toute AppImage pour procéder automatiquement à son intégration au système.
Cette application déplacera les icônes dans les répertoires correspondants si elles existent, mais n'en créera pas. Si l'AppImage n'en intègre pas, une roue crantée sera affichée en guise d’icône pour l'application (en fonction de votre pack d'icône).
==== Bauh ====
[[:Bauh]] est une alternative à [[#Go AppImage|Appimaged]] et [[#AppImageLauncher]], avec lesquels il est incompatible, qui gère de plus [[:flatpak]] et [[:snap]].
Si vous avez installé AppImageLauncher manuellement et que vous désirez suivre nos recommandations et souhaitez installer Bauh afin de bénéficier d'un gestionnaire stable pour les fichiers Snaps, Flatpak et AppImage, entrer cette commande dans un terminal :
sudo find / -type f -name "[Aa]pp[Ii]mage[Ll]auncher" -exec rm -f '{}' \;
sudo find / -type f -name "[Aa]ppimaged" -exec rm -f '{}' \;
En effet, vous devez désinstaller toute trace de ces deux logiciels avant l'utilisation du module AppImage de Bauh. \\
Rendez-vous sur [[:bauh|la page de Bauh]].
==== AppImageUpdate ====
[[https://github.com/AppImageCommunity/AppImageUpdate|AppImageUpdate]] permet de mettre à jour automatiquement certaines AppImages.
===== Problèmes connus =====
==== FUSE ====
A partir de la version [[:jammy|Jammy 22.04]], Ubuntu n'inclut plus la librairie [[:FUSE]] en version 2 (''libfuse.so.2''), qui est pourtant nécessaire à l'exécution des anciennes Appimages, malheureusement encore souvent d'actualité.
Les nouvelles Appimage (de [[https://github.com/TheAssassin/type3-runtime|type 3]]) sont conçues pour fonctionner avec la librairie [[:FUSE]] en version 3, qui est désormais installée par défaut sur Ubuntu.
=== Ubuntu 22.04 ===
Ubuntu [[:jammy|Jammy 22.04]] n'inclut plus la librairie ''libfuse.so.2'' (mais la version 3). Pour pouvoir exécuter une ancienne AppImage il est nécessaire d'[[:tutoriel:comment_installer_un_paquet|installer le paquet]] ''[[apt>libfuse2]]'', mais cela crée parfois la casse du bureau Gnome !((voir ce [[https://bugs.launchpad.net/ubuntu/+source/fuse/+bug/1717878|rapport de bug]]))
=== Ubuntu 24.04 ===
Ubuntu [[:noble|Noble 24.04]] n'inclut plus non plus la librairie ''libfuse.so.2'' (mais aussi la version 3). Pour pouvoir exécuter une ancienne AppImage il est nécessaire d'[[:tutoriel:comment_installer_un_paquet|installer le paquet]] ''[[apt>libfuse2t64]]''.((It's FOSS : //[[https://itsfoss.com/cant-run-appimage-ubuntu/|Can't Run AppImage on Ubuntu? Here's How to Fix it]]//))
===== Voir aussi =====
* [[https://appimage.org/|Site du Projet]]
* [[https://bintray.com/probono/AppImages|Divers fichiers AppImage disponibles au téléchargement]]
* **[[https://github.com/linuxdeploy/linuxdeploy|linuxdeploy]]** est un outil créé en 2018 pour la création et la maintenance d'AppImages.
-----
//Contributeurs : [[:utilisateurs:roschan]], [[:utilisateurs:krodelabestiole]]//