web-dev-qa-db-fra.com

Comment puis-je installer une version spécifique d'un ensemble de modules Perl?

Je suis chargé de répliquer un environnement de production pour créer de nombreux environnements de test/sit.

L'une des choses que je dois faire est de construire Perl, avec tous les modules qui ont été installés (y compris les modules internes et externes) au fil des ans. Je pourrais simplement utiliser le regroupement automatique CPAN.pm, mais cela se traduira par l'environnement de test ayant des versions beaucoup plus récentes des modules externes que la production a.

Quel est le moyen le plus simple/le meilleur pour obtenir et installer (beaucoup) de modules Perl spécifiques à la version.

71
Matthew Watson

Faites votre propre miroir CPAN avec exactement ce que vous voulez. Stratopan.com , un service, et Pinto , des outils qui sont construits dessus, peuvent vous aider à le faire.

Les outils CPAN installent uniquement la dernière version de n'importe quelle distribution car PAUSE indexe uniquement la dernière version. Cependant, vous pouvez créer votre propre CPAN privé qui a exactement les distributions que vous souhaitez. Une fois que vous avez votre propre miroir CPAN avec uniquement ce que vous voulez, vous pointez vos outils CPAN uniquement sur ce miroir pour qu'il installe uniquement ces versions. Plus sur ce sujet dans une minute.

Maintenant, vous voulez en avoir plusieurs versions. Vous pouvez créer autant de miroirs que vous le souhaitez, et vous pouvez également placer les miroirs dans le contrôle de source afin que vous puissiez vérifier n'importe quelle version du miroir que vous aimez.

Des outils tels que CPAN :: Mini :: Inject peuvent vous aider à configurer votre propre CPAN. Consultez mes discussions sur Slideshare pour les exemples de base, et certains mes vidéos sur Vimeo pour certaines des démonstrations. Regardez tout ce qui a "CPAN" ou "BackPAN" dans le titre. Je pense que je pourrais avoir des trucs à ce sujet dans The Perl Review aussi, ou devrait le faire dans le prochain numéro. :)

Dernièrement, j'ai travaillé sur un programme appelé dpan (pour DarkPAN) qui peut regarder des répertoires aléatoires, y trouver des distributions Perl et créer la structure et les fichiers d'index dont vous avez besoin. Vous exécutez dpan, vous obtenez une URL vers laquelle pointer votre client CPAN et c'est parti. Cela fait partie de mon projet MyCPAN-Indexer, qui se trouve dans Github . Il n'est pas tout à fait prêt pour une utilisation publique non supervisée car je travaille principalement avec des clients d'entreprise pour personnaliser leur configuration. Si cela vous intéresse, n'hésitez pas à me poser des questions.

De plus, j'ai récemment publié CPAN :: PackageDetails qui peut vous aider à créer le bon fichier d'index. C'est encore un peu jeune aussi, mais encore une fois, si vous avez besoin de quelque chose de spécial, il suffit de demander.

38
brian d foy

bdfoy a la meilleure solution à grande échelle, mais si vous souhaitez simplement installer quelques modules, vous pouvez demander au CPAN Shell d'installer une distribution spécifique en référençant un chemin vers une archive tar (par rapport au sommet de l'arborescence CPAN).

cpan> install MSCHWERN/Test-Simple-0.62.tar.gz

Jetez une URL vers BackPAN dans votre liste d'URL et vous pouvez installer n'importe quelle version plus ancienne.

cpan> o conf urllist Push http://backpan.Perl.org/

Cela se trouve dans la CPAN.pm FAQ sous "comment installer une 'RELEASE DEVELOPER' d'un module?"

105
Schwern
cpan install App::cpanminus
cpanm Your::[email protected]

(Carton, comme référencé dans d'autres réponses, utilise cpanm en dessous pour résoudre les exigences de version explicites.)

29
Ether

[Cela fait presque cinq ans et c'est une question bien posée et bien répondue qui a eu beaucoup de points de vue. Comme cette page doit toujours apparaître dans les recherches Google, une mise à jour ne peut pas faire de mal.]

Carton mérite d'être mentionné ici. Carton est un outil relativement récent dans le même style que App::cpanminus, App::cpanoutdated, perlbrew, et. al. L'auteur (Miyagawa) l'appelle la qualité "alpha", mais même dans son état actuel, le carton aide à simplifier la maintenance de plusieurs environnements de modules à version ajustée sur plusieurs machines.

Pinto est également un autre outil récent pertinent pour certaines des réponses (en fait, l'un des répondants est un contributeur).

9
G. Cito

Stratopan.com est une autre alternative. Stratopan fournit des CPAN privés dans le cloud. Vous pouvez remplir votre référentiel Stratopan avec des versions spécifiques de modules (et leurs dépendances), puis les installer à l'aide de la chaîne d'outils Perl standard. Le référentiel ne change que lorsque vous décidez de le changer, vous obtiendrez donc toujours les versions des modules que vous souhaitez.

Avertissement: J'utilise Stratopan.

Il semble que la création d'un cpanfile répertoriant tous vos modules et les versions souhaitées (en utilisant le == <version> syntaxe pour le verrouiller sur une version spécifique) pourrait également être utile ici. Cela signifierait utiliser Carton ou cpanm pour installer les modules.

Cela aurait l'avantage de pouvoir ajuster rapidement/facilement le fichier pour tester la mise à niveau de modules spécifiques dans un environnement de développement ou de transfert - quelque chose qu'un miroir CPAN privé ne vous laisserait pas faire (sans créer plusieurs miroirs).

2
Randall