2010-06-01 22 views
2

J'essaie de configurer une application dépendante de quelques modules Perl, mais le serveur sur lequel j'installe n'a pas de connexion Internet. J'ai lu sur les installations de module hors connexion via les fichiers PPD, mais je devrais résoudre toutes les dépendances une par une .. D'autant plus fastidieux que je n'ai pas de connexion Internet directe.Puis-je déplacer une installation Perl d'un ordinateur vers un autre?

J'espère trouver une solution, où j'installer ActivePerl sur mon PC et installer toutes les bibliothèques que je veux, puis copier coller les répertoires à mon serveur. Si c'est juste une question de correction de certaines variables d'environnement, ce serait bien. Je veux juste connaître la liste définitive des variables à modifier. Vous ne savez pas s'il est obligatoire d'installer les bibliothèques Perl sur l'ordinateur sur lequel il est prévu d'être exécuté? (L'une est plate-forme 32 bits et l'autre 64 bits, mais le serveur exécute déjà diverses applications 32 bits donc j'espère que ce n'est pas un problème majeur) Pour une meilleure compatibilité, je prévois d'installer ActivePerl sur les systèmes et fusionner la bibliothèque les répertoires doivent être identiques.

+0

semble un double de http://stackoverflow.com/questions/2682608/why-cant-i-simply-copy-installed-perl-modules-to-other-machines – Space

+0

Merci, j'ai essayé de mon mieux pour rechercher des réponses existantes. – Benny

Répondre

1

De cette link

De temps en temps, vous ne serez pas en mesure de utiliser l'une des méthodes pour installer modules. Cela peut être le cas si vous êtes un utilisateur particulièrement sous-privilégié - peut-être vous louez l'espace Web sur un serveur, où vous n'êtes pas donné des droits pour faire n'importe quoi.

Il est possible, pour certains modules, à installer le module sans compilation quoi que ce soit, et vous pouvez simplement déposer le fichier en place et de le faire fonctionner. Sans entrer dans beaucoup de détail , certains modules Perl contiennent une partie écrite dans une autre langue (comme C ou C++) et certains sont écrits en juste en Perl. C'est le dernier type que cette méthode fonctionnera pour . Comment le sauras-tu? Eh bien, s'il ya ne sont pas des fichiers appelés quelque chose.c et quelque chose.h dans le paquet, les chances sont que c'est un module qui contient seulement le code Perl.

Dans ce cas, vous pouvez simplement décompresser le fichier, puis copiez simplement les fichiers * .pm dans un répertoire à partir duquel vous exécuterez les modules. Deux exemples de cela devrait suffire à illustrer comment cela est fait .

IniConf.pm est un petit module merveilleux qui vous permet de lire les informations de configuration d'un fichier de configuration de style .ini . IniConf.pm est écrit uniquement en Perl, et n'a pas de partie C . Lorsque vous décompressez le fichier .tar.gz que vous avez reçu du CPAN, vous trouverez dans plusieurs fichiers, et un d'entre eux s'appelle IniConf.pm. C'est le seul fichier que vous êtes réellement intéressé. Copiez ce fichier dans le répertoire où vous avez les programmes Perl qui utiliseront ce module .Vous pouvez ensuite utiliser le module comme vous le feriez si elle était correctement installé `` , « » avec juste la ligne:

use IniConf; 

Time :: CTime est un autre module très pratique qui vous permet d'imprimer en temps n'importe quel format qui vous plaît. Il est écrit juste en Perl, sans un composant C . Vous l'installerez de la même manière que vous l'avez fait avec IniConf, sauf que le fichier, appelé CTime.pm, doit être placé dans un sous-répertoire appelé Time. Les deux points, ainsi que indiquant une organisation des modules, indique également une structure de répertoires sur votre système de fichiers.

+0

C'est une bonne nouvelle! Maintenant, je prévois d'installer 32 bits Active Perl sur mon PC et mettre à jour tous les modules nécessaires. Ensuite, installez 64 bits Active Perl sur le serveur et transférez juste le dossier de la bibliothèque (ou au moins seulement ces fichiers de manière sélective). Je mettrai à jour le résultat une fois terminé. Merci pour votre réponse. – Benny

+0

Merci beaucoup! Les modules que j'avais l'intention d'utiliser fonctionnaient simplement par copier coller, ils étaient tous juste des fichiers * .pm. – Benny

2

La réponse était sur Perl FAQ, mon mauvais ne l'a pas traversé correctement.

I copied the perl binary from one machine to another, but scripts don't work. 
That's probably because you forgot libraries, or library paths differ. 
You really should build the whole distribution on the machine it will 
eventually live on, and then type "make install". Most other approaches 
are doomed to failure. 

One simple way to check that things are in the right place is to print 
out the hard-coded @INC that perl looks through for libraries: 

    % perl -le 'print for @INC' 

If this command lists any paths that don't exist on your system, then 
you may need to move the appropriate libraries to these locations, or 
create symbolic links, aliases, or shortcuts appropriately. @INC is also 
printed as part of the output of 

    % perl -V 

You might also want to check out "How do I keep my own module/library 
directory?" in perlfaq8.