26.02.2012

Сборка PHP в Debian в альтернативную директорию

На просторах Интернета имеется достаточно большое количествео разнообразных мануалов на тему сборки PHP. К сожалению, всех их объединяет одно: все они делаются через make install (читайте: через интимное место). О причинах распыляться не буду, порекомендую лишь статью на Хабре с многоговорящим названием: Хочется взять и расстрелять, или ликбез о том, почему не стоит использовать make install.

В данном мануале я не ограничусь только сборкой одного пакета.Мы соберем все популярные версии и {в}рапперы для него.

Все, что собирается - собирается на Debian Squeeze для FastCGI. Шаг влево/шаг вправо и мануал уже не подходит. Например на Lenny даже близко не так все будет. Я очень рекомендую установить чистенькую свежую систему, чтобы не спотыкаться об пакеты из неродных репозиториев и их разломанными зависимостями.


Начнем с того, что поставим зависимости, которые возможно нам и не понадобятся, но они указаны к стандартному PHP мейнтейнерами:
apt-get install apache2-prefork-dev autoconf automake bison chrpath flex freetds-dev hardening-wrapper libapr1-dev  libbz2-dev libc-client-dev libcurl4-openssl-dev libenchant-dev libevent-dev libexpat1-dev libfreetype6-dev libgcrypt11-dev libgd2-xpm-dev libglib2.0-dev libgmp3-dev libicu-dev libjpeg-dev libkrb5-dev libldap2-dev libmcrypt-dev libmhash-dev libmysqlclient-dev libonig-dev libpam0g-dev libpng12-dev libpq-dev libpspell-dev libqdbm-dev librecode-dev libsasl2-dev libsnmp-dev libsqlite0-dev libsqlite3-dev libt1-dev libtidy-dev libtool libwrap0-dev libxmltok1-dev libxml2-dev libxslt1-dev locales-all mysql-server quilt re2c unixodbc-dev firebird2.1-dev libgdbm-dev libcurl4-openssl-dev libssl-dev  libreadline-dev libedit-dev

Отлично. Теперь поставим утилиту, которой будем собирать пакеты:
apt-get install checkinstall
Конечно эта утилита - детская лопатка для игры в песочнице. Настоящие мейнтейнеры таким не пользуются, но у меня пока не хватает знаний и ума сделать все вообще по высшему пилотажу. Да и quilty нам не особо пока нужен.

Создадим директории для работы над нашими пакетам:
mkdir -p /usr/src/php/php5.2 /usr/src/php/php5.3 /usr/src/php/php5.4 /usr/src/php/php-switcher

Итак перейдем с сборке первого пакета - PHP 5.2