Frage

Ich bekomme diese Fehlermeldung:

Can't locate Foo.pm in @INC

Gibt es einen einfacheren Weg, es zu installieren, als Download, entpacken, machen, etc?

War es hilfreich?

Lösung

Auf Unix :

in der Regel starten Sie cpan in der Shell:

# cpan

und Typ

install Chocolate::Belgian

oder in Kurzform:

cpan Chocolate::Belgian

Unter Windows :

  

Wenn Sie mit ActivePerl auf Windows, die PPM (Perl Package Manager) viel von der gleichen Funktionalität wie CPAN.pm hat.

Beispiel:

# ppm
 ppm> search net-smtp
 ppm> install Net-SMTP-Multipart

finden Sie unter Wie installiere ich Perl-Module? in der CPAN FAQ

Viele Distributionen als Pakete viele Perl-Module liefern.

  • Debian / Ubuntu: apt-cache search 'perl$'
  • Arch Linux: pacman -Ss '^perl-'
  • Gentoo: Kategorie dev-perl

Sie sollten immer bevorzugen sie, wie Sie von der automatischen (Sicherheit) profitieren Updates und die Leichtigkeit der Entfernen . Dies kann ziemlich schwierig sein, mit der cpan Werkzeug selbst.

Für Gentoo gibt es ein nettes Tool g-cpan , die bauen / das Modul von CPAN installiert und erstellt ein Gentoo-Paket ( ebuild ) für Sie.

Andere Tipps

Versuchen Sie App :: cpanminus :

# cpanm Chocolate::Belgian

Es ist toll für nur immer Sachen installiert. Es bietet keine der komplexeren Funktionalität von CPAN oder CPANPLUS, so ist es einfach zu bedienen, vorausgesetzt, Sie wissen, welches Modul Sie installieren möchten. Wenn Sie nicht bereits bekommen cpanminus, geben Sie einfach:

# cpan App::cpanminus

zu installieren.

Es ist auch möglich, es zu installieren, ohne überhaupt mit cpan. Die grundlegende Bootstrap-Prozedur ist,

curl -L http://cpanmin.us | perl - --sudo App::cpanminus

Weitere Informationen finden Sie auf der App :: cpanminus Seite und sehen Sie im Abschnitt Installation.

Ich stelle fest, einige Leute darauf hindeutet, einen Lauf cpan unter sudo. Das war früher notwendig sein, um in das System-Verzeichnis zu installieren, aber moderne Versionen der CPAN-Shell können Sie es konfigurieren sudo verwenden nur für die Installation. Dies ist viel sicherer, da es bedeutet, dass die Tests nicht als root ausgeführt werden.

Wenn Sie eine alte CPAN-Shell haben, einfach die neue cpan installieren ( „installieren CPAN“), und wenn Sie die Shell neu zu laden, sollten Sie aufgefordert, diese neuen Richtlinien zu konfigurieren.

Heute, wenn ich auf einem System mit einem alten CPAN bin ich das erste, was zu tun ist Update der Schale und legen Sie es auf, dies zu tun, so kann ich die meisten meiner cpan Arbeit als normalen Benutzer tun.

Auch ich würde empfehlen, dass Windows-Anwender untersuchen Erdbeer-Perl . Dies ist eine Version von Perl, die mit einem vorkonfigurierten CPAN Schale sowie ein Compiler kommt verpackt. Es enthält auch einige schwer zu kompilieren Perl-Module mit ihren externen C-Bibliothek Abhängigkeiten, insbesondere XML :: Parser. Dies bedeutet, dass Sie das gleiche wie jedes andere Perl Benutzer tun kann, wenn es Module zur Installation kommt, und die Dinge sind in der Regel oft viel mehr „einfach funktionieren“.

Wenn Sie auf Ubuntu und Sie wollen das abgepackte Perl-Modul installieren (zum Beispiel geo :: ipfree) versuchen Sie dies:

    $ apt-cache search perl geo::ipfree
    libgeo-ipfree-perl - A look up country of ip address Perl module

    $ sudo apt-get install libgeo-ipfree-perl

