it-swarm-eu.dev

Was ist der einfachste Weg, um ein fehlendes Perl-Modul zu installieren?

Ich erhalte diesen Fehler:

Can't locate Foo.pm in @INC

Gibt es eine einfachere Möglichkeit, es zu installieren, als es herunterzuladen, zu entpacken, zu machen usw.?

170
dreeves

Unter Unix :

normalerweise starten Sie cpan in Ihrer Shell:

# cpan

und Typ

install Chocolate::Belgian

oder in Kurzform:

cpan Chocolate::Belgian

Unter Windows :

Wenn Sie ActivePerl unter Windows verwenden, hat PPM (Perl Package Manager) weitgehend die gleiche Funktionalität wie CPAN.pm.

Beispiel:

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

siehe Wie installiere ich Perl-Module? in den CPAN-FAQ

Viele Distributionen liefern viele Perl-Module als Pakete aus.

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

Sie sollten immer bevorzugen, da Sie von automatischen (Sicherheits-) Updates und der Einfachheit von entfernen . Dies kann mit dem Tool cpan selbst ziemlich schwierig sein.

Für Gentoo gibt es ein Nice-Tool namens g-cpan, das das Modul aus CPAN erstellt/installiert und ein Gentoo-Paket erstellt (- ebuild ) für dich.

208

Versuchen Sie App :: cpanminus :

# cpanm Chocolate::Belgian

Es ist großartig, um einfach etwas zu installieren. Es bietet keine der komplexeren Funktionen von CPAN oder CPANPLUS und ist daher einfach zu verwenden, vorausgesetzt, Sie wissen, welches Modul Sie installieren möchten. Wenn Sie cpanminus noch nicht haben, geben Sie einfach Folgendes ein:

# cpan App::cpanminus

um es zu installieren.

Es ist auch möglich, es zu installieren, ohne überhaupt cpan zu verwenden. Die grundlegende bootstrap Prozedur ist,

curl -L http://cpanmin.us | Perl - --Sudo App::cpanminus

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

61
Philip Potter

Ich stelle fest, dass einige Leute vorschlagen, unter Sudo einen Cpan-Lauf durchzuführen. Früher war dies für die Installation im Systemverzeichnis erforderlich, aber in modernen Versionen der CPAN-Shell können Sie diese so konfigurieren, dass Sudo nur für die Installation verwendet wird. Dies ist viel sicherer, da Tests nicht als Root ausgeführt werden.

Wenn Sie eine alte CPAN-Shell haben, installieren Sie einfach das neue cpan ("install CPAN"). Wenn Sie die Shell neu laden, sollten Sie aufgefordert werden, diese neuen Anweisungen zu konfigurieren.

Wenn ich heutzutage auf einem System mit einem alten CPAN bin, aktualisiere ich zuerst die Shell und richte sie so ein, dass ich den größten Teil meiner Cpan-Arbeit als normaler Benutzer ausführen kann.

Außerdem würde ich Windows dringend empfehlen, nach Erdbeer-Perl zu suchen. Dies ist eine Version von Perl, die mit einer vorkonfigurierten CPAN-Shell sowie einem Compiler geliefert wird. Es enthält auch einige schwer zu kompilierende Perl-Module mit ihren externen C-Bibliotheksabhängigkeiten, insbesondere XML :: Parser. Dies bedeutet, dass Sie bei der Installation von Modulen das Gleiche tun können wie bei jedem anderen Perl-Benutzer, und die Dinge funktionieren in der Regel viel häufiger.

29
Dave Rolsky

Wenn Sie unter Ubuntu arbeiten und das vorinstallierte Perl-Modul (z. B. geo :: ipfree) installieren möchten, versuchen Sie Folgendes:

 $ apt-cache-Suche Perl geo :: ipfree 
 libgeo-ipfree-Perl - Ein Land der IP-Adresse nachschlagen Perl-Modul 
 
 $ Sudo apt-get installiere libgeo-ipfree-Perl 
24
Otto

Ein paar Leute erwähnten das Dienstprogramm cpan, aber es ist mehr als nur das Starten einer Shell. Geben Sie ihm einfach die Module, die Sie installieren möchten, und lassen Sie ihn arbeiten.

$Prompt> cpan Foo::Bar

Wenn Sie keine Argumente angeben, wird die CPAN.pm-Shell gestartet. Dies funktioniert unter Unix, Mac und sollte unter Windows (insbesondere Strawberry Perl) in Ordnung sein.

Es gibt noch einige andere Dinge, die Sie mit dem cpan-Tool tun können. Hier ist eine Zusammenfassung der aktuellen Funktionen (die möglicherweise neuer sind als die, die mit CPAN.pm und Perl geliefert werden):

-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.
15
brian d foy

Sudo Perl -MCPAN -e 'install Foo'

11
dreeves

Siehe auch Ja, Sie können auch CPAN verwenden . Es zeigt, wie Sie CPAN ohne Root- oder Sudo-Zugriff verwenden können.

10
Corion

Otto machte ein guter Vorschlag . Dies funktioniert auch für Debian sowie für jedes andere Debian-Derivat. Das fehlende Teil ist, was zu tun ist, wenn die Suche in apt-cache etwas nicht findet.

$ Sudo apt-get install dh-make-Perl build-essential apt-file
$ Sudo apt-file update

