2010-02-11 5 views
4

Je gère un script Perl qui exécute une installation automatisée de notre logiciel serveur de base. L'une des nouvelles exigences est d'installer le module Inline :: Java.Automatisation de l'installation Inline :: Java sous Linux (Centos/Redhat)

Notre stratégie habituelle d'installation en utilisant Yum semble tomber car il n'y a pas de Inline :: Java disponible dans yum. Je ne trouve pas de version RPM pour cela, donc je ne peux pas l'installer en tant que RPM. Les seules options semblent être l'installation via CPAN ou l'envoi du tar et une étape qui identifie l'emplacement du SDK et lance 'perl Makefile.PL J2SDK =; faire; faire l'installation '. Instinctuellement, je pense que c'est un peu fragile pour une installation automatisée, j'ai eu des problèmes avec les installations CPAN qui ont échoué dans le passé et je ne veux pas vraiment avoir à faire sur un serveur en direct, mais je ne peux pas penser d'une meilleure option.

L'autre option que je considérais consistait simplement à expédier le fichier .pm, en le plaçant dans un répertoire défini par l'utilisateur et en utilisant 'use lib' pour le définir comme emplacement mais en raison du fonctionnement de Inline :: Java. pense que c'est possible, il a besoin de l'emplacement du InlineJavaServer et de tout ça aussi.

Est-ce que quelqu'un a une meilleure solution ou une opinion sur laquelle de celles proposées ci-dessus est la meilleure?

Répondre

2

Inline::Java recherchera InlineJavaServer.jar et les autres fichiers dont il a besoin au même endroit que le fichier Inline/Java.pm. Copier toute la distribution à partir du répertoire d'installation sur une machine et la copier sur une autre machine (avec la même architecture) n'est pas aussi fou que ça en a l'air. Si vous avez seulement quelques systèmes différents (pas tous Linux, 32 bits vs 64 bits, Perl 5.6 vs Perl 5.10, etc.), il est facile de faire un paquet séparé pour chaque système.

Il existe une configuration à l'installation dans Inline::Java, y compris la spécification de l'installation Java par défaut à utiliser. Mais cette configuration (et d'autres configurations par défaut) peut toujours être remplacée par des variables d'environnement telles que PERL_INLINE_JAVA_J2SDK (voir la Inline::Java perldoc pour la liste complète). Vous pouvez empaqueter Inline::Java avec votre propre module personnalisé, par exemple, MyCompany::InlineJavaConfig, qui peut définir les variables d'environnement appropriées avant que le module Inline::Java soit chargé dans chaque script.

Il existe d'autres configurations d'installation comme la configuration de JNI ou d'autres supports natifs. Il peut être un peu plus difficile de copier les fichiers qui prennent en charge ces fonctionnalités d'une machine à l'autre. Mais je ne peux penser à aucune raison que ça ne marcherait pas.

+0

Merci, j'ai manqué cette variable d'environnement. Cette solution a fonctionné pour moi, avec un minimum de perturbation. – NeilInglis

3

Vous pouvez build your ownperl-Inline-Java package et le mettre dans un dépôt yum privé, ou même contribuer à Fedora/EPEL.

+0

C'est probablement la meilleure réponse, mais j'ai rencontré quelques problèmes lors de la création du RPM et comme je suis à court de temps, j'ai pris l'option facile et je suis parti avec la stratégie de répertoire de copie. J'ai essayé d'utiliser cpan2rpm pour créer le RPM. Les problèmes que j'ai rencontrés concernaient la nature dynamique du paquetage Inline :: Java, il semblait avoir une dépendance sur Inline :: Java-> find_default_j2sdk (qui trouve un fichier généré lors de la compilation) que je ne pouvais pas remplacer . C'est probablement mon échec cependant, je suis loin d'un expert RPM. Je pourrais essayer encore quand j'ai un peu de temps libre. – NeilInglis