Re: PHP build --with-pear fails: conflict over /tmp/pear/cache

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



On Wed, 12 Mar 2008, Ofer Inbar wrote:

To: php-install@xxxxxxxxxxxxx
From: Ofer Inbar <cos@xxxxxxxxx>
Subject: Re:  PHP build --with-pear fails: conflict over
    /tmp/pear/cache

Keith Roberts <keith@xxxxxxxxxxxx> wrote:
I used to compile PHP without any --with/out-pear
./configure options. This installed PEAR under the
--prefix=/usr/local/php-5.x.x directory path.

So everytime I upgraded PHP, I got a fresh installation of
PEAR in a different location. I now have PEAR installed

More often than not, I'm doing a new build of the same version of PHP
with different configure options to support something we didn't need
in the past but do now, so I can't depend on a new version number.

However, my php builds always install in /usr/local/lib/php/ without a
version number.  During the build, they install in a temporary location
that I (or my rpmbuild script) gives them.  For example,
 make INSTALL_ROOT=/foo install
Places it in /foo/usr/local/lib/php.

However, it's still configured to work as though everything is under
/usr/local/bin so when I actually install the RPM, which puts files
there, everything looks like a default install.  That's pretty standard.

In the past, php didn't have any problems with this method.

You need to check what config files are being used by each
installation of PEAR. They are quite possibly different. So
another PEAR installation in a different location should use
it's own set of config files.

My goal, however, is to have each installation of PEAR in the *SAME*
directory.  When the resulting RPM is installed on the system, it
should replace whatever was there before.  Other files and scripts
should not have to be updated - they should expect things to be in the
same (default) locations.

I cannot see any problems with using a different
--with-pear=/new/path for testing purposes.

Right, but what about for production purposes?  It should use
/tmp/pear in a production install, it just should honor the temporary
install root when building (and only when building).

Well I compiled PHP with the following ./configure options:
(I'm the only user on my system - 'keith' or 'root')

'./configure' \
'--with-apxs2=/usr/local/apache-2.2.6/bin/apxs' \
'--prefix=/usr/local/php-5.2.4' \
'--bindir=/usr/local/bin' \
'--enable-shared=all' \
'--with-pear=/usr/local/PEAR' \
'--with-mysql=shared,/usr/local/mysql-5.0.45' \
'--with-mysql-sock=/var/lib/databases/mysql/mysql.sock' \
'--with-mysqli=shared,/usr/local/mysql-5.0.45/bin/mysql_config' \
'--with-pgsql=/usr/local/postgresql-8.2.5/bin' \
'--with-xsl' \
'--with-zlib-dir=/usr/include' \
'--with-readline' \

Subsequent PHP compilations use:

'./configure' \
'--with-apxs2=/usr/local/apache-2.2.6/bin/apxs' \
'--prefix=/usr/local/php-5.2.4' \
'--bindir=/usr/local/bin' \
'--enable-shared=all' \

'--without-pear' \

'--with-mysql=shared,/usr/local/mysql-5.0.45' \
'--with-mysql-sock=/var/lib/databases/mysql/mysql.sock' \
'--with-mysqli=shared,/usr/local/mysql-5.0.45/bin/mysql_config' \
'--with-pgsql=/usr/local/postgresql-8.2.5/bin' \
'--with-xsl' \
'--with-zlib-dir=/usr/include' \
'--with-readline' \

So I now have PEAR in /usr/local/PEAR. Reason for doing this is to preserve the PEAR installation between OS upgrades. /usr/local is on a seperate partition. I have not had any problems with PEAR or the applications it provides not functioning correctly so far.

I generally run PEAR as root user anyway, so maybe that's why I have not encountered the /tmp/pear/cache writeable problem you mention. What about creating a seperate group for the /tmp/pear/cache, and adding your normal users to it, so they have write access to that dir?

Here is the output from pear config-show:

[root@karsites ~]# pear config-show
Configuration (channel pear.php.net):
=====================================
Auto-discover new Channels     auto_discover    1
Default Channel                default_channel  pear.php.net
HTTP Proxy Server Address      http_proxy       <not set>
PEAR server [DEPRECATED]       master_server    pear.php.net
Default Channel Mirror         preferred_mirror pear.php.net
Remote Configuration File      remote_config    <not set>
PEAR executables directory     bin_dir          /usr/local/bin
PEAR documentation directory   doc_dir          /usr/local/PEAR/doc
PHP extension directory        ext_dir          /usr/local/php-5.2.4/lib/php/extensions/no-debug-non-zts-20060613
PEAR directory                 php_dir          /usr/local/PEAR
PEAR Installer cache directory cache_dir        /tmp/pear/cache
PEAR data directory            data_dir         /usr/local/PEAR/data
PEAR Installer download        download_dir     /tmp/pear/cache
directory
PHP CLI/CGI binary             php_bin          /usr/local/bin/php
php.ini location               php_ini          <not set>
PEAR Installer temp directory  temp_dir         /tmp/pear/temp
PEAR test directory            test_dir         /usr/local/PEAR/test
Cache TimeToLive               cache_ttl        3600
Preferred Package State        preferred_state  stable
Unix file mask                 umask            22
Debug Log Level                verbose          1
PEAR password (for             password         <not set>
maintainers)
Signature Handling Program     sig_bin          /usr/bin/gpg
Signature Key Directory        sig_keydir       /usr/local/PEAR
Signature Key Id               sig_keyid        <not set>
Package Signature Type         sig_type         gpg
PEAR username (for             username         root
maintainers)
User Configuration File        Filename         /root/.pearrc
System Configuration File      Filename         /usr/local/PEAR/pear.conf
[root@karsites ~]#

It seems that any modifications to PEAR's configuration using 'pear config-set' are written to the User Configuration File, not the System Configuration File. I must have installed PEAR as root user, because that is where the .pearrc file is located in.

HTH

Keith Roberts

[Index of Archives]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [Postgresql]     [PHP Books]     [PHP Databases]     [PHP SOAP]
  Powered by Linux