2017-05-23 3 views
-2

Je suis en train d'installer un module Perl: Net :: SSH2 avec CPAN, mais ne fonctionne pas vraiment.Cant install Net :: SSH2 module perl

cpan -f install Net::SSH2 

Sortie:

CPAN: Storable chargé ok (v2.20) Voulez-vous lire '/root/.cpan/sources/authors/01mailrc.txt.gz' ... .................................................. ....................... FAIT Va lire '/root/.cpan/sources/modules/02packages.details.txt.gz' Base de données était généré le lun. 22 mai 2017 22:29:03 GMT HTTP :: date non disponible ............. Nouvelle version CPAN.pm (v2.16) disponible.
[La version actuellement en cours d'exécution est v1.9402] Vous pouvez essayer installez CPAN reload cpan pour mettre à niveau CPAN.pm et exécuter la nouvelle version sans quitter la session en cours.

.............................................. ................. FAIT Va lire '/root/.cpan/sources/modules/03modlist.data.gz' Impossible de localiser la méthode d'objet "données" via paquet "CPAN :: Modulelist" (peut-être vous avez oublié de charger "CPAN :: Modulelist"?) à (eval 16) ligne 1. au /usr/share/perl5/CPAN/Index.pm ligne 518 CPAN :: Index :: rd_modlist ('CPAN :: Index', '/root/.cpan/sources/modules/03modlist.data.gz') appelé au /usr/share/perl5/CPAN/Index.pm ligne 85 CPAN: : Index :: reload ('CPAN :: Index') appelé à la ligne /usr/share/perl5/CPAN.pm 955 CPAN :: existe ('CPAN = HASH (0x21fd2f0)', 'CPAN :: Module', ' install ') appelé/usr/share/perl5/C ligne PAN/Shell.pm 1243 CPAN :: Shell :: expandany ('CPAN :: Shell', 'install') a appelé à la ligne /usr/share/perl5/CPAN/Shell.pm 1639 CPAN :: Shell :: rematein ('CPAN :: Shell', 'force', 'install', 'install') appelé /usr/share/perl5/CPAN/Shell.pm ligne 1935 CPAN :: Shell :: ANON ('CPAN :: Shell ',' install ',' install ') appelé/usr/bin/cpan ligne 318 main :: _ default (' ARRAY (0x1938f18) ') appelée à/usr/bin/cpan ligne 278

Répondre

0

Cette PerlMonks thread a quelqu'un d'autre avec un problème similaire. Il semble que cette réponse a fonctionné dans ce cas:

Il me semble que vous avez des données corrompues dans votre répertoire .cpan. Je soufflé dessus et essayer à nouveau:

$ rm -rf /home/user/.cpan 

Essayez-le à vos propres risques. Dans votre cas, vous devez supprimer /root/.cpan.

En outre, l'utilisation correcte de cpan consiste à lister les noms de module après la commande. Donc, au lieu de cpan install Net::SSH2, vous devez utiliser cpan Net::SSH2. Si vous utilisez l'option -f, vous devez spécifier -i: cpan -f -i Net::SSH2, mais essayez sans forcer les choses d'abord. Vous ne voulez pas installer des modules cassés dans le système perl.

En fait, en général, vous ne voulez pas du tout toucher au perl du système. Construisez votre propre perl et jouez avec autant de choses que vous voulez.

PS: install est un module fictif créé précisément parce que beaucoup de gens font cette erreur.

1

Il semble que votre installation de CPAN soit incomplète ou corrompue. OS et Perl version pourraient être utiles. Sur de nombreuses distributions Linux actuelles, les modules Perl et leurs dépendances peuvent être installés à l'aide des utilitaires logiciels habituels tels que yum (RHEL/CentOS), apt (Debian/Ubuntu) et yast (SuSE). L'inconvénient est que les versions ne sont peut-être pas les plus récentes.

0

Le moyen le plus sûr et le plus pratique d'installer des modules Perl peut dépendre de la distribution. Par exemple, the recommended method on Fedora est:

$ sudo dnf install 'perl(Net::SSH2)' 

Comme le montre cet exemple, l'installation des modules Perl sur votre système nécessite habituellement ou sudo l'utilisateur root. Donc, vous pourriez vouloir essayer votre commande avec sudo si vous êtes un sudoer.

Si vous n'avez pas ce type d'alimentation, vous devrez peut-être l'installer localement. Cela signifie généralement le télécharger dans un répertoire de bibliothèque Perl que vous créez dans votre répertoire personnel, et inclure le chemin dans @INC en quelque sorte, comme mettre à jour votre $PERL5LIB pour inclure le /home/user/perl/modules/Net-SSH2/lib/ ou quel que soit votre chemin vers le répertoire lib du module.