Forum Programmation.perl CPAN et dépendances

Posté par  .
Étiquettes : aucune
0
21
déc.
2005
Bonjour,

Cela fait quelques temps que je navigue sans résultat sur le CPAN à la recherche de la fonctionnalité suivante : Avoir la liste des dépendances d'un module et ceci de manière récursive (exemple pour le module CGI::Builder::Session j'aurais les dépendances CGI::Builder et CGI::Session qui elles mêmes me donneraient récursivement CGI, POE ... et ainsi de suite jusqu'aux modules les plus élémentaires).

J'ai besoin de cette fonction afin de récupérer tous les modules utilisés par mon application pour l'installer sur un serveur n'ayant pas accès au Net (et donc pas de CPAN). De même l'utilisation de CPAN::Mini ne me plaît pas trop, je n'ai pas envie d'embarquer 580Mo alors que je n'ai besoin que d'une trentaine de module (donc sûrement moins de 5Mo de données).

Bref, quelqu'un connaît-il un moyen de faire un mini-mini-cpan avec juste les modules dont j'ai besoin pour mon application ? Où alors d'avoir la liste des modules requis pour une liste de modules ?

Merci d'avance.
  • # heu ...

    Posté par  (site web personnel) . Évalué à 2.

    tu sais perl gere tout seul les dependances.

    quand tu fais un perl -MCPAN -e shell tu lances le module CPAN de perl qui permet d'installer et mettre a jour ton install CPAN . si tu l'as correctement configurer ( en follow ou ask pour la gestion des dependances & mises a jours ) il fait tout tout seul.


    par contre, perl -MCPAN ne gere pas les distribs linux donc si tu commences comme ca, il faut finir comme ca. donc le meilleur moyen est l'option follow et de verifier a chaque fois si c dispo dans ta distrib préférée
    • [^] # Re: heu ...

      Posté par  . Évalué à 1.

      Ben justement, mon problème c'est que du coté de mon serveur de prod, je n'ai pas d'accès au Net (donc impossible de récupérer les archives du CPAN) et que je n'ai pas envie d'utiliser le mini-CPAN avec ces 500Mo. De plus, je ne peux pas me permettre d'embarquer les modules installés sur mon serveur de dev (en gros copié /usr/lib/perl5) car l'architecture du serveur de prod peut être différent de celui de dev.

      Bref, j'ai trouvé une solution pas super élégante mais qui devrait me dépanner :
      - Lister tous les packages du CPAN installés sur ma machine de dev.
      - Récupérer via la fonction get de CPAN::Module les sources.
      - Récupérer les fichiers de liste des packages dispo sur mon mini-cpan. Si j'ai le temps je génererais une liste propre ne contenant que les packages dont j'ai besoin.
      - Ensuite mettre tout ça dans un répertoire émulant la structure du référentiel CPAN.
      - Tar GZipper tout ça et créer un fichier MyConfig.pm à installé sur le serveur de prod qui pointera sur la répertoire temporaire contenant mon pseudo-cpan embarqué dans le tar.gz.

      Ensuite sur le serveur de prod, il me restera à faire un perl -MCPAN -e "install " sur les modules de haut niveau que j'utilise et ça devrait être bon.

      Toutefois si quelqu'un à une solution plus propre, je suis prenneur.
      • [^] # Re: heu ...

        Posté par  (site web personnel) . Évalué à 2.

        si tu as un serveur de dev avec ce qu'il faut ... la solution est tres simple :

        possiiblité 1 : tu lances chacun des scripts apres avoir rajouté une section END{} qui affiche %INC ( rapide & ne necessite pas de connaissance particuliere ).

        possibilité 2 : tu te lances dans une exploration des modules disponibles en suivant les API de packagings perl ( long & necessite de connaitre certains trucs que ceux qui veulent rester sain d'esprit peuvent se permettre d'eviter )
  • # scandeps

    Posté par  (site web personnel) . Évalué à 2.

    Regarde du côté de scandeps.pl
    • [^] # Re: scandeps

      Posté par  . Évalué à 1.

      \o/ Merci beaucoup, c'est exactement ce que je cherchais.

      Je savais bien que ça devait exister sur le CPAN un truc comme ça.

      Que toi et tes descendants soient protégés par Saint Larry Wall pendant 222 ans :).

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.