Назад | Перейти на главную страницу

CentOS - PHP - Yum Install с пользовательскими параметрами ./configure

Я успешно настроил и скомпилировал php на своем сервере разработки и отлично работает, но после разговора с приятелем системного администратора он сообщил, что пользовательские компиляции последних сборок не рекомендуются для производственных (или даже разрабатываемых) систем. Он отметил ситуацию, когда они настраивали и скомпилировали PHP 5.3.6 только для того, чтобы обнаружить, что была некоторая проблема с драйвером Postgres низкого уровня, поэтому им пришлось вернуться к 5.3.3.

Поэтому я подумываю вернуться к yum для установки PHP, однако у меня есть несколько пользовательских настроек конфигурации, и мне было интересно, можно ли передать или настроить, как PHP будет компилироваться через YUM?

Моя текущая строка конфигурации:

Configure Command =>  './configure'  '--with-libdir=lib64' '--prefix=/usr/local/_custom/app/php' '--with-config-file-path=/usr/local/_custom/app/php/etc' '--with-config-file-scan-dir=/usr/local/_custom/app/php/etc/modules' '--disable-all' '--with-apxs2=/usr/sbin/apxs' '--with-curl=/usr/sbin/curl' '--with-gd' '--with-iconv' '--with-jpeg-dir=/usr/lib' '--with-mcrypt=/usr/bin' '--with-pcre-regex' '--with-pdo-mysql=mysqlnd' '--with-png-dir=/usr/lib' '--with-zlib' '--enable-ctype' '--enable-dom' '--enable-hash' '--enable-json' '--enable-libxml' '--enable-mbstring' '--enable-mbregex' '--enable-pdo' '--enable-session' '--enable-simplexml' '--enable-xml' '--enable-xmlreader' '--enable-xmlwriter'

Загрузите src.rpm для пакета, он содержит ОРИГИНАЛЬНЫЙ исходный код и все файлы, необходимые для компиляции пользовательских rpm:

  • php.spec - файл спецификации, необходимый для rpmbuild
  • php-xxx.tar.gz - оригинальный исходный код
  • различные патчи (.diff, .patch)
  • файлы документации для добавления (если есть)

Для сборки rpm вам понадобится пакет rpm-build, который содержит программу rpmbuild.

Это также можно сделать с помощью yumdownloader (из пакета yum-utils):

yum install yum-utils rpm-build

yumdownloader --source php

Установите src.rpm:

rpm -Uvh *.src.rpm

cd в каталог SPEC rpmbuild;

RHEL5, старая Fedora

cd /usr/src/redhat/SPEC/

Suse:

cd /usr/src/packages/SPEC/

RHEL6, более новая Fedora:

cd ~/rpmbuild/SPEC/

Файл php.spec содержит подробную информацию о том, как создается пакет и какие компоненты будут включены. Он также содержит данные о зависимостях и необходимых пакетах для правильной сборки новых пакетов. Таким образом, rpmbuild напомнит вам о любых недостающих пакетах.

Вам потребуется:

  1. Загрузите обновленный исходный код php с php.net и поместите его в каталог SOURCES.
  2. Укажите новую версию в строке «Version:» в файле php.spec, также используйте меньшее значение в строке «Release:» и добавьте в нее свое собственное имя, например «Release: 0.mike»
  3. Проверьте файл .spec на предмет возможных дополнительных изменений (возможно, есть некоторые исправления безопасности, которые не нужны в текущей версии, rpmbuild сообщит вам об этом, если файл уже исправлен). Возможно, вам нужно будет прокомментировать строку «Patch xx:» и строку «% patch xx», если у вас возникнут проблемы.
  4. запустить rpmbuild:

    rpmbuild --target x86_64 -ba php.spec

--target x86_64 - указывает платформу (может быть i386, x86_64, amd64 и т. д.)

-ba - "build all", будет собирать как окончательный .rpm, так и новые пакеты src.rpm

