Solaris10での構築

ちょっと挫折中。


Solaris10(x86) + Apache + PHP + MySQLでサイト構築しようと企んでたんだけど。


OpenSSL0.9.8k → 何もせず64ビット版に。
libxml2, libjpeg(jpeg6a), libpng, gd → 問題なく64ビット版に。
MySQL5.1 → 問題なく64ビット版に。
Apache2.2 → 問題なく64ビット版に。

PHP5 → 問題なく64ビット版に
いえ、問題ありました。

apxs2を組み込もうとすると、ldがapxsがelf32だというエラーになる。

apxsを調べてみると、Perlのスクリプト。(file apxs)
という事で、Solaris10標準のperlを調べてみると、見事に32ビット版。
(ldが吐くエラーはライブラリに対して・・・のはずなんだけど・・・という疑問はあるが、思い当たる部分はperlのみ・・・だから)
Perlも入れ直す必要があるな → 64ビットでコンパイル出来ず。


・・・

見事にハマリです。


妥協としては全て32ビットバイナリとしてコンパイルする事か、
全てパッケージ(32ビット版が、OS標準で含まれているので)でインストールする事。


・・・ちょっとイヤだが。



追記:
上記、かなり勘違い。
ライブラリ検索パスの話とか、各種ライブラリ(xml2, jpeg, png, gd)の話とかが重なっていただけ。
結論としては、zlibを--sharedオプション付きでコンパイルして解決。




せっかくなので手順を記載(備忘録としてメモ)します。
方針として、インストールは
32ビットバイナリ → /usr/local/bin
32ビットライブラリ → /usr/local/lib
64ビットバイナリ → /usr/local/bin
64ビットライブラリ → /usr/local/lib/64
に行うものとします。

前提としてOpenSSLの最新版が
32ビット版 → /usr/local/ssl
64ビット版 → /usr/local/ssl64
にインストールされているものとします。



Solaris10は全体ディストリビューション異常でインストールされ、コマンドサーチパスは
最低限 /usr/local/bin、/usr/bin、/usr/ccs/bin、 /usr/sfw/binが設定されていると仮定。


64ビットのライブラリ検索パスをcrleで設定
# crle -64 -c /var/ld/64/ld.config \
   -l /usr/local/httpd/lib:/usr/local/lib/64:/usr/sfw/lib/64:/usr/lib/64:/lib/64

Apache2.2のコンパイル&インストール
$ CFLAGS="-m64 -O3" \
  CPPFLAGS="-m64 -O3" \
  CXXFLAGS="-m64 -O3" \
  ./configure \
  --prefix=/usr/local/httpd64 \
  --enable-shared=all \
  --enable-module=so \
  --enable-dav=yes \
  --enable-ssl \
  --with-sslport=443 \
  --with-ssl=/usr/local/ssl64 \
  --enable-cache \
  --enable-disk-cache \
  --enable-mem-cache \
  --enable-proxy \
  --enable-proxy-balancer \
  --enable-rewrite
$ gmake
# gmake install

zlibをコンパイル&インストール
$ CFLAGS="-m64 -O3" \
   CPPFLAGS="-m64 -O3" \
   CXXFLAGS="-m64 -O3" \
   ./configure --shared \
   --prefix=/usr/local \
   --libdir=/usr/local/lib/64
$ gmake
# gmake install

libxml2をコンパイル&インストール
$ CFLAGS="-m64 -O3" \
   CPPFLAGS="-m64 -O3" \
   CXXFLAGS="-m64 -O3" \
   ./configure \
   --libdir=/usr/local/lib/64 \
   --with-zlib
$ gmake
# gmake install

libjpeg(jpeg-6b)をコンパイル&インストール
$ CFLAGS="-m64 -O3" \
   CPPFLAGS="-m64 -O3" \
   CXXFLAGS="-m64 -O3" \
   ./configure \
   --libdir=/usr/local/lib/64
$ gmake
# gmake install

libpngをコンパイル&インストール
$ CFLAGS="-m64 -O3" \
   CPPFLAGS="-m64 -O3" \
   CXXFLAGS="-m64 -O3" \
   ./configure \
   --libdir=/usr/local/lib/64 \
$ gmake
# gmake install

GDをコンパイル&インストール
$ CFLAGS="-m64 -O3" \
   CPPFLAGS="-m64 -O3" \
   CXXFLAGS="-m64 -O3" \
   ./configure \
   --libdir=/usr/local/lib/64 \
$ gmake
# gmake install

PHP-5.2をコンパイル&インストール
$ LDFLAGS="-m64 -O3" \
   CFLAGS="-m64 -O3" \
   CPPFLAGS="-m64 -O3" \
   CXXFLAGS="-m64 -O3" \
   ./configure --libdir=/usr/local/lib/64 \
   --with-zlib --with-gd \
   --enable-mbregex --enable-mbstring \
   --with-mysql=/usr/local/mysql \
   --with-xmlrpc \
   --with-apxs2=/usr/local/httpd/bin/apxs
$ gmake
# gmake install