2010-10-14 29 views
9

Ich postete this question auf der Suche nach etwas ähnlich wie Buildout für Perl. Ich denke, Shipwright ist, was ich suche, aber ich bin nicht wirklich sicher. Ich habe damit herumgespielt und ein Projekt erstellt, alle meine Quellen und Abhängigkeiten importiert und alles in ein Schiff exportiert, dann wurde die Dokumentation einfach gestoppt. Was mache ich mit einem Werftschiff? Mache ich meine eigentliche Entwicklungsarbeit im Schiff oder mache ich meine Entwicklung in der Werft? Ich gehe davon aus, dass das Schiff nur für den Einsatz vorgesehen ist, aber wie stelle ich ein Schiff tatsächlich auf einen Webserver (sagen wir, ich benutze Linux, Apache und laufe einfach gerade cgi).Was ist eine gute Möglichkeit, eine Perl-Anwendung bereitzustellen?

Ist Shipwright das Richtige für das, was ich zu erreichen versuche, oder gibt es etwas anderes, das angemessener wäre? Im Idealfall könnte ich Shipwright ähnlich wie Buildout verwenden. Ich verwende Buildout, um eine nette isolierte Umgebung für meine Entwicklung zu erstellen, und ich verwende Buildout, wenn ich auf Live-Servern arbeite, um alle Abhängigkeiten meiner Anwendung zu verwalten.

EDIT: Hier sind die Highlights von was ich mit Buildout tun kann, die ich gerne in Perl tun würde.

Mit Buildout habe ich eine Datei in meiner Codebasis, die Abhängigkeiten auflistet (was für Perl entweder CPAN-Module oder andere Quell-Repositories wären). Ich kann ein Bootstrap-Skript ausführen, das alle diese Abhängigkeiten abruft und sie in ein Verzeichnis innerhalb meines Projekts und NICHT installieren sie auf einer System-Ebene. Buildout erstellt auch Hilfsskripts, die alles Mögliche ausführen können (Tests ausführen, andere Befehlszeilentools, alles wirklich), und diese Skripte fügen dem Pfad explizit die Abhängigkeiten hinzu, so dass alle meine Abhängigkeiten für den Import verfügbar sind.

Was dies wirklich sehr gut ist, ist, dass es mir erlaubt, meine Abhängigkeiten zu verwalten, ohne jemals irgendetwas auf einer Systemebene zu installieren. Das macht den Wechsel von einer Version zur anderen sehr einfach. Außerdem können mehrere Buildout-Projekte auf demselben System mit verschiedenen Versionen desselben Moduls ausgeführt werden. Schließlich ist ein großer Vorteil, dass ich mit der Buildout-Verzeichnisstruktur die Abhängigkeiten zur Quellcodeverwaltung festschreiben und auf einer neuen Maschine bereitstellen kann. Ich muss nur einen Checkout durchführen, und alle meine Abhängigkeiten sind bereits erfüllt, ohne etwas zu installieren eine Systemebene.

+0

Die Optionen, die Sie betrachten sollten, hängen stark davon ab, was Sie tun möchten. Vielleicht möchten Sie sich auch PAR ansehen. – tsee

+0

Neugierig, da ich nie Buildout habe; Welches Problem lösen Systeme wie dieses? Den Code verteilen? Den Code ausführen? –

+0

Für alle, die dies gefunden haben, indem sie nach Informationen über Shipwright suchen, gibt es ein wirklich nettes Tutorial hier, wie man sein Schiff "versendet". http://serialized.net/2010/08/deploying-self-contained-perl-dancer-applications/ Ich versuche gerade, einen Bereitstellungsprozess für eine Webanwendung zu erstellen. – Relequestual

Antwort

3

Ich glaube nicht, dass Sie etwas genau wie Buildout in Perl finden, aber Sie könnten ein paar Dinge zusammenstellen, die den Trick machen würden.

Sie ein Standard-Build.PL Skript für Module::Build verwenden könnten für Ihre Abhängigkeiten verwalten und mit Befehlen zum Ausführen von Tests usw.

Dann könnten Sie cpanminus verwenden, um die Installation der Abhängigkeiten in einem lokalen zu tun (Nicht- System) Verzeichnis.

Dann können Sie möglicherweise Shipwright verwenden, um das Bündeln und die Bereitstellung des Projekts mit diesen jetzt lokalen Abhängigkeiten durchzuführen.

+0

Ich mag den Klang davon. Von den Geräuschen davon glaube ich nicht, dass ich Shipwright mit Module :: Build und cpanminus brauche. Ich werde mir die ansehen, danke! –

+0

Es hört sich so an, als könnte sich das ähnlich wie Buildout verhalten, es beinhaltet aber auch viel manuelle Arbeit (ich versuche jede Abhängigkeit einzeln zu installieren), ich suche nach etwas komplett Automatisiertem. Vielleicht muss ich nur meine eigene automatisierte lokalisierte Umgebung entwickeln, die cpanm unter den Abdeckungen verwendet. –

+0

@matthew - Module :: Build hat ein "installdeps" -Ziel, das alle Abhängigkeiten und ihre Abhängigkeiten installiert. Ich weiß nicht, ob es einen einfachen Weg gibt, um cpanm in das zu haken, und ich weiß nicht, wie man es am einfachsten anwendet, etwas wie local :: lib zu benutzen, um Dinge lokal zu installieren, usw. Aber das sollte Sie schon anfangen. – mpeters

Verwandte Themen