Вы можете найти встроенные пакеты в каталогах ../RPM/ и ../SRPM/.

Этот метод гарантирует, что в каталог включены исправления поставщика. Иерархия файловой структуры такая же, компонент совместим, зависимости соблюдены, старая версия будет безопасно заменена. Кроме того, вы гарантируете свои будущие обновления.

p.s. Я не согласен со строкой «новая производимая версия - плохая». Я оказываю услуги поддержки десяткам компаний, у меня есть виртуальный хостинг, и я всегда предпочитаю иметь свежую версию. Единственная проблема с php заключается в переходе от одной подверсии к другой (например, с 5.1.x на 5.2.x, с 5.2.x на 5.3.x) - есть некоторые общие изменения и устаревшие / удаленные функции. Но чем новее, тем быстрее, безопаснее и лучше обслуживается.

p.s.s. Я никогда в жизни ничего не компилирую вручную и не помещаю файлы в / usr / local /, я выучил rpm, так как мне это было нужно за несколько дней, теперь все работает гладко.

Нет, к сожалению, вы не можете указать пользовательские команды настройки с помощью yum. Программное обеспечение, предоставляемое yum и другими подобными установщиками пакетов, предварительно создано в соответствии со спецификациями поставщика.

Я также рекомендовал бы не использовать последнюю сборку чего-либо только потому, что это доступно, особенно в производственных системах. Я столкнулся с аналогичными проблемами, как и ваш приятель, когда какая-то странная ошибка подняла свою уродливую голову, и я потратил часы, дни, недели, отслеживая ее ... или просто вернулся к старой сборке.

Я бы сделал кастомную сборку php, как вы, что мы и делаем в моей компании. Когда выходит новая стабильная версия php, мы собираем ее в /usr/local/php-x.x.x, тестируем, затем обновляем двоичные символические ссылки и общие библиотеки в /etc/ld.so.conf.d и у нас все хорошо. У разработчиков всегда есть запросы на конкретные функции, поэтому нам необходимо иметь свободу и гибкость настраиваемой сборки. Вы можете следить за тем, какую версию php CentOS рекомендует / распространять, и обновлять в это время.

Yum не компилятор

Вы можете попробовать скомпилировать PHP вручную:

cd /tmp;
wget http://ua.php.net/get/php-5.2.17.tar.gz/from/ua2.php.net/mirror; # latest 5.2
tar -xzvf php-YOU_VER.tar.gz;
cd php-YOU_VER;
./configure --enable-cgi --disable-cli --with-png-dir=/usr/local --with-jpeg-dir=/usr/local --with-gd --enable-ftp --with-curl --with-zlib --enable-zip --with-iconv --enable-mbstring --with-mysql --with-freetype-dir=/usr/local --with-ttf --enable-gd-native-ttf --with-mysqli --with-libdir=lib64;
make;
make install;

как сказал GioMac и добавил к нему. Для этого нужно взять исходный rpm версии php, которую вы скомпилировали, из репозиториев yum, извлечь src rpm и добавить в него свою настройку. Увеличьте обороты и сделайте

yum localinstall <rpm>

Тем не менее, это оставляет без ответа первоначальное беспокойство системного администратора. В вашей настройке на php может быть ошибка, которая не отображалась в вашем окне разработчика. Таким образом, один из способов решить эту проблему - протестировать его в тестовой среде и, когда он будет удовлетворен, запустить его в производство.

yum не является компилятором. Таким образом, установка через yum не решает никаких проблем, присутствующих в коде. yum просто упрощает решение зависимостей пакетов. Одно из преимуществ, которое я вижу, заключается в том, что пакеты в некоторой степени тестируются перед выпуском в стабильную ветку репо. Поэтому, если вы хотите скомпилировать его самостоятельно, вы потеряете преимущества стабильной ветки. Если вы хотите внести только изменения в конфигурацию, вы можете выполнить эту пост-установку, отредактировав файл php.ini.