12 Stimmen

Welche Module werden mit Perl verteilt?

Woher weiß ich, welche Module mit Perl verteilt werden?

Meine erste Vermutung ist, dass die aufgeführten Kernmodule aquí sind immer inbegriffen, auch wenn ich dies nicht ausdrücklich erwähnt finde. Ich habe jedoch Module außerhalb dieses Satzes (z. B. LWP) verwendet, ohne sie unter Mac OS X und Linux installieren zu müssen.

Um meine Frage ein wenig zu präzisieren:

  • Welche Module werden bei allen Perl-Installationen mitgeliefert?

Und: Wie kann ich herausfinden, welche Module mit verteilt wurden:

  • Linux (insbesondere Debian/Ubuntu)?

  • Mac OS X?

  • Solaris?

In jedem Fall verwende ich die Version von Perl, die standardmäßig mit der neuesten Version des Betriebssystems geliefert wird.

TIA.

Aktualisierung: Der Grund für die Frage ist, dass ich auf Mac OS X und Linux für den Einsatz auf verschiedenen Linux und Solaris entwickeln, und ich habe nicht Root auf einigen dieser Systeme, und im Fall von Mac OS X habe ich nicht einmal einen Compiler AFAIK. Ich möchte also wissen, welche Module ich in allen vier Bereitstellungen ohne weitere Installationen zur Verfügung habe.

15voto

Leon Timmermans Punkte 29718

Wenn Sie Folgendes installieren Modul::CoreList das Kommandozeilenprogramm corelist kann Ihnen alles über Module und ihre Versionen in verschiedenen Versionen von Perl sagen. Die Seite, die Sie verlinkt haben, gibt einen Überblick über die neueste Version von Perl.

Beachten Sie, dass die Distributionen oft viel mehr als diese Liste standardmäßig zur Verfügung stellen, aber es kann davon ausgegangen werden, dass diese Liste überall vorhanden ist (es sei denn, es handelt sich ausdrücklich um ein betriebssystemabhängiges Modul wie Win32).

9voto

Schwern Punkte 138322

Die richtigen, einfachen Antworten wurden bereits gegeben, aber ich glaube, Sie haben die falsche Frage gestellt. Sie versuchen wahrscheinlich, nur mit Kernmodulen zu entwickeln. Und warum? Wahrscheinlich tun Sie das, weil Sie sich nicht mit Abhängigkeiten beschäftigen wollen. Und warum? Weil sie sehr lästig sein können. Aber Perl zu entwickeln ohne CPAN fehlt die Hälfte der Leistung. Sie verkrüppeln sich selbst. Das ist es wert.

Update : Jetzt, da ich mehr darüber weiß, was Sie zu tun versuchen, kann ich die richtige Frage beantworten. Die erste ist: "Wie installiere ich ein Modul, wenn ich keine Root-Rechte habe?" Die einfache Antwort ist diese:

perl Makefile.PL PREFIX=/some/path LIB=/some/path/lib
...and all the rest as normal...

für MakeMaker-basierte Module (LIB wird verwendet, um die ansonsten ungenaue Natur von PREFIX zu kontrollieren. INSTALL_BASE wird bevorzugt, ist aber nicht abwärtskompatibel).

und dies für Modul::Build

perl Build.PL --install_base=/some/path

und dann landen die Module in /some/path/lib und Sie können die PERL5LIB Umgebungsvariable oder use lib qw(/some/path/lib) in Ihrem Code.

Das bedeutet, dass Sie abhängige Module direkt in Ihre Software-Distribution einfügen und ausliefern können. Das funktioniert gut für reine Perl-Module. Für Dinge, die einen Compiler benötigen, sehen Sie sich PAR wie andere vorgeschlagen haben, um kompilierte ausführbare Dateien ausliefern zu können.

Alternativ können Sie Ihr Material auch als CPAN-Modul verteilen, komplett mit den angegebenen Abhängigkeiten, und diese von einem CPAN-Client auflösen lassen. Sie können sogar Modul::AutoInstallation um diesen Prozess außerhalb eines CPAN-Clients durchzuführen.

Sie sehen also, Sie sind nicht darauf beschränkt, nur Kernmodule zu verwenden, wenn Sie eine Perl-Anwendung ausliefern.

8voto

pjf Punkte 5921

Modul::CoreList wurde bereits erwähnt. Es kommt mit einer Befehlszeilenschnittstelle um die Dinge einfach zu machen. Es ist großartig, wenn Sie es bereits installiert haben oder ein Programm haben, das herausfinden muss, was vielleicht nicht mit einer bestimmten Version von Perl kommt.

Wenn Sie wissen wollen, welche Module mit Ihrer speziellen Perl-Version mitgeliefert werden, können Sie Folgendes ausführen perldoc perlmodlib in der Befehlszeile, um eine vollständige Liste zu erhalten. Für ältere oder neuere Versionen von Perl können Sie einfach zu Perls Seite auf dem CPAN und wählen Sie die gewünschte Version (z. B. 5.6.2) aus der Dropdown-Liste, und navigieren Sie dann zum perlmodlib Seite in der Dokumentation. (Tippen perlmodlib in der Textsuche Ihres Browsers hilft Ihnen dabei).

Wenn Sie darüber nachdenken no ein Modul zu verwenden, weil es in einer älteren Version von Perl nicht zum Kernumfang gehört, dann sollten Sie die Verwendung von PAR, das Perl-Archivierungsprogramm , um Ihre zusätzlichen Abhängigkeiten zu bündeln, oder sogar Perl selbst! Perl Training Australia hat auch eine Perl-Tipp zur Verwendung von PAR in dem die Grundlagen für den Einstieg in PAR behandelt werden.

Ich wünsche Ihnen alles Gute,

Paul

6voto

brian d foy Punkte 124323

Eine schnelle Möglichkeit, die installierten Module und Versionen zu sehen, bietet das Tool cpan, mit dem Sie ein Autobundle erstellen können:

 cpan -a

ExtUtils::Installed kann Ihnen helfen, wenn Sie etwas Anspruchsvolleres benötigen.

Früher gab es die Idee einer "Standardbibliothek", aber die gibt es in der Realität nicht wirklich. Modul::CoreList sagt Ihnen, was in der "Standardbibliothek" enthalten ist, aber viele Hersteller installieren zusätzliche Module und einige entfernen oder aktualisieren sogar Module. Außerdem werden Distributionen wie Erdbeerperle y ActivePerl werden mit vielen Bonusmodulen geliefert.

Außerdem benötigen Sie für die Installation von Modulen keine Root-Rechte. Sie brauchen Root nur, um Module zu installieren, wenn Root Module installieren kann. perlfaq8 finden Sie alle Einzelheiten zur Installation von Modulen, wo immer Sie wollen. Ich empfehle, dass Sie alle Module außerhalb der verteilten @INC-Verzeichnisse installieren, damit Sie Ihr verteiltes Perl sauber halten.

Viel Glück!

1voto

singingfish Punkte 3106

Klingt, als wollten Sie local::lib . Alle Vorteile von cpan ohne Root (und lässt das System perl unangetastet).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X