Artikelformat

Der eigene PEAR-Server

Das Jahr 2011 hat gerade begonnen und somit kann ich allen Lesern noch alles Gute im neuen Jahr wünschen. Ich habe mir dieses Jahr ein paar interessante Dinge vorgenommen und darum wird es auch keinen Mangel an spannenden Artikeln geben. Ich hoffe, dass es auch dieses Jahr in der Welt der PHP-Blogs wieder viele spannende Artikel gibt und somit viele Inspirationsmomente gegeben sind.

Kommen wir nun zu dem heutigen Thema. Der eigene PEAR-Server. PHP bietet schon sehr lange eine nette Möglichkeit Pakete zu erstellen und Abhängigkeiten unter diesen Paketen abzubilden. Wenn man nicht in dem offiziellen Repository seinen Code ablegen möchte oder darf, muss ein eigener Server her.

Eine sehr einfache Art einen solchen Server aufzusetzen ist das Pirum-Skript von Fabien Potencier. Das Skript erzeugt anhand gegebener Informationen eine Verzeichnisstruktur, die man mit Hilfe eines gewöhnlichen Webservers ohne jeglichen serverseitigen Skriptsprachen im Inter- oder Intranet bereitstellen kann. Die angebotenen Informationen können von pear verarbeitet werden. Um den Zugriff zu vereinfachen gibt es auch eine index.html, die man als menschlicher Benutzer dankend annimmt. Hier sind Informationen zu den Paketen, dem Server und zu der Nutzung des Servers mit pear zu finden. Das Pirum-Skript generiert also alle notwendigen Informationen.

Pirum installiert man wie gewohnt:

1
2
$ pear channel-discover pear.pirum-project.org
$ pear install pirum/Pirum-beta

Nun kann man pirum direkt aufrufen.

1
$ pirum

Um nun den PEAR-Server einzurichten muss man ein Verzeichnis anlegen, in dem später die statischen Dateien abgelegt werden. Darin muss man eine Datei zur Grundkonfiguration ablegen. Diese nennt sich pirum.xml und besteht nur aus folgendem Inhalt:

1
2
3
4
5
6
7
<?xml version="1.0" encoding="UTF-8" ?>
<server>
  <name>pear.example.org</name>
  <summary>Pirum PEAR channel</summary>
  <alias>example</alias>
  <url>http://pear.example.org/</url>
</server>

Der Name ist der Identifier, unter dem der Server in pear registriert werden wird. Der alias ist sozusagen der Package-Root Somit kann man 2 gleichlautende Pakete unter 2 verschiedenen Servern verwalten, ohne dass Pear Probleme bekommt. Bei der Installation von Pirum wurde pirum genutzt. Ich würde hier den Firmen- oder den Projektnamen empfehlen. Hinter Url versteckt sich die URL des Pear-Repositorys. Diese wird für den channel-discover Befehl genutzt. Es handelt sich dabei also um die Adresse, unter das Repository später erreichbar sein wird.

Sind diese Informationen vorhanden, kann die Basis Struktur erzeugt werden:

1
$ pirum build pear/

In diesem Beispiel ist pear/ das Verzeichnis in dem die pirum.xml Datei liegt. Wenn man nun mit einem Browser zum Repository surft, wird man neben den Informationen aus der xml-Datei ein paar grundsätzlich Informationen finden, wie man den Channel hinzufügt und wie man ein Paket installieren kann.

Wie man ein Pear-Package baut, habe ich bereits hier beschrieben.

Das Package fügt man dem Channel nun so hinzu:

1
$ pirum add pear MyPackage-1.0.0.tgz

Daraufhin werden die statischen Dateien neu erzeugt und die Infomationen zu diesem Paket können nun abgerufen werden. Wie zuvor sowohl per pear als auch per Browser.

Fallstricke:

  • Um das Package dem Channel-Server hinzufügen, muss in der package.xml der richtige Channel gesetzt sein. Ist dies nicht der Fall, bricht Pirum die Verarbeitung ab. Spätere korrekte Package-Dateien werden dann solange nicht hinzugefügt, wie das fehlerhafte Package vorhanden ist. Im get-Verzeichnis findet man die *.tgz Dateien und kann den Störenfried manuell löschen.
  • Möchte man das Package mit pear package erstellen, so muss der Channel-Server bereits bekannt sein. Ansonsten bricht pear die Verarbeitung ab.

Alternative Installation:
Als Alternative zu der Installation per pear, kann man auch das Pirum-Skript aus dem git-Repository laden. Es handelt sich nur um eine Datei, die ca 1300 Zeilen hat. Alle Informationen und HTML-Codeblöcke sind darin enthalten.

1 Kommentar

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.