Mini Howto: Serveur et Packages PEAR
By Geoffrey on Friday 2 March 2007, 12:11 - Geekeries - Permalink
Pour installer le serveur PEAR, c'est simple:
pear channel-discover pear.chiaraquartet.net pear install chiara/Chiara_PEAR_Server pear run-scripts Chiara_PEAR_Server
Ensuite on répond aux question, et c'est automagique.
Après, pour créer des packages, ça se corse. Tout d'abord, on a besoin de PEAR_PackageFileManager:
pear install PEAR_PackageFileManager
Ensuite, le but est de générer les package.xml qui vont bien. Voilà comment j'ai procédé pour le package Zend:
mkdir -p ~/pear/zend/src && cd ~/pear/zend wget http://framework.zend.com/download/tgz -O - | tar xzC ~ mv ~/ZendFramework-0.8.0/library/Zend* src/ php ./mkpkg.php make cd src && pear package
Ceux qui ont bien suivi auront noté que mkpkg.php est sorti un peu de l'espace :-) Vous trouverez son contenu à la fin du billet.
Pour résumer, on créé un répertoire de travail (~/pear/zend/), dans lequel on créé un répertoire src, qui contiendra tous les fichiers du package, puis le script mkpkg.php se charge 1) d'analyser le contenu de src, et 2) de créer le package.xml qui va bien, selon les instructions qui lui sont fournies.
Nous disposons désormais d'un package Zend-0.8.0.tgz dans ~/pear/zend/src, que nous n'avons plus qu'a uploader via l'interface d'administration du serveur PEAR précédemment installé :-)
Le fichier mkpkg.php:
<?php
require_once('PEAR/PackageFileManager2.php');
PEAR::setErrorHandling(PEAR_ERROR_DIE);
$packagexml = new PEAR_PackageFileManager2;
$e = $packagexml->setOptions(array(
'baseinstalldir' => '/',
'packagedirectory' => dirname(__FILE__).'/src',
));
$packagexml->setPackage('Zend');
$packagexml->setSummary('Zend Framework');
$packagexml->setDescription('The Zend\'s PHP Framework');
$packagexml->setChannel('pear.phpmafia.net');
$packagexml->setAPIVersion('0.8.0');
$packagexml->setReleaseVersion('0.8.0');
$packagexml->setReleaseStability('devel');
$packagexml->setAPIStability('devel');
$packagexml->setNotes("Still a preview release");
$packagexml->setPackageType('php'); // this is a PEAR-style php script package
$packagexml->addRelease(); // set up a release section
$packagexml->setPhpDep('5.1.2');
$packagexml->setPearinstallerDep('1.4.0a12');
$packagexml->addMaintainer('lead', 'ash', 'Geoffrey Bachelet', 'geoffrey+pear@zubrowka.org');
$packagexml->setLicense('New BSD License', 'http://framework.zend.com/license/new-bsd');
$packagexml->generateContents(); // create the <contents> tag
$pkg = &$packagexml->exportCompatiblePackageFile1(); // get a PEAR_PackageFile object
if (isset($_GET['make']) || (isset($_SERVER['argv']) && @$_SERVER['argv'][1] == 'make')) {
$pkg->writePackageFile();
$packagexml->writePackageFile();
} else {
$pkg->debugPackageFile();
$packagexml->debugPackageFile();
}
?>
Comments
Bonjour,
Magnifique tuto mon channel marche presque !
J'arrive bien a construire un package ... et a l'uploader mais par contre le
pear install monchannel/mon_package me dis
Package 'monPackage' does not have REST info xml available
Cannot initialize ...
alors là je ne te cacherai pas que je suis loin d'etre un expert par contre :o
au pire donne l'adresse de ton channel que je teste chez moi si ça marche