ます’s Blog - どうでもいい記事100選

どうでもいい記事100選

Debian 4.0(etch) 再び

(性懲りもなく)先日のですが。
古いバージョンのMySQLは割り切って最新版のMySQLを入れる事にしたんだけど、結局、古いバージョンのPHPがビルドできなくて、古いバージョンのコンパイラを用意するハメになりました。遠回りしすぎ。_| ̄|○
ソースからビルドするのも激しく面倒だったので、Debianパッケージのコンパイラをインストールして小細工をカマしました。apt-get万歳。
関連しそうな部分だけ抜粋しますが、こんな感じ。

apt-get install gcc
apt-get install cpp
apt-get install g++
apt-get install gcc-3.4
apt-get install cpp-3.4
apt-get install g++-3.4
apt-get install libgdbm3
apt-get install libgdbm-dev
apt-get install libdb3
apt-get install libdb3-dev

ln -s /usr/include/gdbm-ndbm.h /usr/include/ndbm.h
ln -s /usr/lib/libgdbm_compat.a /usr/lib/libdbm_compat.a
ln -s /usr/lib/libgdbm_compat.la /usr/lib/libdbm_compat.la
ln -s /usr/lib/libgdbm_compat.so /usr/lib/libdbm_compat.so
ln -s /usr/lib/libdbm_compat.a /usr/lib/libdbm.a
ln -s /usr/lib/libdbm_compat.la /usr/lib/libdbm.la
ln -s /usr/lib/libdbm_compat.so /usr/lib/libdbm.so
ln -s /usr/lib/libdbm.a /usr/lib/libndbm.a
ln -s /usr/lib/libdbm.la /usr/lib/libndbm.la
ln -s /usr/lib/libdbm.so /usr/lib/libndbm.so

mkdir "$HOME/gcc/3.4"
mkdir "$HOME/gcc/3.4/bin"

ln -s /usr/bin/gcc-3.4 "$HOME/gcc/3.4/bin/gcc"
ln -s /usr/bin/gccbug-3.4 "$HOME/gcc/3.4/bin/gccbug"
ln -s /usr/bin/cpp-3.4 "$HOME/gcc/3.4/bin/cpp"
ln -s /usr/bin/g++-3.4 "$HOME/gcc/3.4/bin/g++"
ln -s /usr/bin/gcov-3.4 "$HOME/gcc/3.4/bin/gcov"

source "$HOME/.cshrc"
setenv PATH "$HOME/gcc/3.4/bin":$PATH

env OPTIM="-O2" EXTRA_LIBS="-R/usr/lib -L/usr/lib -lgdbm_compat" ./configure \
--prefix=/usr/local/apache \
--enable-module=digest \
--enable-module=auth_db \
--enable-module=auth_dbm \
--enable-module=auth_digest \
--enable-module=headers \
--enable-module=info \
--enable-module=rewrite \
--enable-module=so \
--enable-module=expires \
--enable-module=proxy \
--enable-module=speling \
--enable-module=usertrack \
--enable-module=vhost_alias \
--enable-module=status \
--enable-module=unique_id

env CC=gcc CXX=gcc ./configure \
--prefix=/usr/local/mysql \
--localstatedir=/usr/local/mysql/data \
--with-charset=ujis \
--with-extra-charsets=all \
--with-unix-socket-path=/tmp/mysqld.sock \
--with-tcp-port=3306 \
--with-low-memory \
--enable-local-infile \
--with-innodb

./configure \
--prefix=/usr/local/pgsql

./configure \
--with-apxs=/usr/local/apache/bin/apxs \
--without-pear \
--enable-zend-multibyte \
--enable-mbstring \
--enable-mbregex \
--with-mysql=/usr/local/mysql \
--with-pgsql=/usr/local/pgsql \
--with-oci8=/usr/local/oracle \
--enable-sigchild \
--enable-dba \
--with-ndbm=/usr \
--with-gdbm=/usr \
--with-db3=/usr \
--with-openssl=/usr \
--with-mcrypt=/usr \
--with-mhash=/usr \
--with-gd=/usr \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-freetype-dir=/usr \
--with-zlib-dir=/usr \
--with-curl=/usr \
--with-dom=/usr \
--enable-ftp \
--enable-sockets \
--enable-bcmath \
--enable-calendar \
--with-zlib=/usr

Apache1.3系にauth_dbm機能を追加してビルドするのと、古いバージョンのMySQLとPHPのビルド(auth_dbmと連携する為に必要な機能を追加)が行えました。
こんなやり方が正当な方法なのか不明ですが、出来たので良しとしたい。。。それにしても、auth_dbmを認識させる部分は(かなり)離れ業のような気が。
ただ、古いコンパイラも(Debianパッケージ的に)永続的サポートが保障されている訳ではないので注意が必要。。。
公式CDを買うか全isoファイルを確保する等して(最悪の場合を想定して)逃げ道を確保しておくべきか。。。うーん。