webentwicklung-frage-antwort-db.com.de

Wie kann ich eine bestimmte Version einer Reihe von Perl-Modulen installieren?

Ich muss eine Produktionsumgebung replizieren, um viele Test-/Sitzumgebungen zu erstellen.

Eines der Dinge, die ich tun muss, ist Perl mit all den Modulen aufzubauen, die im Laufe der Jahre installiert wurden (einschließlich interner und externer Module). Ich könnte einfach CPAN.pm Autobundle verwenden, aber dies wird dazu führen, dass die Testumgebung viel neuere Versionen der externen Module hat, die in der Produktion verwendet werden.

Was ist der einfachste/beste Weg, um (viele) versionsspezifische Perl-Module zu bekommen und zu installieren?.

71
Matthew Watson

Erstellen Sie Ihren eigenen CPAN-Spiegel mit genau dem, was Sie wollen. Stratopan.com , ein Dienst, und Pinto , Werkzeuge, die darauf aufbauen, können Ihnen dabei helfen.

Die CPAN-Tools installieren nur die neueste Version einer Distribution, da PAUSE nur die neueste Version indiziert. Sie können jedoch Ihr eigenes, privates CPAN erstellen, das genau die gewünschten Distributionen enthält. Sobald Sie einen eigenen CPAN-Spiegel mit nur dem haben, was Sie möchten, richten Sie Ihre CPAN-Tools nur auf diesen Spiegel, sodass nur diese Versionen installiert werden. Mehr dazu in einer Minute.

Nun möchten Sie mehrere Versionen davon haben. Sie können so viele Spiegel erstellen, wie Sie möchten, und Sie können die Spiegel auch in die Quellcodeverwaltung versetzen, damit Sie jede Version des Spiegels überprüfen können, die Ihnen gefällt.

Mit Tools wie CPAN :: Mini :: Inject können Sie Ihr eigenes CPAN einrichten. Schauen Sie sich meine Vorträge auf Slideshare für die grundlegenden Beispiele an, und einige meine Videos auf Vimeo für einige der Demonstrationen. Sehen Sie sich alles an, das im Titel "CPAN" oder "BackPAN" enthält. Ich denke, ich könnte ein paar Sachen darüber in The Perl Review haben, oder sollte es bis zur nächsten Ausgabe tun. :)

In letzter Zeit habe ich an einem Programm namens dpan (für DarkPAN) gearbeitet, mit dem Sie nach zufälligen Verzeichnissen suchen, Perl-Distributionen in diesen finden und die von Ihnen benötigten Struktur- und Indexdateien erstellen können. Sie führen dpan aus, erhalten eine URL, auf die Ihr CPAN-Client verweist, und schon kann es losgehen. Es ist Teil meines MyCPAN-Indexer-Projekts, das sich in Github befindet. Es ist noch nicht für die unbeaufsichtigte öffentliche Nutzung bereit, da ich hauptsächlich mit Firmenkunden zusammenarbeite, um deren Einrichtung anzupassen. Wenn Sie daran interessiert sind, können Sie mir gerne Fragen stellen.

Außerdem habe ich kürzlich CPAN :: PackageDetails veröffentlicht, mit dessen Hilfe Sie die richtige Indexdatei erstellen können. Es ist auch noch ein bisschen jung, aber wenn Sie etwas Besonderes brauchen, fragen Sie einfach.

38
brian d foy

bdfoy bietet die beste Lösung im großen Maßstab. Wenn Sie jedoch nur einige Module installieren möchten, können Sie die CPAN-Shell auffordern, eine bestimmte Distribution zu installieren, indem Sie auf einen Pfad zu einem Tarball verweisen (relativ zum oberen Rand des CPAN-Baums).

cpan> install MSCHWERN/Test-Simple-0.62.tar.gz

Wenn Sie eine URL zu BackPAN in Ihre URL-Liste einfügen, können Sie jede ältere Version installieren.

cpan> o conf urllist Push http://backpan.Perl.org/

Dies ist in der CPAN.pm FAQ unter "Wie installiere ich ein 'DEVELOPER RELEASE' eines Moduls?"

105
Schwern
cpan install App::cpanminus
cpanm Your::[email protected]

(Carton verwendet, wie in anderen Antworten angegeben, cpanm, um explizite Versionsanforderungen aufzulösen.)

29
Ether

[Es ist fast fünf Jahre her und dies ist eine häufig gestellte und beantwortete Frage, die viele Ansichten hatte. Da diese Seite bei Google-Suchen immer noch angezeigt werden muss, kann ein Update nicht schaden.]

Carton ist hier erwähnenswert. Carton ist ein relativ neues Werkzeug im selben Stil wie App::cpanminus, App::cpanoutdated, perlbrew, et. al. Der Autor (Miyagawa) nennt es "Alpha" -Qualität, aber selbst in seinem aktuellen Zustand erleichtert der Karton die Wartung mehrerer Umgebungen von versionierten Modulen über Maschinen hinweg.

Pinto ist ebenfalls ein aktuelles Tool, das für einige der Antworten relevant ist (in der Tat ist einer der Befragten ein Mitwirkender).

9
G. Cito

Stratopan.com ist eine andere Alternative. Stratopan bietet private CPANs in der Cloud an. Sie können Ihr Stratopan-Repository mit bestimmten Versionen von Modulen (und deren Abhängigkeiten) füllen und diese dann mithilfe der Standard-Perl-Toolkette installieren. Das Repository ändert sich nur, wenn Sie beschließen, es zu ändern, sodass Sie immer die Versionen der gewünschten Module erhalten.

Haftungsausschluss: Ich betreibe Stratopan.

Es scheint, als würde ein cpanfile erstellt, in dem alle Ihre Module und gewünschten Versionen aufgelistet sind (unter Verwendung des == <version>-Syntax zum Sperren auf ein bestimmtes Release) könnte auch hier gut funktionieren. Das würde bedeuten, Carton oder cpanm für die Installation der Module zu verwenden.

Dies hätte den Vorteil, dass Sie die Datei schnell und einfach optimieren können, um das Upgrade bestimmter Module in einer Entwicklungs- oder Staging-Umgebung zu testen - etwas, das ein privater CPAN-Spiegel nicht zulässt (ohne mehrere Spiegel zu erstellen).

2
Randall