Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
logiciels_portables_et_virtualisation_d_applications [Le 12/11/2009, 14:07] psychederic |
logiciels_portables_et_virtualisation_d_applications [Le 11/09/2022, 12:00] (Version actuelle) moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892) |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | {{tag>logiciel entreprise reseau securite administration serveur brouillon}} | + | {{tag>logiciels entreprise réseau sécurité administration serveur BROUILLON}} |
---- | ---- | ||
====== Logiciels portables et virtualisation d'applications sous Ubuntu Linux ====== | ====== Logiciels portables et virtualisation d'applications sous Ubuntu Linux ====== | ||
- | Les applications portables sont de plus en plus utilisées auprès du grand public pour leur avantage : | + | Les applications portables sont de plus en plus utilisées auprès du grand public pour leur avantage : |
- | * Pouvoir transporter son application, ses données, et sa configuration avec soi, par exemple sur une clés usb. | + | * Pouvoir transporter son application, ses données, et sa configuration avec soi, par exemple sur une clé USB. |
D'un point de vue plus technique : | D'un point de vue plus technique : | ||
- | * Cela permet de garder un système stable : **les applications virtualisées s'éxecutent dans leurs environnements et avec leurs dépendances** (aucune installation de librairie). | + | * Cela permet de garder un système stable : **les applications virtualisées s'exécutent dans leurs environnements et avec leurs dépendances** (aucune installation de librairie). |
Au niveau professionnel, la virtualisation d'applications peut garantir : | Au niveau professionnel, la virtualisation d'applications peut garantir : | ||
* La stabilité des applications. | * La stabilité des applications. | ||
- | * La sécurité et la mise à jour du parc informatique ( par exemple : en distribuant ces applications facilement par réseau en faisant du [[http://fr.wikipedia.org/wiki/Logiciel_en_tant_que_service|saas]], ou de l'[[http://en.wikipedia.org/wiki/Application_streaming|application à la demande]] ). | + | * La sécurité et la mise à jour du parc informatique (par exemple : en distribuant ces applications facilement par réseau, en faisant du [[https://fr.wikipedia.org/wiki/Logiciel_en_tant_que_service|saas]], ou de l'[[https://en.wikipedia.org/wiki/Application_streaming|application à la demande]]). |
- | Dernier avantage pour le monde linux : la virtualisation d'application permet de **distribuer des logiciels - quelque soit la version d'ubuntu, et même quelque soit la distribution linux**. | + | Dernier avantage pour le monde linux : la virtualisation d'applications permet de **distribuer des logiciels - quelle que soit la version d'ubuntu, et même quelle que soit la distribution linux**. (([[http://ldn.linuxfoundation.org/lsb/make-your-app-portable|(en)Make Your App Portable , linuxfoundation]])) |
- | La virtualisation d'applications est aussi utilisé pour les téléphones portables. | + | La virtualisation d'applications est aussi utilisée pour les téléphones portables. |
- | <note help>Note pour la compréhension complète du sujet : les applications portables peuvent être empaquetés ou non. | + | <note help>Note pour la compréhension complète du sujet : les applications portables peuvent être empaquetées ou non. |
- | En entreprise il serait préférable d'utiliser des applications empaquetés - et compatible linux nativement (sans logiciel tierce)((ce qui est fait avec thinapp sous windows entre autre)). | + | En entreprise il serait préférable d'utiliser des applications empaquetées - et compatibles linux nativement (sans logiciel tierce)((ce qui est fait avec thinapp sous windows entre autre)). |
- | Les applications portable connu du grand public ne sont que rarement empaqueté. | + | Les applications portables connues du grand public ne sont que rarement empaquetées. |
- | * L'avantage de l'empaquetage est que le paquet ne pourra être corrompue. (stabilité , sécurité, contrôle) | + | * L'avantage de l'empaquetage est que le paquet ne pourra être corrompu. (stabilité, sécurité, contrôle) |
- | * L'avantage de ne pas empaqueter est de permettre la mise à jour du logiciel, et ses dépendances facilement (voir même automatiquement par exemple avec firefox). | + | * L'avantage de ne pas empaqueter est de permettre la mise à jour du logiciel, et ses dépendances facilement (voire même automatiquement par exemple avec firefox). |
+ | |||
+ | **Toutes deux restent totalement portables** , et sauvegardent les configurations personnelles dans l'endroit spécifié : dans le même répertoire que l'application portable ou un autre répertoire. | ||
</note> | </note> | ||
Ligne 38: | Ligne 40: | ||
===== Solution Linux natif ===== | ===== Solution Linux natif ===== | ||
- | Concurrent de Vmware thinApps(windows), et des applications portable libre basé sur nsis (nullsoft), et autre. | + | Concurrent de Vmware thinApps(windows), et des applications portables libres basées sur nsis (nullsoft), et autres. |
+ | * [[CDE]] ([[http://www.pgbovine.net/cde.html|site]])([[http://linuxfr.org/redirect/69829.html|source]])([[http://vimeo.com/16684443|video]])(GNU GPL v3) basé sur strace, encapsule tous les fichiers nécessaires à l'exécution du binaire : Code, Données, Environnement. Ainsi, lors de l'exécution de la commande $ cde a.out sur la machine A, CDE va exécuter a.out, surveiller ses accès (bibliothèques dynamiques, fichiers de configuration, polices, etc.), copier ces fichiers dans un sous-répertoire et créer un fichier a.out.cde. L'ensemble des fichiers de ce sous-répertoire peut être transféré sur une machine B. Lors de l'exécution de a.out.cde, l'environnement est changé (comme avec chroot) et ce sont les bibliothèques fournies dans le sous-répertoire qui sont utilisées. | ||
+ | |||
==== Sites d'applications portables ==== | ==== Sites d'applications portables ==== | ||
+ | * [[http://www.portablelinuxapps.org/|PortableLinuxApps.com]] | ||
- | * [[http://www.portools.com/|Portable Apps for Linux(portools.com)]] | + | ==== Applications portables officielles ==== |
+ | ==== Méthode pour la création d'applications portables sous linux ==== | ||
- | ==== Méthode pour la création d'application portable sous linux ==== | + | === 0) Télécharger les scripts === |
- | + | ||
- | ===== Solutions avec une application tierce ===== | + | Vous pouvez télécharger les scripts, ou copier ce qui suit dans des fichiers (en leur donnant les droits d'exécution). |
- | Nécessite la présence de l'application tierce - l'exécuteur - ou l'emulateur ( qui n'est pas présente par défaut sur les distribution linux ) pour lancer le "logiciel portables" / l'application virtualisée. | + | **Les scripts ne demanderont pas les droits root, gage de non compromission possible du système.** |
+ | Vous n'aurez qu'à changer le nom du paquet que vous voulez rendre portable. (cela peut devenir plus compliqué avec des applications complexes). | ||
- | ====Klik ==== | + | === 1) Lister et copier les dépendances === |
- | * [[http://en.wikipedia.org/wiki/Klik_%28packaging_method%29|klik (packaging method - kde - sur wikipedia)]] | + | Lister les dépendances (exécuter dans la racine du projet) : |
- | ====Runz ==== | + | <code> |
- | * [[http://hacktolive.org/wiki/Portable_Applications_%28Linux%29|hacktolive.org]] | + | #!/bin/sh |
- | ====Zero Install ==== | + | # Version |
- | * [[http://en.wikipedia.org/wiki/Zero_Install|sur Wikipedia]] | + | # 1.0 Bêta : fonctionne même pour des applications relativement complexe. |
- | ====Wine + Application portable Windows ==== | + | # PortableApplicationCreator.sh Portable - portableTools for Linux |
+ | # | ||
+ | # Script Made by: | ||
+ | # Eric Chaudy (Psychederic) | ||
+ | # | ||
+ | # Licensed: | ||
+ | # PortableApplicationCreator - GNU GPLv2 ! | ||
- | En utilisant wine il serait possible d'émuler les applications portable windows : et peut être avec moins de problème de librairies manquantes. | ||
- | Cependant cela reste une solution sale pour linux. | + | #Choisir le paquet que vous désirez transformer en application portable |
+ | lenomdupaquet=firefox-3.5 | ||
- | N'oubliez pas que plus vous utiliserez d'application windows par wine : plus vous augmenterez les risques de sécurité par wine. | + | #Creation des dossiers selon la convention de nommage |
+ | mkdir App Data Other | ||
- | Ubuntu ne vérifie pas tous les logiciels exe, et il n'y a pas d'[[antivirus]] par défaut, ce que vous aurez besoin en utilisant trop wine. | + | #Listage des dépendances - par défaut toutes les dépendances |
+ | for p in `apt-cache depends $lenomdupaquet | awk '{print $NF}' | sed -e "s/<//" -e "s/>//" | sort | uniq`; do apt-cache show $p; done | grep Filename | sed "s/Filename: /wget http:\/\/fr.archive.ubuntu.com\/ubuntu\//" > dependances.sh | ||
+ | |||
+ | #Note vous pouvez ajouter des dépendances à cet endroit, sous cette forme (pour trouver des dépendances vous pouvez utiliser dpkg,ldd) | ||
+ | # sed -i 1i\ 'wget http://fr.archive.ubuntu.com/ubuntu/pool/....deb' dependances.sh | ||
+ | |||
+ | #téléchargement des dépendances | ||
+ | sh dependances.sh | ||
+ | mv dependances.sh /Other | ||
+ | |||
+ | mkdir tmp | ||
+ | #Dépaquetage deb, des dépendances | ||
+ | for p in `find -name "*.deb"` | ||
+ | do | ||
+ | fakeroot dpkg --extract $p tmp | ||
+ | done | ||
+ | |||
+ | #On efface les deb | ||
+ | rm *.deb | ||
+ | |||
+ | #On copie dans les bons répertoires | ||
+ | mv ./tmp/* ./App/ | ||
+ | |||
+ | |||
+ | </code> | ||
+ | |||
+ | ((ldd)) | ||
+ | === 2) Adapter le script de lancement === | ||
+ | |||
+ | Script basé sur le principe utilisé par http://www.portools.com/ | ||
+ | |||
+ | Le point important est de sauver le profile ( dernière ligne ) et de bien définir les variables. Il vous faudra ici créer le répertoire firefox-profile dans Data : <code>mkdir App/firefox-profile</code> | ||
+ | |||
+ | Vous pouvez trouver un exemple plus simple après celui-ci. | ||
+ | |||
+ | <code> | ||
+ | #!/bin/sh | ||
+ | |||
+ | eval 'exec perl -x -S ./$0 ${1+"$@"}' | ||
+ | if 0; | ||
+ | |||
+ | #!perl | ||
+ | |||
+ | # NOMAPPS Portable - portableTools for Linux | ||
+ | # | ||
+ | # Packaged / Made Portable by: | ||
+ | # Nom Prenom (www.site.com) | ||
+ | # | ||
+ | # Licensed: | ||
+ | # NOMAPPS - MPL, Portable Code - GPL. | ||
+ | # | ||
+ | # Portable Logic: | ||
+ | # > quelque dépendance packagé et problématique de .conf ... | ||
+ | # > besoin de passer le répertoire profile pour garder les configurations. | ||
+ | |||
+ | use Cwd; | ||
+ | |||
+ | # Modifiable variables. | ||
+ | $executable = 'firefox'; | ||
+ | $program_name = 'Firefox'; | ||
+ | |||
+ | # Internal variables. These usually do not need to be changed. | ||
+ | $executable_dir = 'App/usr/lib/firefox-3.5.5/'; | ||
+ | $executable_full = $executable_dir . $executable; | ||
+ | $arguments = join '', @ARGV; | ||
+ | |||
+ | print "Bienvenue sur $program_name Portable.\n\n"; | ||
+ | |||
+ | if (!-e $executable_full) { | ||
+ | die "Quelque chose n'a pas fonctionné. L'executable principale est manquant. Avez vous copié tous les fichiers ?\n"; | ||
+ | } elsif(!-x $executable_full) { | ||
+ | chmod 0755, $executable_full || die "Je n'ai pas pus changer les permissions de '$executable'. Avez vous copié ou extrait en tant qu'utilisateur normal ?\n"; | ||
+ | } | ||
+ | |||
+ | $cwd = getcwd(); | ||
+ | |||
+ | #Conf - variable de lancement | ||
+ | system("mv App/etc/gre.d/1.9.1.5.system.conf App/etc/gre.d/1.9.1.5.system.conf.bak"); | ||
+ | open(CONF, ">App/etc/gre.d/1.9.1.5.system.conf"); | ||
+ | print CONF "[1.9.1.5] | ||
+ | GRE_PATH=$cwd/usr/lib/xulrunner-1.9.1.5 | ||
+ | xulrunner=true | ||
+ | abi=x86-gcc3"; | ||
+ | |||
+ | #Environnement | ||
+ | chdir($executable_dir); | ||
+ | system("./$executable $arguments -no-remote -profile \"$cwd/Data/firefox-profile\" 2>/dev/null"); | ||
+ | |||
+ | </code> | ||
+ | |||
+ | Voici par exemple le lanceur pour xterm : | ||
+ | <code> | ||
+ | #!/bin/sh | ||
+ | |||
+ | eval 'exec perl -x -S ./$0 ${1+"$@"}' | ||
+ | if 0; | ||
+ | |||
+ | #!perl | ||
+ | |||
+ | # XTerm Portable 237 - portableTools for Linux | ||
+ | # | ||
+ | # Packaged / Made Portable by: | ||
+ | # Daniil Kulchenko (www.portools.com) | ||
+ | # | ||
+ | # Licensed: | ||
+ | # XTerm - MIT/X, Portable Code - GPL. | ||
+ | # | ||
+ | # Portable Logic: | ||
+ | # XTerm does not have any non-standard runtime dependencies, and does | ||
+ | # not save any config files anywhere. Therefore, none. | ||
+ | |||
+ | # Modifiable variables. | ||
+ | $executable = 'xterm'; | ||
+ | $program_name = 'XTerm'; | ||
+ | |||
+ | # Internal variables. These usually do not need to be changed. | ||
+ | $executable_dir = 'App/bin/'; | ||
+ | $executable_full = $executable_dir . $executable; | ||
+ | $arguments = join '', @ARGV; | ||
+ | |||
+ | print "Welcome to XTerm Portable.\n\n"; | ||
+ | |||
+ | if (!-e $executable_full) { | ||
+ | die "Something went wrong. The main executable is missing. Perhaps you didn't copy all the files?\n"; | ||
+ | } elsif(!-x $executable_full) { | ||
+ | chmod 0755, $executable_full || die "I could not change the permissions of '$executable'. Did you copy the files as a regular user?\n"; | ||
+ | } | ||
+ | |||
+ | chdir ($executable_dir); | ||
+ | system("./$executable $arguments"); | ||
+ | </code> | ||
+ | ===3) Empaquetage : Au choix === | ||
+ | |||
+ | <note warning>En cour de développement</note> | ||
+ | |||
+ | ===== Solutions avec une application tierce ===== | ||
+ | |||
+ | Nécessite la présence de l'application tierce - l'exécuteur - ou l'émulateur (qui n'est pas présent par défaut sur les distributions Linux) pour lancer le "logiciel portable" / l'application virtualisée. | ||
+ | |||
+ | |||
+ | ====Runz ==== | ||
+ | * [[http://hacktolive.org/wiki/Portable_Applications_%28Linux%29|hacktolive.org]] | ||
+ | ====Zero Install ==== | ||
+ | * [[https://en.wikipedia.org/wiki/Zero_Install|sur Wikipedia]] | ||
- | Finalement : LINUX n'est pas windows. | + | ====Wine + Applications portables Windows ==== |
- | C'était un message d'avertissement. | + | En utilisant [[Wine]], il serait possible d'émuler les applications portables Windows : et peut-être avec moins de problèmes de bibliothèques manquantes. |
- | Mais vous êtes libre. | + | Cependant cela reste une solution insatisfaisante au regard de l'utilisation d'une version native, notons par exemple une intégration à Ubuntu imparfaite, des applications qui peuvent souffrir de bogues ou de fonctionnalités inopérantes, voire ne fonctionnant pas du tout (certains mentionnent également la possibilité d'infection par des virus Windows, mais ceci n'est pas vérifié). |
- | ==== Liste de toutes les solutions tierces pour la création d'application portable ==== | ||
- | * [[http://hacktolive.org/wiki/Methods_for_Portable_Applications_on_Linux|Methods_for_Portable_Applications_on_Linux]] | ||
===== Solutions de serveur applicatif ===== | ===== Solutions de serveur applicatif ===== | ||
- | Concurrent de [[http://en.wikipedia.org/wiki/ClickOnce|ClicOnce]] (microsoft) ou [[http://en.wikipedia.org/wiki/Java_Web_Start|Java Web Start]] ( sun ). | + | Concurrent de [[https://en.wikipedia.org/wiki/ClickOnce|ClicOnce]] (microsoft) ou [[http://en.wikipedia.org/wiki/Java_Web_Start|Java Web Start]] ( sun ). |
<note help>Nous ne parlerons pas ici des solutions de serveur applicatif en ligne, basé le plus souvent sur java, voir plutôt la page consacré. Merci.</note> | <note help>Nous ne parlerons pas ici des solutions de serveur applicatif en ligne, basé le plus souvent sur java, voir plutôt la page consacré. Merci.</note> | ||
Ligne 89: | Ligne 243: | ||
===== Liens ===== | ===== Liens ===== | ||
- | * [[http://forum.ubuntu-fr.org/viewtopic.php?id=357387|Application portable sur le forum ubuntu]]. | + | * [[https://forum.ubuntu-fr.org/viewtopic.php?id=358366|Retour d'expérience sur la création d'Application portable sur le forum ubuntu]]. |
- | * [[http://en.wikipedia.org/wiki/Application_virtualization|Application virtualization]] (wikipedia en) | + | * [[https://en.wikipedia.org/wiki/Application_virtualization|(en)Application virtualization]] (wikipedia en) |
- | * [[http://fr.wikipedia.org/wiki/Intergiciel|Serveur d'application (interficiel sur wikipedia)]] | + | * [[https://fr.wikipedia.org/wiki/Intergiciel|Serveur d'application (interficiel sur wikipedia)]] |
- | * [[http://en.wikipedia.org/wiki/Application_streaming|Application streaming]] | + | * [[https://en.wikipedia.org/wiki/Application_streaming|(en)Application streaming]] |
- | * [[http://fr.wikipedia.org/wiki/Logiciel_en_tant_que_service|Le logiciel en tant que service ou en anglais le Software as a Service (SaaS) (saas)]] | + | * [[https://fr.wikipedia.org/wiki/Logiciel_en_tant_que_service|Le logiciel en tant que service ou en anglais le Software as a Service (SaaS) (saas)]] |
+ | * [[http://www.linuxfoundation.org/collaborate/workgroups/lsb/make-your-app-portable|(en)Make Your App Portable , linuxfoundation]] (mise à jour lien mort) | ||
* [[http://sardes.inrialpes.fr/ecole/livre/pub/|Intergiciel et Construction d'Applications Réparties]] (livre libre de l'inria) | * [[http://sardes.inrialpes.fr/ecole/livre/pub/|Intergiciel et Construction d'Applications Réparties]] (livre libre de l'inria) |