Ein paar Leute erwähnt das cpan Dienstprogramm, aber es ist mehr als nur eine Shell zu starten. geben Sie einfach die Module, die Sie installieren möchten, und lassen Sie es tun, es ist Arbeit.

$prompt> cpan Foo::Bar

Wenn Sie es keine Argumente geben startet er den CPAN.pm Shell. Dies funktioniert auf Unix, Mac, und sollte gut auf Windows (vor allem Strawberry Perl) sein.

Es gibt einige andere Dinge, die Sie auch mit dem cpan Werkzeug tun kann. Hier ist eine Zusammenfassung der aktuellen Merkmale (die neueren sein könnte als die, die mit CPAN.pm und Perl kommt):

-a
Creates the CPAN.pm autobundle with CPAN::Shell->autobundle.

-A module [ module ... ]
Shows the primary maintainers for the specified modules

-C module [ module ... ]
Show the Changes files for the specified modules

-D module [ module ... ]
Show the module details. This prints one line for each out-of-date module (meaning,
modules locally installed but have newer versions on CPAN). Each line has three columns:
module name, local version, and CPAN version.

-L author [ author ... ]
List the modules by the specified authors.

-h
Prints a help message.

-O
Show the out-of-date modules.

-r
Recompiles dynamically loaded modules with CPAN::Shell->recompile.

-v
Print the script version and CPAN.pm version.

sudo perl -MCPAN -e 'install Foo'

Siehe auch Ja, auch können Sie CPAN verwenden. Es zeigt, wie Sie CPAN ohne root oder sudo Zugang nutzen können.

Otto eine guter Vorschlag . Dies funktioniert für Debian zu, ebenso wie alle anderen Debian-Derivat. Das fehlende Stück ist, was zu tun ist, wenn apt-cache search etwas nicht finden.

$ sudo apt-get install dh-make-perl build-essential apt-file
$ sudo apt-file update

Dann, wann immer Sie ein zufälliges Modul haben möchten Sie installieren:

$ cd ~/some/path
$ dh-make-perl --build --cpan Some::Random::Module
$ sudo dpkg -i libsome-random-module-perl-0.01-1_i386.deb

Dies wird Ihnen ein deb-Paket, das Sie installieren können, einige bekommen :: Zufalls :: Module. Einer der großen Vorteile hier ist man-Seiten und Beispielskripts zusätzlich zu dem Modul selbst in Ihrer Distribution Standort der Wahl gestellt werden. Wenn die Distro jemals mit einem offiziellen Paket kommt für eine neuere Version einiger :: Zufalls :: Module, wird es automatisch installiert, wenn Sie apt-get upgrade.

Bereits beantwortet und Antwort akzeptiert - aber trotzdem:

IMHO die einfachste Art der Installation CPAN Module (auf Unix-ähnlichen Systemen, und haben keine Ahnung von dem wondows) ist:

curl -L http://cpanmin.us | perl - --sudo App::cpanminus

Das oben ist die Installation der „Null-Konfiguration CPAN Module Installer“ genannt cpanm. (Kann einige Minuten dauern installieren - den Prozess nicht brechen)

und nach - einfach:

cpanm Foo
cpanm Module::One
cpanm Another::Module

Viele Empfehlung für CPAN.pm, das ist toll, aber wenn man Perl 5.10 verwenden dann musst du auch Zugriff auf CPANPLUS.pm die wie CPAN.pm ist aber besser.

Und natürlich ist es für die Menschen auf CPAN verfügbar noch ältere Versionen von Perl. Warum nicht versuchen:

$ cpan CPANPLUS

Oft kommt es vor, dass cpan installieren mit der Meldung Befehl nicht wie "make test schlechten Zustand zurückgekehrt war, wird das Gerät nicht ohne Kraft"

In diesem Fall finden Sie die Möglichkeit, das Modul zu installieren:

perl -MCPAN -e "CPAN::Shell->force(qw(install Foo::Bar));"

Auf ubuntu meist Perl-Module ist bereits verpackt, so Installation ist viel schneller als die meisten anderen Systeme, die kompilieren müssen.

