J'essaie de compiler une version personnalisée du dernier PHP (5.3.3) avec un ensemble de paquets pear. Malheureusement, les options données pour le faire ne semblent pas fonctionner. Je poste le fichier spec comme je le vois il devrait être. La version fournie n'échoue pas réellement, mais installe les paquets PEAR au mauvais endroit. Alors qu'ils devraient aller dans /var/tmp/my_php-5.3.3-1-buildroot/usr/local/lib/php, mais ils se retrouvent dans /var/tmp/my_php-5.3.3-1-buildroot/var/ tmp/my_php-5.3.3-1-buildroot/usr/local/lib/php.Packages RPM PHP et PEAR
Vous pouvez également voir où j'ai dû pirater le script pearcmd.php car il ignorait complètement le paramètre include_path que la commande pear lui avait transmis (dérivé de la variable d'environnement PHP_PEAR_INSTALL_DIR). Cela pourrait être complètement faux, mais c'est la seule façon de l'installer.
J'ai essayé beaucoup d'autres variantes de cette spécification, mais elles semblent toutes "échouer" à leur manière. Pour info, j'ai aussi essayé d'utiliser Pyrus, mais il avait des problèmes similaires (en plus des problèmes avec les paquets non-PEAR2).
%define PHP_PREFIX /usr/local
%define CONF_PREFIX /home/config/php/conf
%define APXS_PATH /usr/local/apache2/bin/apxs
%define ORCL_PATH /usr/local/lib/oracle
%define PHP %{PHP_PREFIX}/bin/php
%define PEAR %{PHP_PREFIX}/bin/pear
%define PEAR_ROOT %{PHP_PREFIX}/lib/php
%define PHP_INSTALL $RPM_BUILD_ROOT%{PHP}
%define PEAR_INSTALL $RPM_BUILD_ROOT%{PEAR}
%define PEAR_ROOT_INSTALL $RPM_BUILD_ROOT%{PEAR_ROOT}
%define PEARCMD %{PEAR_ROOT_INSTALL}/pearcmd.php
%define PECLCMD %{PEAR_ROOT_INSTALL}/peclcmd.php
%define _unpackaged_files_terminate_build 0
Summary: my_php package
Name: my_php
Version: 5.3.3
Release: 1
License: The PHP License, Version 3.01
Vendor: Me
Packager: Me <[email protected]>
Group: Development/Languages
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
Source0: php-%{version}.tar.bz2
Requires: my_httpd >= 2.2.0, oracle-instantclient >= 10.2.0.4
BuildRequires: my_httpd >= 2.2.0
Conflicts: php, php5
%description
PHP, My style
%prep
%setup -q -n php-%{version}
%build
LIB_DIR="lib"
if [ "%{_arch}" == "x86_64" ]; then
LIB_DIR="lib64"
fi
./configure \
--prefix=%{PHP_PREFIX} \
--with-libdir=${LIB_DIR} \
--with-pear \
--with-config-file-path=%{CONF_PREFIX} \
--with-apxs2=%{APXS_PATH} \
--with-oci8=instantclient,%{ORCL_PATH} \
--with-mysql \
--with-pgsql \
--enable-sockets \
--with-gd \
--enable-gd-native-ttf \
--with-freetype-dir \
--with-curl \
--with-bz2 \
--with-zlib-dir \
--enable-exif \
--with-ldap \
--with-gmp \
--with-xsl
make clean
make -j
%install
rm -rf $RPM_BUILD_ROOT
# Don't try to change httpd.conf
sed -i.bak -e "s:&& \$(mkinstalldirs) '\$(INSTALL_ROOT)/.\+' \(&& %{APXS_PATH} .\+\)-S SYSCONFDIR='.\+' \(.\+\)-a \(.\+\):\1\2\3:" Makefile
# Install PHP to rpm staging area
make INSTALL_ROOT=$RPM_BUILD_ROOT install
# Modify *cmd.php to use correct include_path
sed -i.bak -e "s:'@'.'include_path'.'@':'%{PEAR_ROOT}':" %{PEARCMD}
sed -i.bak -e "s:'@'.'include_path'.'@':'%{PEAR_ROOT}':" %{PECLCMD}
# Install PEAR packages to rpm staging area
export PHP_PEAR_PHP_BIN="%{PHP_INSTALL}"
export PHP_PEAR_INSTALL_DIR="%{PEAR_ROOT_INSTALL}"
%{PEAR_INSTALL} install -P $RPM_BUILD_ROOT pear/MDB2-beta
%{PEAR_INSTALL} install -P $RPM_BUILD_ROOT pear/MDB2_Driver_oci8-beta
%{PEAR_INSTALL} install -P $RPM_BUILD_ROOT pear/MDB2_Driver_pgsql-beta
%{PEAR_INSTALL} install -P $RPM_BUILD_ROOT pear/MDB2_Driver_mysql-beta
%{PEAR_INSTALL} install -P $RPM_BUILD_ROOT pear/Mail
%{PEAR_INSTALL} install -P $RPM_BUILD_ROOT pear/Mail_Mime
%{PEAR_INSTALL} install -P $RPM_BUILD_ROOT pear/Spreadsheet_Excel_Writer-beta
# Revert *cmd.php
mv %{PEARCMD}.bak %{PEARCMD}
mv %{PECLCMD}.bak %{PECLCMD}
%files
%defattr(-,root,root)
/
%clean
rm -rf $RPM_BUILD_DIR/php-%{version} $RPM_BUILD_ROOT
Merci pour toute aide!
serverfault.com – ajreal