web-dev-qa-db-ja.com

CentOS-PHP-Yumカスタム./configureparamsでインストール

私は開発サーバーでphpを正常に構成およびコンパイルし、うまく機能しましたが、sysadminの仲間と話した後、彼は最新のビルドのカスタムコンパイルは本番(または開発)システムには推奨されないことを通知しました。彼は、カスタム構成してコンパイルした状況を指摘しました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'
3
Mike Purcell

パッケージのsrc.rpmをダウンロードします。これには、元のソースコードと、カスタムrpmのコンパイルに必要なすべてのファイルが含まれています。

  • php.spec-rpmbuildに必要なスペックファイル
  • php-xxx.tar.gz-元のソースコード
  • さまざまなパッチ(.diff、.patch)
  • 追加するドキュメントファイル(存在する場合)

Rpmをビルドするには、rpmbuildプログラムを含むrpm-buildパッケージが必要です。

また、yumdownloader(yum-utilsパッケージから)を使用して実行することもできます。

yum install yum-utils rpm-build

yumdownloader --source php

Src.rpmをインストールします。

rpm -Uvh *.src.rpm

rpmbuild SPECdirにcdします。

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. Php.specファイルの「Version:」文字列に新しいバージョンを指定し、「Release:」文字列にも低い値を使用して、「Release:0.mike」のようにカスタム名を追加します
  3. .specファイルで追加の変更の可能性を確認してください(現在のバージョンでは不要なセキュリティパッチがいくつかある可能性があります。ファイルにすでにパッチが適用されている場合は、rpmbuildがそのことを通知します)。問題が発生した場合は、「Patchxx:」文字列と「%patchxx」をコメントする必要があるかもしれません。
  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の唯一の問題は、あるSubversionから別のSubversion(5.1.xから5.2.x、5.2.xから5.3.xなど)に移動することです。いくつかの一般的な変更と非推奨/削除された関数があります。しかし、新しいものはより速く、安全で、よりよく維持されます。

p.s.s.私は自分で何かをコンパイルして/ usr/local /にファイルを置くことは決してありません。数日で必要に応じてrpmを学び、今ではすべてがスムーズに実行されています。

6
GioMac

いいえ、残念ながら、yumでカスタムconfigureコマンドを指定することはできません。 yumおよび他の同様のパッケージインストーラーによって提供されるソフトウェアは、ベンダーの仕様に従って事前に構築されています。

また、特に本番システムで利用できるという理由だけで、最新のビルドを使用しないことをお勧めします。私はあなたの仲間と同様の問題に遭遇しました。奇妙なバグがその醜い頭を育て、私はそれを追跡するのに何時間、何日、何週間も費やしました...またはちょうど古いビルドに戻ってしまいました。

私はあなたがしたようにカスタムphpビルドを行います。それは私の会社で行っていることです。 phpの新しい安定バージョンがリリースされたら、それを/usr/local/php-x.x.xでビルドしてテストし、/etc/ld.so.conf.dでバイナリシンボリックリンクと共有ライブラリを更新します。これで問題ありません。開発者は常に特定の機能を要求するため、カスタムビルドの自由と柔軟性を確保する必要があります。 CentOSが推奨/配布しているphpのバージョンを監視し、その時点で更新することができます。

1
Banjer

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;
0
dobs

gioMacが言ったように、それに追加します。これを行う方法は、yumリポジトリからコンパイルしたバージョンのphpのソースrpmを取得し、src rpmを抽出して、それにカスタマイズを追加することです。 rpmを構築し、

yum localinstall <rpm>

それでも、システム管理者の本来の懸念は未解決のままです。 phpのカスタマイズには、開発ボックスに表示されなかったバグがある可能性があります。したがって、それを解決する1つの方法は、テスト環境でテストし、満足したら本番環境にプッシュすることです。

yumはコンパイラではありません。したがって、yumを介してインストールしても、コードに存在する問題は解決されません。 yumは、パッケージの依存関係の解決を容易にするだけです。私が見ている利点の1つは、レポの安定したブランチでリリースする前に、パッケージがある程度テストされていることです。したがって、自分でコンパイルしたい場合は、安定したブランチの利点を失います。構成を変更するだけの場合は、php.iniファイルを編集してインストール後に行うこともできます。

0
bagavadhar