Our old and trusted PEAR Installer supports multiple package sources, called "channels", since version 1.4.0 - which was released in 2005. You can host a channel yourself using one of the channel server applications. The most popular one is probably Pirum.
One of the problems with such a distributed network is finding the channel that provides the package you are looking for.
Pyrus, the PHP 5.3+ PEAR installer, has a solution for that:
$ pyrus search mockery Pyrus version 2.0.0a4 SHA-1: 72271D92C3AA1FA96DF9606CD538868544609A52 Using PEAR installation found at /opt/phpfarm/inst/php-5.3.16/pear Searching for mockery 1 packages found: pear.survivethedeepend.com/Mockery $ pyrus install pear.survivethedeepend.com/Mockery Pyrus version 2.0.0a4 SHA-1: 72271D92C3AA1FA96DF9606CD538868544609A52 Using PEAR installation found at /opt/phpfarm/inst/php-5.3.16/pear Sorry, the channel "pear.survivethedeepend.com" is unknown. Do you want to add this channel and continue? Please choose: yes no [yes] : Discovery of channel pear.survivethedeepend.com successful Downloading pear.survivethedeepend.com/Mockery ...
Pyrus is able to search all existing channel servers and automatically discover then when they are not known yet.
Technical background
When running pyrus search, it asks the online service pyr.us. This service checks for package releases on the channel servers every night and indexes them.
The list of channel servers that pyr.us uses is fetched from pear.php.net/channels/xbel.php , which is an export of our PEAR channel server list.
So if you want Pyrus to find the packages of your PEAR channel, register your channel on this list.