[php-maint] [Webapps-common-discuss] up-to-date policy for PHP PEAR modules

Gregory Colpart reg at evolix.fr
Sat Sep 22 01:07:47 UTC 2007


On Tue, Sep 18, 2007 at 06:30:23PM +0200, sean finney wrote:
> > I think /usr/share/php/ should be only for debian-packaged pear
> > modules and locally installed pear modules should go to
> > /usr/local/php/ or whatever directory (similar to perl policy).
> > We should probably change a few things to make easier the deal
> > between debian-packaged and local pear modules (create empty
> > /usr/local/php/ dir, set include_path to
> > '.:/usr/local/php:/usr/share/php' in php.ini, perhaps write a
> > /usr/bin/pear-local wrapper, etcetera)
> yes... in addition to steve's comments about what the directories should be, i 
> think that the "pear" command should default to the local directories, and 
> that debian packages should either not use it, use it with certain flags to 
> specify the "debian directories", or use a "pear-debian" wrapper that does 
> this.
> also, how does pear handle dependencies between the two directories?  i.e. if 
> we have the debian-installed classes in one directory with package A, and 
> locally install package B which depends on A, will it be smart enough at 
> install time (and later run time) to use the package A from the debian dir, 
> or will it download/need a copy from the local dir?

Here are my tests with hacking pear to have two directories:
- /usr/share/php for debian-packaged pear modules
- /usr/local/share/php for locally installed pear modules

I study a little how pear is installed and a solution could be adding
this little patch for /usr/bin/pear file:

< exec $PHP -C -q $INCARG -d output_buffering=1 -d open_basedir="" -d safe_mode=0 -d memory_limit="-1" -d register_argc_argv="On" -d auto_prepend_file="" -d auto_append_file="" $INCDIR/pearcmd.php -d "$@"
> exec $PHP -C -q $INCARG -d output_buffering=1 -d open_basedir="" -d safe_mode=0 -d memory_limit="-1" -d register_argc_argv="On" -d auto_prepend_file="" -d auto_append_file="" $INCDIR/pearcmd.php -d php_dir=/usr/local/share/php "$@"

With this hack:

- we can "pear install" without modifying /usr/share/php
- we can also "pear update-channels" without modifying /usr/share/php
- *but* pear dependencies are not checked (except for pear installer)
  then "pear install" reinstall all dependencies by default. User can use
  "--nodeps" or "--register-only" options to avoid duplicated modules, but
  perhaps we don't care what user do in his /usr/local/share/php...
- we can "pear upgrade pear" with keeping /usr/local/share/php. Of course
  upgrading pear erases "/usr/bin/pear" file if use doesn't use "-R
  dir" option, but I think it's like local C-compilation with bad
  --prefix for example
- we should perhaps avoid to handle register/unregister in
  postinst/prerm for debian-package pear modules (a large
  majority of packages don't use that)
- we can list debian-packaged pear modules with command:
  "pear -d php_dir=/usr/share/php list". We can have a wrapper
  for that but I don't see real interest.

Thanks for your comments...

Gregory Colpart <reg at evolix.fr>  GnuPG:1024D/C1027A0E
Evolix - Informatique et Logiciels Libres http://www.evolix.fr/

More information about the pkg-php-maint mailing list