Wann immer Sie ein zufälliges Modul haben, das Sie installieren möchten:

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

Dies gibt Ihnen ein Deb-Paket, das Sie installieren können, um Some :: Random :: Module zu erhalten. Einer der großen Vorteile hierbei sind Manpages und Beispielskripte, die zusätzlich zum eigentlichen Modul an dem Ort Ihrer Wahl abgelegt werden. Wenn die Distribution jemals ein offizielles Paket für eine neuere Version von Some :: Random :: Module herausbringt, wird es automatisch installiert, wenn Sie ein Upgrade erhalten.

8
mikegrb

Bereits beantwortet und angenommene Antwort - aber trotzdem:

IMHO ist der einfachste Weg, CPAN-Module zu installieren (auf Unix-ähnlichen Systemen und ohne Ahnung von den Wondows):

curl -L http://cpanmin.us | Perl - --Sudo App::cpanminus

Das Obige installiert das "Null-Konfigurations-CPAN-Modul-Installationsprogramm" mit dem Namen cpanm. (Die Installation kann einige Minuten dauern - brechen Sie den Vorgang nicht ab.)

und danach - einfach:

cpanm Foo
cpanm Module::One
cpanm Another::Module
7
jm666

Viele Empfehlungen für CPAN.pm, Was großartig ist, aber wenn Sie Perl 5.10 Verwenden, haben Sie auch Zugriff auf CPANPLUS.pm, Was wie CPAN.pm Aussieht. aber besser.

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

$ cpan CPANPLUS
6
Dave Cross

Oft kommt es vor, dass der Befehl cpan install mit der Meldung "make test hat einen schlechten Status zurückgegeben, wird nicht ohne Kraft installiert" fehlschlägt.

In diesem Fall können Sie das Modul folgendermaßen installieren:

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

Auf Ubuntu sind die meisten Perl-Module bereits gepackt, so dass die Installation viel schneller ist als bei den meisten anderen Systemen, die kompiliert werden müssen.

Installieren Foo::Bar Bei einer Eingabeaufforderung zum Beispiel machen Sie normalerweise einfach Folgendes:

Sudo apt-get install libfoo-bar-Perl

Leider folgen nicht alle Module dieser Namenskonvention.

4
Myforwik

Auch sollte es funktionieren:

cpan -i module_name
4
Mandar Pande

Verwenden Sie den Befehl cpan als cpan Modulename

$ cpan HTML::Parser

Befolgen Sie die nachstehenden Anweisungen, um Abhängigkeiten automatisch zu installieren

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

Ich bevorzuge App :: cpanminus , es installiert Abhängigkeiten automatisch. Mach einfach

$ cpanm HTML::Parser
4
Chankey Pathak

Der einfachste Weg für mich ist:

Perl_MM_USE_DEFAULT=1 Perl -MCPAN -e 'install DateTime::TimeZone'

a) Automatische Erkennung/Auflösung/Installation von rekursiven Abhängigkeiten

b) Es ist ein Shell-Onliner, der sich gut für Setup-Skripte eignet

3
Mister X

2 Möglichkeiten, die ich kenne:

SING PPM:

Mit Windows (ActivePerl) habe ich ppm verwendet

von der Befehlszeile geben Sie ppm ein. Am ppm Prompt ...

ppm> install foo

oder

ppm> search foo

um eine Liste der verfügbaren Module zu erhalten. Geben Sie help für alle Befehle ein

SING CPAN:

sie können CPAN auch wie folgt verwenden (* nix systems):

Perl -MCPAN -e 'Shell'

hol dir einen Prompt

cpan>

an der Eingabeaufforderung ...

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

geben Sie h ein, um eine Liste der Befehle für cpan abzurufen

3
JWHEAT

Auf Fedora Linux oder Enterprise Linux, yum protokolliert auch die Abhängigkeiten der Perl-Bibliothek. Wenn das Perl-Modul verfügbar ist und einige RPM-Pakete diese Abhängigkeit exportieren, installiert es das richtige Paket für Sie.

yum install 'Perl(Chocolate::Belgian)'

(höchstwahrscheinlich Perl-Chocolate-Belgian-Paket oder sogar ChocolateFactory-Paket)

3
Michal Ingeli

Auf Fedora können Sie verwenden

# yum install foo

solange Fedora ein Paket für das Modul hat.

3
Bruce Alderman

Wenn Sie das neue Modul an einem benutzerdefinierten Speicherort ablegen möchten, für den Ihre cpan-Shell nicht konfiguriert ist, ist möglicherweise Folgendes hilfreich.

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

Manchmal kannst du das yum search foo, um das relative Perl-Modul zu durchsuchen, und dann yum install xxx installieren.

2
Chris Forever

Scheint, als hättest du deine Antwort bereits erhalten, aber ich dachte, ich würde mitmachen. Dies ist, was ich in einigen Skripten auf einem Ubuntu (oder Debian-Server) tue.

#!/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([email protected]){
        system("cpanm $x");
        eval "use $x";
    }
}

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

1
Ed Dunn

Verwenden Sie unter Windows mit der ActiveState-Distribution von Perl den Befehl ppm .

1
PW.

Die einfache Ausführung von cpan Foo::Bar Auf Shell würde den Zweck erfüllen.

1
Kamal Nayan