Pas vraiment, c'est beaucoup moins évolué. AppImage, c'est simplement une image disque (nécessite fuse) qui contiens, comme tu l'indiques ensuite, d'une part le binaire, et d'autre part une partie des ressources dont le binaire à besoin, ce qui implique généralement une partie des bibliothèques partagées.
Bon, c'est plus qu'une image disque, puisque ça s'exécute, donc il y a une sorte de "bootloader", qui va également indiquer ou sont les libs à l'intérieur (on ne peux pas compter sur le ld de la distrib pour ça, l'organisation est probablement différente entre le côté "natif" et le côté "embarqué").
Autre point de différence par rapport à docker: pas de gestion de namespace, de cgroups et autres, sauf si c'est fait par l'appimage elle-même (peu probable), c'est donc "moins sécurisé". D'un autre côté, c'est aussi nettement plus simple techniquement et portable, ce qui a des avantages non-négligeables.
Le logiciel de ta distribution, lui pourra utiliser les bibliothèques prechargées par un autre logiciel si c'est le cas, sinon devra aussi charger les bibliothques nécessaires.
C'est valable également pour une partie des libs de l'appimage, celle-ci se reposant partiellement sur le système.
C'est d'ailleurs un point que j'ai tendance a reprocher tout en connaissant une partie de la réponse: pourquoi ne pas juste lier statiquement les libs partagées? Ça mènerait à une amélioration des performances après tout. Bon, la réponse, c'set que les écosystèmes C et C++ sont tellement partis dans le délire du link dynamique depuis tellement longtemps que lier en statique est bien souvent méga pénible et expose a des tonnes d'emmerdes.
Pour ce qui est de la performance, on pourrait avoir de meilleurs performances avec une appimage comparé à une installation système, sur un disque dur mécanique, du au fait que les données de l'appimage seront plus groupée, donc moins de déplacement de la tête de lecture.
Plus trop d'actualité, et l'impact est assez mineur (appimage sert surtout pour des applications de bureau à ma connaissance). Le reste, le travail de ld, ben... ça c'est totalement aléatoire: si le dev à lié en statique le binaire dans l'appimage (pourquoi pas, après tout? ça permets d'avoir les données à côté et le fichier est simple a "installer" et exécuter: chmod +x $foo && ./$foo) alors il y a fort à parier que les performances soient plus élevée. Mais la distro aussi pourrait lier en statique.
Il y a aussi, bien sûr, de nombreux autres facteurs: options de compilation, compilateur utilisé, différence de version des libs chargées par l'un ou l'autre... tout peut impacter la performance, donc on peut pas chiffre.
[^] # Re: delicat à chiffrer
Posté par freem . En réponse au message Différence entre une application AppImage et une application installée. Évalué à 6.
Pas vraiment, c'est beaucoup moins évolué. AppImage, c'est simplement une image disque (nécessite fuse) qui contiens, comme tu l'indiques ensuite, d'une part le binaire, et d'autre part une partie des ressources dont le binaire à besoin, ce qui implique généralement une partie des bibliothèques partagées.
Bon, c'est plus qu'une image disque, puisque ça s'exécute, donc il y a une sorte de "bootloader", qui va également indiquer ou sont les libs à l'intérieur (on ne peux pas compter sur le ld de la distrib pour ça, l'organisation est probablement différente entre le côté "natif" et le côté "embarqué").
Autre point de différence par rapport à docker: pas de gestion de namespace, de cgroups et autres, sauf si c'est fait par l'appimage elle-même (peu probable), c'est donc "moins sécurisé". D'un autre côté, c'est aussi nettement plus simple techniquement et portable, ce qui a des avantages non-négligeables.
C'est valable également pour une partie des libs de l'appimage, celle-ci se reposant partiellement sur le système.
C'est d'ailleurs un point que j'ai tendance a reprocher tout en connaissant une partie de la réponse: pourquoi ne pas juste lier statiquement les libs partagées? Ça mènerait à une amélioration des performances après tout. Bon, la réponse, c'set que les écosystèmes C et C++ sont tellement partis dans le délire du link dynamique depuis tellement longtemps que lier en statique est bien souvent méga pénible et expose a des tonnes d'emmerdes.
Pour ce qui est de la performance, on pourrait avoir de meilleurs performances avec une appimage comparé à une installation système, sur un disque dur mécanique, du au fait que les données de l'appimage seront plus groupée, donc moins de déplacement de la tête de lecture.
Plus trop d'actualité, et l'impact est assez mineur (appimage sert surtout pour des applications de bureau à ma connaissance). Le reste, le travail de
ld, ben... ça c'est totalement aléatoire: si le dev à lié en statique le binaire dans l'appimage (pourquoi pas, après tout? ça permets d'avoir les données à côté et le fichier est simple a "installer" et exécuter:chmod +x $foo && ./$foo) alors il y a fort à parier que les performances soient plus élevée. Mais la distro aussi pourrait lier en statique.Il y a aussi, bien sûr, de nombreux autres facteurs: options de compilation, compilateur utilisé, différence de version des libs chargées par l'un ou l'autre... tout peut impacter la performance, donc on peut pas chiffre.