[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
はじめに⇒
今、
お客さんのミドルウェアの移植作業をしている。
リヴィジョン管理する必要があり、
今回、
Subversionを導入することにした。
CVSよりも、クローズドな環境での運用が楽そう。
ロック(チェックアウト)とか明示できるし。
前提⇒
64ビットELFバイナリとしてビルドする。
理由、Apache2用DSOを64ビットで構成する必要があるため。
それから、インターネットで使うわけぢゃないので、SSLたら、データ圧縮たら、しない。
関連パッケージは以下の通り。
× 1. apr-0.9.7 subversion付属のもので良し
× 2. autoconf 入れない
× 3. libtool 入れない
× 4. neon subversion付属のもので良し
● 5. Berkeley DB 4.X db-4.4.20.tar.gz ← <http://dev.sleepycat.com>
● 6. Apache httpd-2.0 httpd-2.0.59.tar.bz2 ← <http://httpd.apache.org/>
○ 7. Python 2.4.3 Python-2.4.3.tar.bz2 ← <http://www.python.org/>
× 8. Visual C++ 6.0 関係ない
× 9. Perl 5.8 or newer /opt/perl/bin/perl (プリインストールされてたもの Ver.5.8.3)
× 10. MASM 6 or newer 関係ない
11. Libraries for our libraries
× "--with-ssl=/opt/openssl"
× "--with-zlib=/usr/local"
肝心のSubversionのパッケージ、
次の通り。
サーバ・ソース (http://subversion.tigris.org/)
subversion-1.3.2.tar.bz2
クライアント・Win32 バイナリ (http://tortoisesvn.tigris.org/)
LanguagePack-1.3.5.6804-win32-ja.exe
TortoiseSVN-1.3.5.6804-svn-1.3.2.msi
Eclipse プラグイン (http://subclipse.tigris.org/)
《Subclipseプラグインのインストール》
手順⇒
1.インストール
1. Berkeley DBをビルド
% gzcat db-4.4.20.tar.gz | tar xf -
% cd db-4.4.20/build_unix
% CC="/opt/ansic/bin/cc +DD64"; export CC
% CFLAGS="-AC99 -z +Z -Y -g"; export CFLAGS
% LDFLAGS="-Wl,+n"; export LDFLAGS
% ../dist/configure \
--prefix=/usr/local \
--bindir=/usr/local/bin/hpux64 \
--libdir=/usr/local/lib/hpux64
・
・
・
% make
・
・
・
% make install
・
・
・
%
2. Pythonをビルド
% bzcat Python-2.4.3.tar.bz2 | tar xf -
% cd Python-2.4.3
% CC="/opt/ansic/bin/cc +DD64"; export CC
% CFLAGS="-AC99 -z +Z -Y -g"; export CFLAGS
% LDFLAGS="-Wl,+n"; export LDFLAGS
% ./configure \
--prefix=/usr/local/Python64 \
--enable-shared \
--disable-ipv6 \
--without-gcc \
--with-threads
・
・
・
% make
・
・
・
% make check
・
・ ※時間がかかるー。 昼飯、食べて来よっと。
・
% make install
・
・
・
%
3. Apache httpdソースを展開
% bzcat httpd-2.0.59.tar.bz2 | tar xf -
%
4. subversionをビルド
% ls --color -F
Python-2.4.3/ db-4.4.20/ httpd-2.0.59/ subversion-1.3.2.tar.bz2
Python-2.4.3.tar.bz2 db-4.4.20.tar.gz httpd-2.0.59.tar.bz2
% bzcat subversion-1.3.2.tar.bz2 | tar xf -
% cd subversion-1.3.2
% PYTHONPATH=/usr/local/Python64/bin/python
% CC="/opt/ansic/bin/cc +DD64"; export CC
% CFLAGS="-AC99 -z +Z -Y -g"; export CFLAGS
% LDFLAGS="-Wl,+n"; export LDFLAGS
% ./configure \
--prefix=/usr/local/svn64 \
--enable-shared \
--with-berkeley-db=/usr/local \
--with-apache=../httpd-2.0.59
・
・
・
% make
・
・ ※1回目のトラブル、内製の共有オブジェクトとリンクできない旨のエラーで中断
原因を調査した結果、
前の段階でリンクされた全ての共有オブジェクトの在り処を
“LPATH”という環境変数を使ってリンク時検索PATHを教えてやる必要あり。
% setenv LPATH \
$PWD/subversion/libsvn_client/.libs:\
$PWD/subversion/libsvn_delta/.libs:\
$PWD/subversion/libsvn_diff/.libs:\
$PWD/subversion/libsvn_fs/.libs:\
$PWD/subversion/libsvn_fs_base/.libs:\
$PWD/subversion/libsvn_fs_fs/.libs:\
$PWD/subversion/libsvn_ra/.libs:\
$PWD/subversion/libsvn_ra_dav/.libs:\
$PWD/subversion/libsvn_ra_local/.libs:\
$PWD/subversion/libsvn_ra_svn/.libs:\
$PWD/subversion/libsvn_repos/.libs:\
$PWD/subversion/libsvn_subr/.libs:\
$PWD/subversion/libsvn_wc/.libs:\
$PWD/apr/.libs:\
$PWD/apr-util/xml/expat/lib/.libs:\
$PWD/neon/src/.libs:\
$PWD/apr-util/.libs:\
/usr/local/lib/hpux64:\
/usr/lib/hpux64
% make
・
・ ※2回目のトラブル、libtoolでエラーが発生してしまう。
libtool ‥‥‥
マルチバイト文字が正しくありません
LANG環境変数をEUCロケールにしてたのがまずいらしい。
“C”ロケールにかえる。
% setenv LANG C
% make
・
・ ※3回目のトラブル、svndumpfilterコマンドのリンク時、iconv関数をリンクできない旨のエラー発生
・ って、おいおい、進んじゃうよ、止まれ、止まれ、とCtrl+C 打ち込み
原因を調査すると、
libiconv をリンク指定していない。
ので、手でMakefileを修正し、
/usr/local/lib/hpux64/libiconv.so ← ソースDL元 《libiconv-1.10-cp932.patch.gz》
がリンクされるよう指定。
(Makefileを直接編集するのは邪道だが、この際仕方ない、急いでるんで)
% make
・
・ ※4回目のトラブル、libtoolコマンドの実行のさせ方が悪いみたい
・
libtool: link: only absolute run-paths are allowed
make: *** [subversion/mod_dav_svn/mod_dav_svn.la] Error 1
%
むむむ、
またもや、リンク時のコマンド指定の仕方が良くない。
自力でMakefileとbuild-outputs.mkというファイルを改修。
ちなみに、
DSOのビルドに関する詳細は 《こちら》
% make
・
・
% make check
・
・ ※めっちゃ、時間がかかる、スタバ行って一服して帰って来てもまだやってたし(-_-;)
・
% make install
・
・
・
%
あれ、Apache2 にSubversionのDSOモジュールが組み込まれてないやん。
手で入れろ、てか。
% $APACHE_HOME/bin/apxs -i -n dav_svn subversion/mod_dav_svn/.libs/mod_dav_svn.so
・
・
% $APACHE_HOME/bin/apxs -i -n authz_svn subversion/mod_authz_svn/.libs/mod_authz_svn.so
・
・
%
2.準備
5. サーバ設定
/etc/services に記述
svn 3690/tcp # Subversion
6. Subversion Daemon 起動
# /usr/local/svn/bin/svnserve -d
# ps -ef |grep svn
root 2336 1 0 08:50:54 ? 0:00 /usr/local/svn/bin/svnserve -d
# lsof -i:svn
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
svnserve 13954 root 3u IPv6 0xe00000016595aac0 0t0 TCP *:svn (LISTEN)
#
7. Apache2 WebDAVでもSubversionが動くようにする
% su -
Password : ********
#
$APACHE_HOME/conf/httpd.conf にSubversionアクセス設定を追加。
まず、Subversion DSOがロードされるようになっているか確認。
(先刻のapxsコマンドで登録されてるはず)
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
WebDAV機能を有効にする。
<Directory />
DAV on
Options FollowSymLinks
AllowOverride None
</Directory>
“/svn”というロケーションを用意。
<Location /svn>
DAV svn
SVNParentPath "/home/var/svnrepositories"
</Location>
# $APACHE_HOME/bin/apachectl configtest
Syntax OK
# $APACHE_HOME/bin/apachectl start
# exit
%
とりあえず、リポジトリを作る。
% svnadmin create /home/var/svnrepositories/REPOS
%
接続確認。
% telnet localhost 80
Trying...
Connected to localhost.hoge.jp.
Escape character is '^]'.
OPTIONS /svn/REPOS/ HTTP/1.1<CR>
Host: localhost<CR>
<CR>
HTTP/1.1 200 OK
Date: Fri, 01 Sep 2006 05:30:36 GMT
Server: Apache/2.0.59 (Unix) DAV/2 SVN/1.3.2
DAV: 1,2
DAV: version-control,checkout,working-resource
DAV: merge,baseline,activity,version-controlled-collection
DAV: <http://apache.org/dav/propset/fs/1>
MS-Author-Via: DAV
Allow: OPTIONS,GET,HEAD,POST,DELETE,TRACE,PROPFIND,PROPPATCH,COPY,MOVE,LOCK,UNLOCK,CHECKOUT
Content-Length: 0
Content-Type: text/plain
Connection closed by foreign host.
%
おぉ、成功!
8. クライアント設定
クライアントの
WindowsXP PCの
‘%SystemRoot%\System32\Drivers\etc\services’に下記を追加。
svn 3690/tcp # Subversion
9. TortoiseSVN をインストール。
MSIパッケージだから、すんなり入る。
日本語ロケールのパッケージも忘れんなよ。
日本語への切替は、
パッケージインストール後、
エクスプローラ上で右クリックして出てきたポップアップメニューで、
[TortoiseSVN]→[Settings] を選択し、
「TortoiseSVN Settings」ダイアログを出す。
当ダイアログ内、
“Language:” 欄よりプルダウンリスト内の「日本語」を選んで「OK」
だ。
ちなみに、トータス・エス・ヴィ・エヌ と読むらしい。
なんで、亀なんやろ。
10. Eclipse に‘Subclipse’ をインストール。
更新マネージャ使ってダウンロードしてセットアップ。
めっちゃ簡単、インターネットに繋がってれば。
繋がってない、ローカルのPCには、どうやればセットアップできるんやろ。
今回のEclipse のパッケージングは次のとおり。
Eclipse 本体 <http://download.eclipse.org/eclipse/downloads/>
eclipse-SDK-3.2-win32.zip
NLpack1-eclipse-SDK-3.2-win32.zip
CDT <http://www.eclipse.org/cdt/downloads.php>
org.eclipse.cdt.sdk-3.1.0-win32.x86.zip
日本語化 <http://mergedoc.sourceforge.jp/>
pleiades_1.0.3.zip
jstyle_3.2.0.0.zip
使い方編≪Subversionをあざとく使う方法≫へ、つづく
今回お世話になったサイト⇒
Subversion によるバージョン管理(邦訳)
Linux Home Server Memo > Subversionでサイト管理(1/3)
Landscape - エンジニアのメモ 2005-03-01