Re: PHP build --with-pear fails: conflict over /tmp/pear/cache
| From: | Keith Roberts | Date: | Wed, 12 Mar 2008 23:08:20 +0000 |
| Subject: | Re: PHP build --with-pear fails: conflict over /tmp/pear/cache | ||
| References: | 1 2 3 4 5 6 7 | Groups: | php.install |
| Request: | Send a blank email to php-install+get-18710@lists.php.net to get a copy of this message | ||
On Wed, 12 Mar 2008, Ofer Inbar wrote:
To: php-install@lists.php.net From: Ofer Inbar <cos@aaaaa.org> Subject: Re: [PHP-INSTALL] PHP build --with-pear fails: conflict overWell 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): =====================================/tmp/pear/cacheKeith Roberts <keith@karsites.net> 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 installedMore 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).
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/cachedirectory
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 rootmaintainers)
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