2 votes

Emballez le module prérequis perl sous forme source pour le déploiement ?

Ma webapp dépend de plusieurs modules. Lorsque je déploie sur un serveur distant, je dois exécuter cpanm pour réinstaller tous les modules, ce qui pose les problèmes suivants :

  • Lent.
  • Impossible d'inclure un module privé / un correctif privé.
  • Installerait la dernière version des modules, au lieu de ceux sur lesquels je travaille.

Je veux donc les redistribuer lors du déploiement. Je pourrais presque utiliser PAR, mais je ne peux pas car je ne veux pas le faire sous forme binaire - car la version Perl, l'architecture pourraient être différentes.

Module::Install::Bundle est ce que j'ai trouvé de plus proche. En spécifiant la prérequis, il peut automatiquement récupérer les modules et toutes leurs dépendances (jusqu'au module principal) depuis CPAN. Le module construit et teste, mais "make install" ne fait rien - il n'installe pas du tout ces prérequis.

Est-ce que j'ai manqué quelque chose ?

J'utilise Strawberry Perl sur Windows.

1voto

Schwern Points 33677

Pinto vous fournit une sorte de miroir privé, super CPAN qui ne se met à jour que lorsque vous le souhaitez, et seulement les modules que vous souhaitez mettre à jour. Il peut également accepter des archives avec des correctifs privés. Voici une vidéo sur le sujet.

1voto

nponeccop Points 8111

Cpanm en principe peut faire ce que vous voulez:

  • cpanm --notest est rapide (bien sûr, vous ne voulez pas toujours sauter les tests mais les tests sont en grande partie la plus grande source de ralentissement. À part cela, vous pouvez essayer d'écrire vous-même un téléchargeur parallèle)
  • cpanm FOO/Bar-1.234.tar.gz installera une version exacte et il est possible de télécharger vos forks de packages sous votre compte PAUSE (donc cela fonctionne pour les libs privées, mais toujours open-source)
  • cpanm . installe la distribution dans le répertoire actuel, donc cela peut être le moyen pour vos libs privées
  • cpanm foo.tar.gz fonctionne aussi

Le seul problème avec cpanm est d'automatiser la liste des dépendances.

Remarquez également qu'il n'a pas de sens d'épingler les versions des bibliothèques sans épingler également la version de Perl. Dans ce cas, vous pouvez utiliser PAR. De plus, avec PAR, vous n'avez pas besoin d'utiliser le packer pour obtenir un fichier monolithique - vous pouvez installer des modules en utilisant PAR::Repository, ce qui est mieux pour le débogage que les packages monolithiques.

0voto

jira Points 2146

Vous pourriez jeter un oeil à Carton. Avec lui, vous pouvez donner à votre application un ensemble autonome de dépendances.

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