8
votes

Comment trouver tous les modules utilisés dans un script Perl et les installer?

On m'a donné quelques scripts Perl à déployer.

Quel est le moyen le plus simple de trouver et d'installer tous les modules utilisés par ces scripts?

EDIT:

de ce que je peux trouver, il n'y a pas de conditionnel inclut ni inclut dans les points d'expansion.


0 commentaires

4 Réponses :


2
votes

Eh bien c'est la voie très simpliste j'ai résolu ceci.

dans une coquille bash: xxx

Cela m'a donné un fichier avec Seuls les noms de module, un sur chaque ligne.

I Utilisé ensuite cette xxx

pour invoquer la CPAN à chaque nom de module dans le fichier. Puis assister là-bas répondant au oui aux questions de CPAN pour installer des dépendances, le cas échéant.

Pas jolie mais cette fois, il a eu le travail effectué.


4 commentaires

Que diriez-vous des modules qui ne sont pas utilisés mais ont besoin?


J'adore le grep dans la première ligne en conséquence


Qu'en est-il des lignes où utiliser n'est-ce pas la première chose sur la ligne? Il n'autorise même pas les espaces facultatifs.


Vous pouvez bien sûr rendre la déclaration GREP aussi compliquée que vous le souhaitez. I dit que c'était une de manière très simpliste je faisais ce travail particulier



3
votes

J'étais en espérant Module :: Scandeps qui fournit l'utilitaire de ligne de commande < Un href = "http://search.cpan.org/perldoc/scandeps.pl" rel = "Nofollow NOREFERRER"> SCANDEPS.PL serait utile ici, mais à ma consternation, module :: Scandeps n'est apparemment pas destiné à ce que scandeps.pl ignore les modules manquants ou (avec -c ou -x ) Croaks Lorsque le script utilise un module qui n'est pas installé.

Voici un script Quick'n'Dirty Perl qui tente d'exécuter le script à l'aide de faire jusqu'à ce qu'il réussisse: xxx

Si vous ne voulez pas que le script soit exécuté, vous pouvez exécuter < Code> Perl -c $ Script , Capture STREDR SORTIE DE CETTE ET PAR PAYERE POUR LES MESSAGES DE MODURE manquants et appelez CPAN pour chaque module de ce type trouvé jusqu'à ce que PERL -c $ script Sortie "Syntaxe OK". Cela vous donne une boucle plus propre aussi. Je vais regarder cela plus tard.

Vous risquez de manquer des dépendances chargées au moment de l'exécution en utilisant cette technique.


6 commentaires

N'est-ce pas un peu dangereux? Le script $ pourrait faire quelque chose de perturbateur.


N'essayez-vous pas d'exécuter le script? À ce stade, vous devez avoir décidé que le script vaut la peine d'être exécuté et que vous avez juste besoin des dépendances.


On m'a dit de les courir tous les jours à 3 heures du matin (ils font de la maintenance de la DB). Ce n'est pas pour moi de décider si c'est bien de les exécuter pendant la journée juste pour obtenir les dépendances installées. (Et je ne veux pas attendre 33 heures du matin). Je conviens que la plupart des temps, ce n'est probablement pas un problème. C'est pourquoi j'ai souligné que cela pourrait être un peu dangereux.


@Nifle Run Qu'est-ce que Chaque jour à 3 heures du matin? Sont un tas de personnes qui mettent des scripts sur la machine et votre script est-il censé comprendre les modules dont ils dépendent? Si tel est le cas, je voudrais simplement demander aux utilisateurs de soumettre un ensemble de modules dont leurs scripts ont besoin. Je pensais que c'était une chose une chose.


Comme ma question dit On m'a donné quelques scripts Perl à déployer. Quel est le moyen le plus simple de trouver et d'installer tous les modules utilisés par ces scripts? donc oui ma solution était une chose unique. Tu es beaucoup mieux. Mais je voulais toujours simplement souligner que l'utilisation de votre solution exécutera le script au moins une fois. Et cela pourrait ne pas être toujours une bonne chose.


@Nifle Nous allons dans des cercles. Il n'est pas possible de comprendre toutes les dépendances d'un script arbitraire sans l'exécuter. Mais de côté, disons que votre solution grep a toujours fonctionné et vous avez installé tous les modules trouvés. Je pensais que toute la raison pour laquelle vous avez fait c'était ainsi le (s) script (s) que vous avez donné pourrait être couru. D'une manière ou d'une autre, ces scripts vont être courus. S'il y a une chance que les scripts puissent être néfastes, vous ne devriez pas vous inquiéter des dépendances en premier lieu.



0
votes

ou laisser PP de la PP Faites le travail pour vous rassembler tout ce dont vous avez besoin dans un exécutable unique.


1 commentaires

Je ne pense pas pp installe des dépendances manquantes. Est-ce que je manque quelque chose.



12
votes

Est-ce que mon module :: extrait :: Utilisez Aide? Il y a un extrayant_modules programme Dans le répertoire > : xxx

Vous pouvez tuyer cette liste sur cpan . xxx

Une fois que vous avez cette liste, ce qui n'est que le premier niveau de dépendances, vous pouvez créer un script Distribution qui permet aux personnes d'utiliser la boîte à outils CPAN normale pour tout installer.

S'il y a quelque chose qui ne fonctionne pas pour vous, modifiez le programme pour gérer cela. Si vous pensez que cela serait utile aux autres personnes, envoyez une demande de traction. :)


0 commentaires