Channels are alternative package sources. See the channel section of the manual
for more information.
What you need to know now: By using channels, you can install
packages that are not part of PEAR. Prominent PHP projects like Horde
and PHPUnit distribute their software through PEAR-compatible
channels.
Before you can use a channel, your pear installation needs to know
about it. This process is called "channel discovery".
Once you know the project's channel url, just type:
$ pear channel-discover http://pear.phpunit.de
Adding Channel "pear.phpunit.de" succeeded |
Downloading a channel.xml file, you can add a channel just using
that file using channel-add:
$ pear channel-add my-channel.xml
... |
Using list-channels, you can get an overview of
known channels:
$ pear list-channels
Registered Channels:
====================
Channel Summary
components.ez.no eZ Enterprise components
demochanserv.bogo Simple demo channel server
gnope.org PHP-Gtk2 applications
pear.chiaraquartet.net Chiara Testing Channel
pear.phing.info Channel for Phing build tool releases
pear.php.net PHP Extension and Application Repository
pear.phpunit.de PHPUnit channel server
pear.symfony-project.com symfony project PEAR channel
pearified.com PEAR-Compatible Extension and Application
Repository
pecl.php.net PHP Extension Community Library
__uri Pseudo-channel for static packages |
More insight about a channel can be gotten with
channel-info. It prints out a description, the
channel's shortcut name (alias) as well as mirror information.
$ pear channel-info pear.php.net
Channel pear.php.net Information:
=================================
Name and Server pear.php.net
Alias pear
Summary PHP Extension and Application Repository
... |
When installing or doing anything else with a package that is not
in your default
channel, you need to specify the channel by full name or
alias:
$ pear install gnope/Dev_Inspector
... installation of package "Dev_Inspector" in channel "gnope"
$ pear list -c pear.phpunit.de
Installed packages, channel pear.phpunit.de:
============================================
Package Version State
PHPUnit 3.2.5 stable |
General rule is that when you would specify a package name, use
$channel/$packagename now. All other functions with
channel support have a -c option to specify the
channel name or alias.
PEAR compatible channels can be password protected. You could use
this to e.g. distribute custom proprietary software to your clients, and
don't want to publicy publish those packages anywhere.
Password protection is done via a HTTP Basic Authentication
(.htaccess and .htpassword on
Apache). When trying to discover such a password protected channel, you
will get a message like this:
$ pear channel-discover pear.company.com
Discovery of channel "pear.company.com" failed
(channel-add: Cannot open "http://pear.company.com/channel.xml"
(File http://pear.company.com:80/channel.xml not valid
(received: HTTP/1.1 401 Authorization Required
))) |
In this case, download the channel.xml file
manually, for example with your browser or wget. A
channel.xml is always in the root directory of the
channel server. After that, discover the channel with the saved
file:
$ pear channel-add /path/to/saved/channel.xml
Adding Channel "pear.company.com" succeeded |
Now the PEAR manager needs to know about the channel's username
and password. We tell him by using set-config in
connection with the channel option:
$ pear config-set -c pear.company.com username johndoe
config-set succeeded
$ pear config-set -c pear.company.com password secret
config-set succeeded |
Now test if we did everything right by showing available packages
on the channel:
$ pear list-all -c pear.company.com
Retrieving data...0%
All packages [Channel pear.company.com]:
==========================
Package Latest Local
comp/WorldDominator 0.8.1 Tool to dominate the world |
Note: If you changed your creditentials, you should issue a
pear clear-cache command to make sure that the
installer does not use cached data.