7 Stimmen

PEAR-Pakete zum Subversion-Repository hinzufügen?

Ich arbeite an einem Projekt, das PEAR-Pakete verwenden wird. Da man nie weiß, welche Version des PEAR-Pakets auf dem eigenen Hosting-Provider installiert ist (und vor allem, weil ich einen Patch für eines der Pakete benötige), möchte ich den PEAR-Quellcode für mein Projekt direkt in SVN einbinden, damit andere Entwickler sofort über die Abhängigkeiten verfügen können.

Aber alles, was mit PEAR zu tun hat, scheint absolute Verzeichnisse zu haben! Das Ausführen von "pear config-create . pear.conf", um ein neues PEAR-Verzeichnis einzurichten, schlägt sogar mit der Fehlermeldung fehl:

Das Stammverzeichnis muss ein absoluter Pfad sein

Ich habe mir die pear-Konfigurationsdateien auf einigen anderen Servern angesehen und auch sie scheinen absolute Pfade zu haben.

Wenn ein Entwickler dies auf seinem eigenen Rechner auscheckt oder wir alles auf einen Server exportieren, wissen wir nicht, wie der absolute Pfad aussehen wird.

Gibt es eine Möglichkeit, dies einzurichten?

3voto

MDCore Punkte 16605

Ich konnte meinen Hosting-Anbieter nicht dazu bringen, die gewünschten PEAR-Bibliotheken zu installieren. Hier ist, wie ich PEAR Teil meines Quellbaums gemacht.

1. Erstellen Sie eine Datei remote.conf

Die Erstellung der remote.conf ist ein wenig anders als im Handbuch beschrieben. Sagen wir, ich möchte PEAR installieren in vendor/PEAR eines Projekts. Sie würden das so machen:

#from the root of the project
$ cd vendor ; mkdir PEAR ; cd PEAR
$ pear config-create <absolute path to project>/vendor/PEAR/ remote.conf 

2. die Kanäle aktualisieren

$ pear -c remote.conf channel-update pear.php.net

3. PEAR installieren

$ pear -c remote.conf install --alldeps pear

4. andere Bibliotheken installieren

$ pear -c remote.conf install --alldeps <libname>

Voila... PEAR ist Teil des Quellbaums.

Die Fänge:

  • Auch wenn die Pfade in remote.conf absolut sind, werden die Bibliotheken selbst noch funktionieren. Es ist nur die Aktualisierung, die nicht von überall aus funktionieren wird. Sie müssen sie von demselben Pfad aus aktualisieren, von dem aus sie erstellt wurde - im obigen Fall also von vendor/PEAR .
  • Einige Bibliotheken mögen es nicht, wenn sie außerhalb des Pfades liegen, daher müssen Sie eventuell noch vendor/PEAR in den Pfad einfügen (ich habe den Code, fragen Sie einfach, wenn Sie ihn brauchen.)

2voto

saltybeagle Punkte 746

Wenn Sie PHP 5.3.1 haben, verwenden Sie Pyrus, den PEAR2-Installer. Die von Pyrus verwalteten Installationen können an jeden beliebigen Ort verschoben werden.

Pyrus herunterladen -

$> wget http://pear2.php.net/pyrus.phar

Erstellen Sie ein Verzeichnis, in dem Sie die von pyrus installierten Pakete speichern:

$> mkdir mylibs

Pakete installieren -

$> php pyrus.phar mylibs install pear/Net_URL

Ihr installiertes Paket befindet sich nun unter mylibs/php/Net/URL.php

Beachten Sie, dass wir das mylibs-Verzeichnis übergeben haben, um anzugeben, in welches Verzeichnis installiert werden soll, sowie den Kanalnamen 'pear' (die Vorgabe in pyrus ist pear2.php.net). Der Einfachheit halber kann die Datei pyrus.phar vom Client aus ausgeführt werden, wenn Sie chmod +x eingeben.

Sie können die mylibs Verzeichnis, wo immer Sie es wünschen. Sie können es sogar an Ihr Repository übergeben.

Viele Dokumente auf der PEAR-Website .

1voto

troelskn Punkte 110542

Ich bin mir nicht ganz sicher, ob das Ihre Frage beantwortet, aber Sie können den Speicherort für das PEAR-Repository auf der Kommandozeile angeben, so dass Sie ein lokales Repository erstellen können, indem Sie:

pear install --force --installroot=/path/to/my/pear/ PEAR

Dann können Sie zusätzliche Pakete installieren:

pear install --installroot=/path/to/my/pear/ SomePackage

Um das lokale Repo aus Ihrer Anwendung heraus zu verwenden, müssen Sie sicherstellen, dass die include_path auf das lokale Repository verweist und nicht auf das (global installierte) Standard-Repository. Sie möchten also, dass es wie folgt aussieht:

include_path = ".:/path/to/my/pear/usr/share/php"

Re :

Eigentlich möchte er die absoluten Pfade vermeiden, damit die Lösung von vielen Rechnern ausgecheckt werden kann, ohne dass es darauf ankommt, unter welchem Pfad das Repository auf jedem einzelnen Rechner installiert ist.

-- Carlos Lima

Sie scheinen Recht zu haben. In diesem Fall würde ich Ihnen raten, das PEAR-Repository nicht in Ihr SVN-Repository einzuchecken, sondern ein Deployment-Skript zur Installation/Aktualisierung des Repositorys auf dem Server zu verwenden. Stellen Sie einfach sicher, dass Sie eine bestimmte Version installieren. (Sie faire eine automatische Bereitstellung haben, richtig?)

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