[csw-users] Why has php been split into a bazillion packages?

Mark Round mark at markround.com
Thu Dec 8 08:57:24 CET 2005

It's been done for several reasons, mainly due to the size of the  
original package. PHP was originally built as a monolithic package,  
with a single .so file to be loaded into Apache. This one .so file  
contained all the extensions, bloating it's size and meaning that the  
average user, who may only use a fraction of those extensions was  
paying the price by running a very large sized Apache process. The  
footprint really started to hurt on high-traffic sites with lots of  
Apache processes running. Then there was the issue that it was  
impossible to upgrade an extension (for instance, relinking the  
postgresql extension to a new version when one is released) or add a  
new one without updating the entire package.

For a first time user running "pkg-get -i php", it was a time- 
consuming experience, as it would download every dependency for all  
the extensions in addition to PHP itself. You'd end up with what  
seemed like half the Blastwave distribution installed just so you  
could run PHP - PostgreSQl and MySQL libraries, OpenLDAP, OpenSSL,  
XML libraries, etc.

The decision was taken to split as many extensions as possible out  
into separate PHP loadable modules, which gives the end user the  
flexibility to install only what they want (this is also the way  
pretty much every other Unix or Unix-like distribution handles PHP).  
They've also then got the ability to add new extensions or upgrade  
existing ones without re-doing the whole lot.

For compatibilities sake, the old PHP package was turned into a  
"dummy" package that emulated the old behaviour - if you install  
CSWphp (mod_php), you'll also download and install all the extensions  
(the 18 other packages you mentioned), and also any dependencies for  
those packages. So this will still download and upgrade everything  
which will still be time-consuming. This is also what happened when  
anyone upgraded from the old monolithic package - because there is no  
way to tell in advance what extensions a user may be using, in order  
to avoid random breakages by not having modules available, an upgrade  
to the modular system would still have downloaded everything -  
although now, the user can remove what they don't need and tailor the  
system going forward.

If you remove the dummy CSWphp package, you can then just upgrade  
only what you need next time. Is this a problem for you because you  
have every one of the 18 extensions installed ?

On 8 Dec 2005, at 5:59 am, Robert Stampfli wrote:

> I've just finished updating php 4.4.0 -> 4.4.1 on one of my
> machines, and am in the process of updating another one now,
> and believe me, it is painful.  Starting with the last
> release, php seems to have been split into 18 separate
> packages, and I'm not sure why this was done.  It sure makes
> updating to a new point release a time-consuming activity,
> and it would seem each module will have to be reissued for
> each release forevermore.
> Can anyone shed some light on why this split was done, and
> what benefits are derived from it?  My vote would be to see
> php go back to the way it was packaged before.
> Rob
> _______________________________________________
> users mailing list
> users at lists.blastwave.org
> https://lists.blastwave.org/mailman/listinfo/users

Mark Round
mark at markround.com

More information about the users mailing list