web-dev-qa-db-fra.com

Quelle est la difference entre cpan et cpanm?

Quelle est la différence entre les commandes cpan et cpanm?

Ils semblent tous deux installer des modules Perl, alors quelle est la différence?

22
CJ7

cpan le CPAN Shell est livré avec Perl depuis 1997 environ. Lorsque vous l'exécutez la première fois, il pose un tas de questions et enregistre les réponses dans un fichier de configuration. Ensuite, vous pouvez installer un module en exécutant:

cpan -i Module::Name

Le shell fournit d'autres commandes pour rechercher CPAN et regarder à l'intérieur des fichiers de distribution.

Jos Boumans , un projet pour créer un CPAN Shell plus récent, meilleur et plus fonctionnel appelé CPANPLUS (cpanp à partir de la ligne de commande) ==, mais il n'a jamais été complètement terminé où la vision originale avait été réalisée.

Pendant ce temps MIYAGAWA a décidé que cpanp essayait d'en faire trop et que le monde avait vraiment besoin d'un Shell plus simple qui le faisait moins et posé moins de questions (idéalement pas du tout). Il a créé App :: cpanminus qui fournit la commande cpanm et fait exactement ce qu'il voulait. Vous pouvez l'utiliser pour installer un module (et toutes les dépendances du module) avec une commande comme:

cpanm Module::Name

La principale différence entre les deux est que si vous avez Perl, vous devriez déjà avoir la commande cpan. Alors que vous n'aurez pas cpanm à moins que/jusqu'à ce que vous l'installiez.

21
Grant McLean

La plupart des utilisateurs modernes de Perl préfèrent cpanm pour sa simplicité et principalement sa brièveté de sortie.

L'utilisation de cpan peut entraîner des centaines de lignes de sortie car elle vous montre tout ce qu'elle fait: téléchargement, somme de contrôle, exécution du programme d'installation, analyse, chargement, la liste continue. La même chose s'applique à chaque dépendance.

cpanm d'autre part vous indique ce qu'il fait de manière plus concise et générale, c'est-à-dire: Récupération, Configuration, Construction et test, Terminé.

Ainsi, la principale différence d'utilisation est que cpanm supprime beaucoup d'informations (généralement) non pertinentes. Parfois, lorsqu'un module échoue, vous voudrez peut-être plus d'informations. Il y a un -v|--verbose flag qui vous montre essentiellement tout ce que cpan afficherait.

En outre, certains modules qui nécessitent une entrée utilisateur peuvent sembler "se bloquer" lorsque vous essayez de les installer. C'est parce que la sortie qui vous demande de taper quelque chose est supprimée. Vous pouvez utiliser le --interactive (ou --verbose) drapeaux pour contourner ce problème.

Pour une comparaison de la sortie, voir les diapositives 35-39 ici ou les diapositives 37-41 ici . (Ils proviennent de la même présentation. Je ne fais que dupliquer les liens au cas où l'un se déconnecterait.)

14
Joshua