- 締切済み
RedHatLinux8.0 PHPの再コンパイル方法について
RedHatLinux8.0のインストールで一緒にインストールされたPHPを、mbregex他のオプションを付けて再コンパイルしたいのですが、やり方がわかりません。 再インストールが必要なのでしょうか? 再インストールの場合も、 OSと一緒にインストールしてしまったため、 後からインストールした場合と勝手が違うようなのです。 参考になるサイトでも構いません。経験ある方、教えて下さい。
- みんなの回答 (8)
- 専門家の回答
みんなの回答
- xjd
- ベストアンサー率63% (1021/1612)
無事、動いてようで、おめでとうございます。 パッケージに疑問されている様ですが、以下のページなど見てください。 http://www.redhat.co.jp/products/RHL_end.html http://www.redhat.co.jp/support/ RedHat8 は出て間もないのに早くも出荷停止。 Eratta (パッケージのメンテ)は今年中で終了です。 せっかくシステムが安定した、と思ったとたんRedhat9や10にアップグレード するなんてうんざりです。 ftp版(無料)のredhatに飛びついて、導入している企業もたくさんあると 思いますが、今後のアップデートなどどうするんでしょうね? メーカが提供するパッケージに頼らず、大事なアプリはソースから導入できる スキルを身につけときましょう。 OpenSSL/OpenSSH、sendmail、bind等 ソース版の導入に挑戦してください。 ちなみに、末永く安定した運用がお望みなら、Debian/GNU Linux がおすすめです。
- ikspiari
- ベストアンサー率48% (29/60)
パッケージだとソースコードからのインストール先と別のディレクトリにインストールされる事もあるのでややこしいですね。 ただ、ソースコードからmakeすると失敗する場合もありますので、Makefileを修正できる知識やライブラリの依存関係についての知識も必要になる事があります。 また、中にはgccで直接コンパイルするものもあります。 makeがコケるとどうしようもなくなるのが初心者の典型なので、いろいろと勉強してみてください。 頑張ってくださいね。
- xjd
- ベストアンサー率63% (1021/1612)
私がapacheをmakeしてるときはこんな感じです。 ------------------------------------------------- # make clean # ./configure \ --enable-module=so \ --enable-module=rewrite \ --server-uid=www \ --server-gid=www # make # make install ------------------------------------------------- 必要なモジュールがあれば追加してください。 シェルスクリプトにしておけば、簡単に実行できますね。 インストール先は--prefix で指定できますが、省略した場合は /usr/local/apache にインストールされます。 phpをconfigureするときも、apacheのインストール先を/usr/local/apache と指定すれば良いですね。 インストールしたソース版apacheは # /usr/local/apache/bin/apachectl start で実行できます。 Linuxの起動と同時にapacheを起動したければ、 /etc/rc.d/rc.localファイルに記述するか、 パッケージ版apacheの起動シェル、/etc/init.d/httpdファイル を修正する等してみてください。 (注意)パッケージ版とソース版のapacheを同時に立ち上げたりしないように。
- ikspiari
- ベストアンサー率48% (29/60)
makeするのも覚えてしまえば楽ですよ。 10分もあればインストール出来ると思います。 例えばApacheなら、wgetかなにかでソースを落として、 > tar xvfz apache_1.3.27.tar.gz > cd apache_1.3.27 > ./configure > make > su # make install で、終わります。 ほとんどのソフトウェアは上記の流れでインストールできます。 configureのオプションがそれぞれ違うくらいで。 頑張ってください。 参考になれば幸いです。
- ikspiari
- ベストアンサー率48% (29/60)
基本的な事ですが、ApacheはDSOでmakeされてるのでしょうか? --enable-module=soを付けてconfigure & make しないと後付けでモジュールの追加は出来ません。 > ./httpd -l で、 mod_so.c があるか確認してみてください。
補足
ApacheもOSインストール時に一緒にインストールされたもので、自分でmakeはしていないんです。 どうやらApache、PHP、Postgresqlなどは、OSと一緒にインストールするのでなく、後から自分でソースからインストールした方がよさそうですね。
- xjd
- ベストアンサー率63% (1021/1612)
>もしかしたら、「./configureでインストール先 >を指定するので 」で、インストール先を指定する必要があるのでしょうか? >インストール先はどこにすればよいのですか?また、どのように指定すればよいのですか? # ./configure --help と実行したら、オプションの一覧が表示されます。 apacheのディレクトリを指定するオプションがありますので確認してください。 但し、#1に書いているとおり、apacheもソースからコンパイルしている 前提でアドバイスしています。 Apacheがパッケージ版でPHPがソース版、という組み合わせは経験ありませんので。 #2のastronaut氏が解説されている通りの方法で、どちらもパッケージ版でいくか、 それともどちらもソース版で構築するか、にしておいた方が無難だと思います。
- astronaut
- ベストアンサー率58% (303/516)
xjd さんのおっしゃるとおり,ソースからインストールするのが良いと思いますが,どうしても rpm でパッケージ管理したい場合は,src.rpm から rebuild という手もあります. # wget ftp://ftp.kddlabs.co.jp/Linux/packages/redhat/redhat/linux/updates/8.0/en/os/SRPMS/php-4.2.2-8.0.7.src.rpm # rpm -ivh php-4.2.2-8.0.7.src.rpm # vi /usr/src/redhat/SPECS/php.spec (449行目あたりのconfigure オプションに必要なものを追加) # rpmbuild -bb /usr/src/redhat/SPECS/php.spec /usr/src/redhat/RPMS/i386 に,rpm パッケージができるので,rpm コマンドで適宜インストール 結構大変です. なお,手元の環境では,rebuild するのに,以下のパッケージの追加が必要でした. httpd-devel, bzip2-devel, curl-devel, db4-devel, expat-devel, freetype-devel, gd-devel, gdbm-devel, gmp-devel, libjpeg-devel, libxml2-devel, ncurses-devel, openssl-devel, pam-devel, pspell-devel, krb5-devel, cyrus-sasl-devel, openldap-devel, mysql-devel, postgresql-devel, unixODBC-devel, net-snmp-devel, curl, mysql, net-snmp, perl-CGI, perl-DBD-MySQL, perl-DBI, postgresql-libs, unixODBC, imap-devel
- xjd
- ベストアンサー率63% (1021/1612)
回答ではなくアドバイスですが、、、 私はApacheやPHPはソースをダウンロードしてmakeしてます。 パッケージはバージョンが古いし、自分の都合にあわせて コンパイルオプションをいろいろ変えて試しますので、 ソースからコンパイルする方が、はるかに早くてラクチンです。 Apacheやphpをコンパイルする時に、./configureでインストール先 を指定するので既存のパッケージ版と競合しません。 # tar xvzf php-4.2.3.tar.gz # cd php-4.2.3 # ./configure \ --with-openssl=/usr/local \ --with-pgsql=/usr/local/pgsql \ --with-apxs=/usr/local/apache/bin/apxs \ --with-jpeg-dir=/usr/lib \ --with-xpm-dir=/usr/X11R6/lib \ --with-gd=/usr/local \ --with-freetype-dir \ --with-ttf \ --enable-gd-native-ttf \ --enable-momory-limit \ --enable-mbstring \ --enable-mbstr-enc-trans \ --enable-mbregex \ --enable-zend-multibyte \ --enable-track-vars \ --enable-trans-sid \ --without-db \ --without-mysql # make # make install 私の手順は、たったこれだけです。 ご参考まで。
補足
ご回答ありがとうございます。 デフォルトのPHPは4.2.2ですが、最新の4.3.1のソースを入手してトライしました。しかしながら、下記の通り、上手くいきません。 ----------------------------------- #./configure --enable-mbregex --enable-mbstring --enable-zend-multibyte --with-apxs2=/usr/sbin/apxs #make ext/ctype/ctype.lo: file not recognized: File truncated collect2: ld returned 1 exit status とmakeでエラーになります。 --------------------------------------- ためしに--with-apxs2=/usr/sbin/apxsを省いて、 #./configure --enable-mbregex --enable-mbstring --enable-zend-multibyte とすると、 #make #make install ともエラーなく正常に終了しているようなので、 apacheを再起動してphpinfoを表示させると、タイトルは PHP Version 4.2.2のままで、更新されていないようです。 もしかしたら、「./configureでインストール先 を指定するので 」で、インストール先を指定する必要があるのでしょうか? インストール先はどこにすればよいのですか?また、どのように指定すればよいのですか? ご指摘、ご教授いただければ幸いです。
お礼
皆さん、ありがとうございます。 Apache、PHP、Postgresqlと全てmakeしてインストールし直したところ、上手く行きました。 それにしても、パッケージ版っていったい何なんでしょうか。。便利と思って格闘していましたが、皆さんの言われる通り、makeしてインストールする方が遥かに簡単でした。 OSと同時にインストールするパッケージは最小限にしておいて、必要に応じて自分でインストールして行った方がよさそうですね。