2010-03-08 4 views
0

Je suis un débutant absolu chez Perl, et j'essaie d'utiliser des modules non-core sur mon hôte web Linux partagé. Je n'ai aucun accès à la ligne de commande, seulement FTP.Quels modules Perl peuvent être installés simplement en copiant des fichiers lib?

Les administrateurs hôtes envisageront d'installer des modules sur demande, mais ceux que je veux utiliser sont mis à jour fréquemment (DateTime :: TimeZone par exemple), et je préférerais avoir le contrôle sur la version que j'utilise.

Par l'expérimentation, j'ai trouvé quelques modules peuvent être installés en copiant les fichiers du répertoire lib du module dans un répertoire sur l'hôte, et en utilisant

use lib "local_path"; 

dans mon script, ie pas de compilation est nécessaire pour installez (DateTime et DateTime :: TimeZone à nouveau).

Comment puis-je savoir si c'est le cas pour un module particulier? Je réalise que je vais devoir résoudre les dépendances moi-même. De plus: si je voulais pouvoir installer n'importe quel module, y compris ceux qui nécessitent une compilation, que rechercherais-je en termes d'hébergement?

Je suppose au moment où je partage une VM avec plusieurs autres et la provision minimum dont j'avais besoin serait une VM dédiée avec un accès shell?

Répondre

2

Voir perldoc perlxs.

Vous pouvez probablement inspecter la source du module pour DynaLoader ou quelque chose comme ceci. De cette façon, vous pouvez savoir si un module utilise un code C. Si vous utilisez un système d'exploitation de type unix, vous pouvez utiliser un gestionnaire de paquets pour voir quels fichiers/bibliothèques un module (module Perl) installe.

+0

Rappelez-vous que je suis un débutant - je peux voir que doc est sur le lien entre Perl et C, mais ne peut pas suivre beaucoup plus que cela. – e100

+3

Les modules qui sont purs perl (pas de XS) peuvent simplement être copiés d'un endroit à l'autre sans problème. Les modules qui utilisent XS ne fonctionneront pas lors de la copie, sauf si les systèmes source et de destination ont les mêmes versions de CPU, d'OS et de bibliothèque installées (plus ou moins). – hobbs

+0

@hobbs: Aha - vous devriez mettre cela comme une réponse. – e100

0

Vous pouvez utiliser

use lib "your_local_path" , 

Dans ce cas, vous pouvez avoir module dans votre chemin d'accès local.

+0

Déjà avec les modules que j'ai réussi à installer, j'ai clarifié ma question pour clarifier les choses. – e100

Questions connexes