![]() PEAR_PackageFileManager : The Definitive Guide |
PEAR 1.4.0 and package.xml
2.0 supports
more package dependencies than package.xml
1.0, but we will see in details what are
differences and how we can do (try to do) the same job.
In table below, consider we have each time $p1
produced by code :
Table 10.3. package.xml
1.0
dependencies
PHP code | XML equivalent |
---|---|
// 'has' relation $p1->addDependency('PEAR', false, 'has', 'pkg', false); |
<deps> <dep type="pkg" rel="has" optional="no"> PEAR </dep> </deps> |
// 'greater or equal' relation $p1->addDependency('Archive_Tar', '1.0.0', 'ge', 'pkg', false); |
<deps> <dep type="pkg" rel="ge" version="1.0.0" optional="no"> Archive_Tar </dep> </deps> |
// 'greater than' relation $p1->addDependency('MDB2', '2.1.0', 'gt', 'pkg', true); |
<deps> <dep type="pkg" rel="gt" version="2.1.0" optional="yes"> MDB2 </dep> </deps> |
// 'less or equal' relation $p1->addDependency('Console_Getopt', '1.2', 'le', 'pkg'); |
<deps> <dep type="pkg" rel="le" version="1.2" optional="no"> Console_Getopt </dep> </deps> |
// 'less than' relation $p1->addDependency('Text_Highlighter', '0.7.0', 'lt', 'pkg', true); |
<deps> <dep type="pkg" rel="lt" version="0.7.0" optional="yes"> Text_Highlighter </dep> </deps> |
// 'between' relation $p1->addDependency('PEAR_PackageFileManager', '1.6.0a1', 'ge'); $p1->addDependency('PEAR_PackageFileManager', '1.6.0b5', 'le'); |
<deps> <dep type="pkg" rel="ge" version="1.6.0a1" optional="no"> PEAR_PackageFileManager </dep> <dep type="pkg" rel="le" version="1.6.0b5" optional="no"> PEAR_PackageFileManager </dep> </deps> |
// 'conflicting' dependency $p1->addDependency('DB', false, 'not', 'pkg'); |
<deps> <dep type="pkg" rel="not">DB</dep> </deps> |
In table below, consider we have each time $p2
produced by code :
Table 10.4. package.xml
2.0
dependencies
PHP code | XML equivalent |
---|---|
// 'has' relation $p2->addPackageDepWithChannel('required', 'PEAR', 'pear.php.net'); |
<dependencies> <required> <!-- ... --> <package> <name>PEAR</name> <channel>pear.php.net</channel> </package> </required> </dependencies> |
// 'greater or equal' relation $p2->addPackageDepWithChannel('required', 'Archive_Tar', 'pear.php.net', '1.0.0'); |
<dependencies> <required> <!-- ... --> <package> <name>Archive_Tar</name> <channel>pear.php.net</channel> <min>1.0.0</min> </package> </required> </dependencies> |
// 'greater than' relation $p2->addPackageDepWithChannel('optional', 'MDB2', 'pear.php.net', '2.1.0', false, false, '2.1.0'); |
<dependencies> <required> <!-- ... --> </required> <optional> <package> <name>MDB2</name> <channel>pear.php.net</channel> <min>2.1.0</min> <exclude>2.1.0</exclude> </package> </optional> </dependencies> |
// 'less or equal' relation $p2->addPackageDepWithChannel('required', 'Console_Getopt', 'pear.php.net', false, '1.3.0'); |
<dependencies> <required> <!-- ... --> <package> <name>Console_Getopt</name> <channel>pear.php.net</channel> <max>1.3.0</max> </package> </required> </dependencies> |
// 'less than' relation $p2->addPackageDepWithChannel('optional', 'Text_Highlighter', 'pear.php.net', false, '0.7.0', false, '0.7.0'); |
<dependencies> <required> <!-- ... --> </required> <optional> <package> <name>Text_Highlighter</name> <channel>pear.php.net</channel> <max>0.7.0</min> <exclude>0.7.0</exclude> </package> </optional> </dependencies> |
// 'between' relation $p2->addPackageDepWithChannel('required', 'PEAR_PackageFileManager', 'pear.php.net', '1.6.0a1', '1.6.0b5'); |
<dependencies> <required> <!-- ... --> <package> <name>PEAR_PackageFileManager</name> <channel>pear.php.net</channel> <min>1.6.0a1</min> <max>1.6.0b5</max> </package> </required> </dependencies> |
// 'conflicting' dependency $p2->addConflictingPackageDepWithChannel('DB', 'pear.php.net'); |
<dependencies> <required> <!-- ... --> <package> <name>DB</name> <channel>pear.php.net</channel> <conflicts/> </package> </required> </dependencies> |
When you use uri-based package dependencies rather than channel-based
package dependencies (see previously), you have to use: addPackageDepWithUri()
method instead of
addPackageDepWithChannel()
.
Here is a simple example to produce:
you should write:
![]() |
Important |
---|---|
Do not append tgz or tar extension, when you give the uri. PEAR
installer will try to fetch
http://www.example.com/Foo-1.3.0.tgz or
http://www.example.com/Foo-1.3.0.tar
|
![]() |
Note |
---|---|
List of package installed through pseudo channel __uri may be
displayed, on command line, with :
pear list -a |
PEAR_PackageFileManager : The Definitive Guide | v 1.6.0 : November 17, 2006 |