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, 23:04] 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**. (( [[http://ldn.linuxfoundation.org/lsb/make-your-app-portable|(en)Make Your App Portable , linuxfoundation]] )) | + | 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ées 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ées - 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ées. | + | 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). |
- | **Tout deux restent totalement portable** , 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. | + | **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 40: | 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 === |
- | === 1) Créer les répertoires (selon la convention de nommage) === | + | |
- | Télécharger le projet vide ou :<code>mkdir App Data Other App/bin App/lib | + | |
- | </code> | + | |
- | === 3) Lister et copier les dépendances === | + | Vous pouvez télécharger les scripts, ou copier ce qui suit dans des fichiers (en leur donnant les droits d'exécution). |
- | <note warning>EN COUR DE DEVELLOPEMENT.</note> | + | **Les scripts ne demanderont pas les droits root, gage de non compromission possible du système.** |
- | Lister les dépendances (exécuter dans la racine du projet): | + | Vous n'aurez qu'à changer le nom du paquet que vous voulez rendre portable. (cela peut devenir plus compliqué avec des applications complexes). |
+ | |||
+ | === 1) Lister et copier les dépendances === | ||
+ | |||
+ | Lister les dépendances (exécuter dans la racine du projet) : | ||
<code> | <code> | ||
#!/bin/sh | #!/bin/sh | ||
- | #apt-cache depends --recurse nomdupaque | + | # Version |
+ | # 1.0 Bêta : fonctionne même pour des applications relativement complexe. | ||
+ | |||
+ | # PortableApplicationCreator.sh Portable - portableTools for Linux | ||
+ | # | ||
+ | # Script Made by: | ||
+ | # Eric Chaudy (Psychederic) | ||
+ | # | ||
+ | # Licensed: | ||
+ | # PortableApplicationCreator - GNU GPLv2 ! | ||
#Choisir le paquet que vous désirez transformer en application portable | #Choisir le paquet que vous désirez transformer en application portable | ||
- | lenomdupaquet=exaile | + | lenomdupaquet=firefox-3.5 |
- | urldepotcanonical=http://fr.archive.ubuntu.com/ubuntu/ | + | |
+ | #Creation des dossiers selon la convention de nommage | ||
+ | mkdir App Data Other | ||
+ | |||
+ | #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/ | ||
- | 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 $urldepotcanonical/" | ||
- | #dpkg --unpack | ||
</code> | </code> | ||
((ldd)) | ((ldd)) | ||
- | === 4) Adapter le script de lancement === | + | === 2) Adapter le script de lancement === |
Script basé sur le principe utilisé par http://www.portools.com/ | 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> | <code> | ||
Ligne 93: | Ligne 135: | ||
# | # | ||
# Portable Logic: | # Portable Logic: | ||
- | # A quelque dépendance packagé (blabla) , et problématique ... | + | # > quelque dépendance packagé et problématique de .conf ... |
- | # A besoin de passer le répertoire profile pour garder les configurations. (blabla) | + | # > besoin de passer le répertoire profile pour garder les configurations. |
use Cwd; | use Cwd; | ||
# Modifiable variables. | # Modifiable variables. | ||
- | $executable = 'iceweasel'; | + | $executable = 'firefox'; |
- | $program_name = 'IceWeasel'; | + | $program_name = 'Firefox'; |
# Internal variables. These usually do not need to be changed. | # Internal variables. These usually do not need to be changed. | ||
- | $executable_dir = 'App/usr/lib/iceweasel/'; | + | $executable_dir = 'App/usr/lib/firefox-3.5.5/'; |
$executable_full = $executable_dir . $executable; | $executable_full = $executable_dir . $executable; | ||
$arguments = join '', @ARGV; | $arguments = join '', @ARGV; | ||
Ligne 118: | Ligne 160: | ||
#Conf - variable de lancement | #Conf - variable de lancement | ||
- | system("mv App/etc/gre.d/1.9.system.conf App/etc/gre.d/1.9.system.conf.bak"); | + | 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.system.conf"); | + | open(CONF, ">App/etc/gre.d/1.9.1.5.system.conf"); |
- | print CONF "[1.9.0.4] | + | print CONF "[1.9.1.5] |
- | GRE_PATH=$cwd/usr/lib/xulrunner-1.9 | + | GRE_PATH=$cwd/usr/lib/xulrunner-1.9.1.5 |
xulrunner=true | xulrunner=true | ||
abi=x86-gcc3"; | abi=x86-gcc3"; | ||
Ligne 127: | Ligne 169: | ||
#Environnement | #Environnement | ||
chdir($executable_dir); | chdir($executable_dir); | ||
- | system("./$executable $arguments -no-remote -profile \"$cwd/Data/iceweasel-profile\" 2>/dev/null"); | + | system("./$executable $arguments -no-remote -profile \"$cwd/Data/firefox-profile\" 2>/dev/null"); |
</code> | </code> | ||
- | ===5) Empaquetage : Au choix === | ||
- | ===== Solutions avec une application tierce ===== | + | Voici par exemple le lanceur pour xterm : |
+ | <code> | ||
+ | #!/bin/sh | ||
- | 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 distributions linux ) pour lancer le "logiciel portables" / l'application virtualisée. | + | eval 'exec perl -x -S ./$0 ${1+"$@"}' |
+ | if 0; | ||
+ | #!perl | ||
- | ====Klik ==== | + | # 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. | ||
- | * [[http://en.wikipedia.org/wiki/Klik_%28packaging_method%29|klik (packaging method - kde - sur wikipedia)]] | + | # Modifiable variables. |
- | ====Runz ==== | + | $executable = 'xterm'; |
- | * [[http://hacktolive.org/wiki/Portable_Applications_%28Linux%29|hacktolive.org]] | + | $program_name = 'XTerm'; |
- | ====Zero Install ==== | + | |
- | * [[http://en.wikipedia.org/wiki/Zero_Install|sur Wikipedia]] | + | |
- | ====Wine + Application portable Windows ==== | + | # Internal variables. These usually do not need to be changed. |
+ | $executable_dir = 'App/bin/'; | ||
+ | $executable_full = $executable_dir . $executable; | ||
+ | $arguments = join '', @ARGV; | ||
- | En utilisant wine il serait possible d'émuler les applications portable windows : et peut être avec moins de problème de librairies manquantes. | + | print "Welcome to XTerm Portable.\n\n"; |
- | Cependant cela reste une solution sale pour linux. | + | 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"; | ||
+ | } | ||
- | N'oubliez pas que plus vous utiliserez d'application windows par wine : plus vous augmenterez les risques de sécurité par wine. | + | chdir ($executable_dir); |
+ | system("./$executable $arguments"); | ||
+ | </code> | ||
+ | ===3) Empaquetage : Au choix === | ||
- | 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. | + | <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 171: | 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|(en)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|(en)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://ldn.linuxfoundation.org/lsb/make-your-app-portable|(en)Make Your App Portable , linuxfoundation]] | + | * [[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) |