75 votes

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

Je suis chargé de reproduire un environnement de production pour créer plusieurs 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 CPAN.pm autobundle, mais cela aurait pour conséquence que l'environnement de test aurait des versions beaucoup plus récentes des modules externes que la production.

Quelle est la meilleure façon d'obtenir et d'installer (beaucoup) de modules Perl spécifiques à une version.

108voto

Schwern Points 33677

Bdfoy a la meilleure solution à grande échelle, mais si vous voulez juste installer quelques modules, vous pouvez demander au shell CPAN d'installer une distribution spécifique en référençant un chemin vers une archive (relativement au sommet de l'arbre CPAN).

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

Ajoutez une URL vers BackPAN à votre liste d'URL et vous pourrez installer n'importe quelle version plus ancienne.

cpan> o conf urllist push http://backpan.perl.org/

Il s'agit de la FAQ CPAN.pm sous "comment installer une 'DEVELOPER RELEASE' d'un module ?"

0 votes

C'est une bonne chose. Cela m'a permis de contourner un problème de compatibilité avec un serveur que je ne peux pas encore mettre à niveau. Merci de votre aide !

0 votes

Je ne pense pas que cette URL fonctionne de nos jours. Celle-ci, par contre, fonctionne : backpan.perl.org

0 votes

install MSCHWERN/Test-Simple-0.62.tar.gz @Schwern Je pense qu'il faut enlever le préfixe M/MS pour qu'il trouve l'archive.

41voto

Ether Points 34103
cpan install App::cpanminus
cpanm Your::Module@1.23

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

39voto

brian d foy Points 71781

Créez votre propre miroir CPAN avec exactement ce que vous voulez.

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

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

Des outils tels que CPAN::Mini::Inject peuvent vous aider à mettre en place votre propre CPAN. Consultez mes conférences sur Slideshare pour les exemples de base, et quelques mes vidéos sur Vimeo pour certaines démonstrations. Regardez tout ce qui a "CPAN" ou "BackPAN" dans le titre. Je pense que j'ai des choses à ce sujet dans La revue Perl aussi, ou devrait l'être d'ici le prochain numéro :)

Dernièrement, j'ai travaillé sur un programme appelé dpan (pour DarkPAN) qui peut regarder dans 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 lancez dpan, vous obtenez une URL vers laquelle pointer votre client CPAN, et c'est parti. Il 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 parce que je travaille principalement avec des clients d'entreprise pour personnaliser leur installation. Si cela vous intéresse, n'hésitez pas à me poser des questions.

Par ailleurs, j'ai récemment publié CPAN::PackageDetails qui peut vous aider à créer le bon fichier d'index. Il est encore un peu jeune, mais si vous avez besoin de quelque chose de spécial, n'hésitez pas à le demander.

1 votes

Merci Brian, je suis en train de construire un mini cpan local, j'y injecterai alors nos modules locaux + ceux dont j'ai besoin qu'ils soient rétrogradés à des versions spécifiques.

10voto

G. Cito Points 1547

[Près de cinq ans plus tard, c'est une question qui a été bien posée et qui a reçu de nombreuses réponses. 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ée ici. Carton est un outil relativement récent dans le même style que App::cpanminus , App::cpanoutdated , perlbrew , et. al. L'auteur (Miyagawa) parle de qualité "alpha", mais même dans son état actuel, le carton permet de simplifier la maintenance d'environnements multiples de modules adaptés aux versions sur les différentes machines.

Pinto too est un autre outil récent en rapport avec certaines des réponses (en fait, l'un des répondants est un contributeur).

4voto

Stratopan.com est une autre alternative. Stratopan fournit des CPAN privés dans le nuage. Vous pouvez remplir votre dépôt 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 dépôt ne change que lorsque vous décider de le modifier, vous obtiendrez donc toujours les versions des modules que vous souhaitez.

Clause de non-responsabilité : j'exploite Stratopan.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X