Um Foo::Bar bei einer commmand Aufforderung zum Beispiel installieren Sie in der Regel nur tun:

sudo apt-get install libfoo-bar-perl

Leider nicht alle Module folgen, dass Namenskonvention.

Auch sollte es funktionieren:

cpan -i module_name

Verwenden cpan Befehl als cpan Modulename

$ cpan HTML::Parser

So installieren Sie Abhängigkeiten automatisch folgen die unten

$ perl -MCPAN -e shell
cpan[1]>  o conf prerequisites_policy follow
cpan[2]>  o conf commit
exit

Ich ziehe App :: cpanminus , es Abhängigkeiten automatisch installiert. Just do

$ cpanm HTML::Parser

2 Möglichkeiten, die ich kenne:

weiter verwenden PPM:

Mit Fenster (ActivePerl) Ich habe verwendet ppm

von der Kommandozeile Typ ppm. Am ppm Prompt ...

ppm> install foo

oder

ppm> search foo

eine Liste von foo-Module zur Verfügung zu bekommen. Geben Sie Hilfe für alle Befehle

UNTER VERWENDUNG CPAN:

Sie können CPAN auch so verwenden ( * nix-Systemen ):

perl -MCPAN -e 'shell'

bekommt man eine Aufforderung

cpan>

an der Eingabeaufforderung ...

cpan> install foo  (again to install the foo module)

Typ h eine Liste von Befehlen für cpan bekommen

Auf Fedora können Sie

# yum install foo

solange Fedora ein vorhandenes Paket für das Modul hat.

Auf Fedora Linux oder Enterprise Linux, yum verfolgt auch Perl-Bibliothek Abhängigkeiten. Also, wenn die Perl-Modul zur Verfügung, und einig rpm-Paket Exporte, die Abhängigkeit, wird es das richtige Paket für Sie installieren.

yum install 'perl(Chocolate::Belgian)'

(höchstwahrscheinlich perl-Schokolade-belgischen Paket oder sogar Schokolade Paket)

Der einfachste Weg für mich ist dies:

PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'install DateTime::TimeZone'

a) automatische rekursiven Abhängigkeits Detektions- / Auflösen / Installation

b) es ist ein Shell-Onliner, gut für die Setup-Skripte

Wenn Sie das neue Modul in einen benutzerdefinierten Speicherort setzen wollen, dass Ihre cpan Shell nicht konfiguriert ist, dann vielleicht, wird folgende nützlich sein.

 #wget <URL to the module.tgz>
 ##unpack
 perl Build.PL
./Build destdir=$HOME install_base=$HOME
./Build destdir=$HOME install_base=$HOME install

Manchmal kann man die yum search foo verwenden die relative Perl-Modul zu suchen, verwenden Sie dann yum install xxx zu installieren.

Unter Windows mit der Activestate Verteilung von Perl, verwenden Sie die ppm Befehl.

Einfach cpan Foo::Bar auf Shell ausführen würde den Zweck dienen.

Scheint, wie Sie bereits Ihre Antwort bekommen, aber ich dachte, ich läuten würde. Das ist, was ich in einigen Skripten auf einem Ubuntu tun (oder debian-Server)

#!/usr/bin/perl

use warnings;
use strict;

#I've gotten into the habit of setting this on all my scripts, prevents weird path issues if the script is not being run by root
$ENV{'PATH'} = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin';

#Fill this with the perl modules required for your project
my @perl = qw(LWP::Simple XML::LibXML MIME::Lite DBI DateTime Config::Tiny Proc::ProcessTable);

chomp(my $curl = `which curl`);

if(!$curl){ system('apt-get install curl -y > /dev/null'); }

chomp(my $cpanm = system('/bin/bash', '-c', 'which cpanm &>/dev/null'));

#installs cpanm if missing
if($cpanm){ system('curl -s -L http://cpanmin.us | perl - --sudo App::cpanminus'); }

#loops through required modules and installs them if missing
foreach my $x (@perl){
    eval "use $x";
    if($@){
        system("cpanm $x");
        eval "use $x";
    }
}

Das funktioniert gut für mich, vielleicht gibt es etwas, hier können Sie verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top