折角作ったネイティブコンパイル環境なので、LS-GL上でSubversionをコンパイルしてみることにしました。何故Subversionなのか?は謎ですw
/usr/local/srcで行います
expat-1.95.8.tar.gzを展開してビルドします(ソースはVineのSRPMSから拝借):
export PATH=/usr/local/develop/bin:$PATH
cd expat-1.95.8
./configure --prefix=/usr/local/develop
make
make install
以上
pkg-config.0.22を展開してビルドします(ソースはここから):
export PATH=/usr/local/develop/bin:$PATH
cd pkg-config-.0.22
./configure --prefix=/usr/local/develop
make
make install
以上
Apacheのサイトよりapr-1.2.8.tar.gzをダウンし作業ディレクトリで展開してビルドします:
export PATH=/usr/local/develop/bin:$PATH
cd apr-1.2.8
./configure --prefix=/usr/local/develop
make
make install
一発でinstallするのが怖い場合は、make後に適当な所に仮インストして様子を見ましょうw
DESTDIR=/foo/bar make install
以上。
同様にApacheのサイトよりapr-util-1.2.8.tar.gzをダウンし展開してビルドします:
export PATH=/usr/local/develop/bin:$PATH
export LIBFLAGS="-L/usr/local/develop/lib -L/usr/local/BerkeleyDB.4.2/lib"
export CFLAGS="-I/usr/local/BerkeleyDB.4.2/include"
../apr-util-1.2.8/configure \
--prefix=/usr/local/develop \
--with-apr=/usr/local/develop \
--with-expat=/usr/local/develop \
--with-berkeley-db=/usr/local/BerkeleyDB.4.2
make
make install
以上
subversion-1.4.3.tar.gzをダウンし、展開、ビルドします:
export PATH=/usr/local/develop/bin:$PATH
export LIBFLAGS="-L/usr/local/develop/lib -L/usr/local/BerkeleyDB.4.2/lib -L/usr/local/ssl/lib"
export CFLAGS="-I/usr/local/BerkeleyDB.4.2/include -I/usr/local/ssl/include/openssl -I/usr/local/apache2/include"
cd subversion-1.4.3
./configure \
--prefix=/usr/local/svn \
--with-apache=/usr/local/src/httpd-2.2.3 \ ←話が前後していますが、後述のApache2.2のビルド後に再ビルドを行っています
--with-apr=/usr/local/develop \
--with-apr-util=/usr/local/develop \
--with-ssl=/usr/local/ssl \
--with-berkeley-db=/usr/local/BerkeleyDB.4.2
make
DESTDIR=/mnt/disk1/share make install ←一旦、別の場所にインストール
cd /usr/local
ln -s /mnt/disk1/share/usr/local/svn svn ←本来の場所にシンボリックリンクを張る
vi /etc/ld.so.conf ←/usr/local/svn/libを追加
ldconfig
ビルドにはそこそこ時間掛ります(TVみながら放置してたんで正確な時間はわかりませんけどw)。しかし、ビルドの途中でエラーが発生してしまいました。どうやらMakefileの中身で-rpathの値が設定されていないらしくlibtoolに怒られているみたいなのですが、回避策としてはMakefileを直接編集して-rpathを設定してしまえば強引に通すことが出来ます。
まずは/tmpにでも実験用のリポジトリを作成します。その後inet.dにsvnserverを登録しWindowsのTortoiseSVNから繋がるかを試してみました。:
svnadmin create /tmp/svnrep
cd /tmp/svnrep/conf
省略 ←適当に設定しておく
cd /etc
vi inetd.conf
svn stream tcp nowait root /usr/local/develop/bin/svnserve -i -t
kill -HUP <inetdのPID>
cd /tmp
mkdir testsrc ← import用の適当なディレクトリを作成
cd testsrc
vi test.c ← import用の適当なソースファイルを作成
cd ..
svn import testsrc file:///tmp/
怪しいながらもソースがリポジトリに登録されたようです。後はWindowsよりsvn://ls-gl/tmp/svnrepを指定してリポジトリブラウザを参照したり、coしてみたり、commitしてみましたが動作はしました。ちょっと怖すぎるので実用にはなりませんが、まぁ、実験ということで・・・
普段はssh経由で接続しているのでLS-GLでも同じように設定してみます。svn用のユーザを作成し、authorized_keysを作成します。authorized_keysに細工をしてsvnをキックする(むしろsvnしか使えない)ようにします。
command="/usr/local/svn/bin/svnserve -t --tunnel-user=svn_user",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAAB3NzaC1…
svn_userの箇所はLinuxのユーザアカウント名ではなく、リポジトリのpasswdファイルに設定したユーザ名を指定します。authorized_keysには複数のkeyが登録出来るので、一つのLinuxアカウントで複数のsvnユーザでの利用も可能です。試しにTortoiseSVNからssh経由でも繋がりました。
素直にdebian化してaptでいろいろ入れる方が安全というか無難かとは思いますが、標準環境でどこまでできるのか?という実験も一興かとw