= Installation et Gestion du Logiciel des VOs = [[TracNav]] [[TOC(inline)]] Sur chaque CE qui la supporte, une VO dispose d'un espace connu sous le nom de ''software area'' destiné à contenir l'ensemble des logiciels spécifiques à la VO. C'est en général indispensable pour les applications utilisant de nombreuses librairies où il est impossible de tout transmettre avec chaque job. Il y a une ''software area'' par VO. Elle est accessible en lecture à tout le monde mais le droit d'écriture est restreint à un rôle particulier dans la VO appelé `Software Manager`. Le nom exact de ce rôle peut varier suivant la VO mais il doit être déclaré par la VO dans son [https://cic.gridops.org/index.php?section=vo identity card]. Chaque VO peut par ailleurs publier des ''tags'' dans le [wiki:Tutorial/SystemInfo système d'information] qui servent généralement à refléter le contenu de la ''software area''. == Référencer la VO Software Area == Pour référencer le contenu de la VO Software Area depuis un job, par exemple pour lancer une application, il faut utiliser la variable d'environnement `VO_VONAME_SW_DIR`, avec `VONAME` égal au nom de la VO en majuscule. ''Note : si le nom de la VO est de la forme `vo.dom.ain`, les `.` sont remplacés par des `_`. Par exemple pour la VO `vo.lal.in2p3.fr`, le nom de la variable sera `VO_VO_LAL_IN2P3_FR_SW_DIR` (le premier `VO_` ne fait pas partie du nom de la VO).'' Pour une VO donnée, la valeur de cette variable varie d'un site à l'autre. Il ne faut donc jamais utiliser directement la valeur dans un job et toujours utiliser la variable d'environnement. == Gérer la VO Software Area [NPF] == === Gérer le Contenu de la SW Area === La gestion du contenu de la ''software area'' se fait normalement en soumettant un job avec le rôle ''Software Manager''. Ce job possède alors tous les droits sur la ''software area'' et peut ajouter ou supprimer des choses, par exemple des versions d'application. L'utilisation d'un job standard laisse une grande flexibilité sur la façon d'installer un logiciel : * Reconstruction depuis les sources, fournies avec le job ou récupérer depuis un repository de code source du type CVS ou SVN. * Installation de binaires précompilés * Utilisation d'un storage element pour stocker une archive installée sur chaque CE ou de l'input sandbox si l'application n'est pas trop volumineuse Il est important de penser à supprimer les choses inutiles. Le gestionnaire de la VO doit normalement indiquer la taille typique de la ''software area'' pour la VO. Raisonnablement il ne faut pas dépasser quelques GB. === Publier le Contenu de la SW Area === Tous les sites supportant une VO donnée n'ont pas nécessairement les mêmes applications ou les mêmes versions installées. Pour pouvoir sélectionner un site approprié à une application, la VO doit publier un ou des ''tags'' reflétant les ressources disponibles sur le site. Les ''tags'' sont des noms arbitraires définis par la VO. Ils n'ont pas de sens en dehors de la VO mais leur syntaxe doit obéir au format suivant et ne contenir que des caractères alphanumériques ainsi que `.`, `,`, `:` et `/` : {{{ VO-voname-voinfo }}} Par exemple : {{{ VO-dteam-geant42ndProd_p02 }}} La publication du tag nécessite aussi le rôle production. Elle peut se faire soit depuis un UI, soit depuis un job de validation. La commande de gestion des tags est `lcg-ManageVOTag` et sa syntaxe est : {{{ lcg-ManageVOTag -host -vo [--add|--list|--remove|--replace] -tag ... }}} Quand on utilise l'option `--list`, l'option `-tag` doit être omise. `host` est le nom du CE. Pour plus de détail utiliser l'option `--help`. == Sélectionner un CE en fonction des logiciels installés == Lors de la [wiki:Tutorial/JobSubm soumission de job], il est possible de spécifier dans les [wiki:Tutorial/JobSubm#RequirementsetRank requirements] que l'on souhaite utiliser un CE publiant qu'un certain logiciel est installé. La publication correspond au tag définit précédemment. Par exemple pour sélectionner un CE offrant la version R2008b de MatLab (publiée avec le ''software tag'' `MATLAB_R2008B`) il faut utiliser l'expression suivante dans les requirements du JDL: {{{ Requirements = Member("MATLAB_R2008B", other.GlueHostApplicationSoftwareRunTimeEnvironment); }}}