Subversionのリポジトリの構成に迷う

Posted at 2006-10-21T14:08:39+09:00 in Software

さくらインターネットのサーバにSubversion突っ込んだので、

早速リポジトリ作ろうと思った矢先詰まった。

リポジトリの構成どうするか。

まず、プライベートなやつと、パブリックなやつは分ける。これは問題ない。 でパブリックなやつを分けるか分けないか。

パブリックなやつに突っ込むものとしては、

  • プロジェクト(小物ツール等の公開スクリプト)
  • ライブラリ(PerlモジュールやJavascriptライブラリ)
  • プラグイン(例えばblosxomやPlagger)

に分けられる。それで、 コレを三つに分けるか、それとももう少し細かく、 例えばプロジェクトごとに分けるとか分けないとかとかで悩んでる。

で、あんまり悩んでいてもしょうがないので、はてなで聞いてみた。

http://q.hatena.ne.jp/1161406827

何か参考になることがあれば、コメントかリンク先の人力検索で教えてください。

Subversionをさくらインターネットにインストール

Posted at 2006-10-21T11:01:58+09:00 in Software

Subversion1.4.0を入れるメモ。

前提

さくらインターネットのスタンダードプランで、 シェルはデフォルトのものを使用。telnetでログインして作業をした。

ちなみにtracは使うつもりが無かったので、Python bind は入れてない。 変わりにPerl bind を入れた。

参考にしたもの

ディレクトリを作成/環境変数を設定

mkdir -p $HOME/local/src
setenv PATH $HOME/local/bin:$PATH
setenv LD_LIBRARY_PATH $HOME/local/lib

SWIGをインストール

cd $HOME/local/src
wget http://jaist.dl.sourceforge.net/sourceforge/swig/swig-1.3.29.tar.gz
tar zxvf swig-1.3.29.tar.gz
cd ./swig-1.3.29
./configure --prefix=$HOME/local --with-python=/usr/local/bin/python
make
make install

Apache Portable Runtime(APR) 1.2.7をインストール

cd $HOME/local/src
wget http://ftp.kddilabs.jp/infosystems/apache/apr/apr-1.2.7.tar.gz
tar zxvf apr-1.2.7.tar.gz
cd ./apr-1.2.7
./configure --prefix=$HOME/local --disable-static
make
make install

APR-util 1.2.7をインストール

cd $HOME/local/src
wget http://ftp.kddilabs.jp/infosystems/apache/apr/apr-util-1.2.7.tar.gz
tar zxvf apr-util-1.2.7.tar.gz
cd ./apr-util-1.2.7
./configure --prefix=$HOME/local --with-apr=$HOME/local --with-expat=/usr/local --with-iconv=/usr/local --disable-static
make
make install

Subversionをインストール

cd $HOME/local/src
wget http://subversion.tigris.org/downloads/subversion-1.4.0.tar.gz
tar zxvf subversion-1.4.0.tar.gz
cd ./subversion-1.4.0
./configure --prefix=$HOME/local --with-neon=$HOME/local --without-berkeley-db --enable-swig-bindings=perl --with-swig=$HOME/local/bin/swig --with-apr=$HOME/local/bin/apr-1-config --with-apr-util=$HOME/local/bin/apu-1-config --disable-static
make
make install

make installする前に、

./subversion-1.4.0/subversion/svnsync/svnsync.1

./subversion-1.4.0/subversion/svnversion

にコピーすること。 そうしないとmake installがこける。最初それで詰まった。

そのあと、

make swig-pl
make check-swig-pl
make install-swig-pl

しようとしたんだけど、どうも共有領域に入れようとしてるらしく、 パーミッションがねーよといって怒られる。

なのでmake install-swig-plせずに、

cd $HOME/local/src/subversion-1.4.0/subversion/bindings/swig/perl/native
perl MakefilePL LIB=~/perl/lib INSTALLMAN1DIR=~/perl/man/man1 INSTALLMAN3DIR=~/perl/man/man3
make
make install

して自力で突っ込んだ。SVN::Webのテストしてみたところ、 SubversionのPerl bind入ってねーよとは言われなかったので、 多分大丈夫だろうと思う。

環境変数を追加

set path = ( [中略] $HOME/bin $HOME/local/bin)
[中略]
setenv  PERL5LIB    ~/perl/lib
setenv  LD_LIBRARY_PATH ~/local/lib

こんな感じで追加する。 [中略]となっているところは実際には色々と書かれているので[中略]とは書いてはいけない。

感想

2時間半ぐらいかかりました。 あとまだ実際に動かしてないので、ちゃんと入っているかどうか不明。 多分大丈夫だと思うけど。

Virtual PC 2004をいれた

Posted at 2006-09-01T16:27:31+09:00 in Software

開発環境を整えるためにMicrosoftのVirtual PC 2004 SP1

をインストールした。ちなみにコレは無料です。

とりあえずインストールしただけなんだけど、すごく面白そう。なんか色々できそうな感じ。 ただ使っているマシンがそんなにスペックが高くないので、重くなりそうな予感。

とりあえずあとはOS入れて開発環境整えるようにしないと。

で、NyakiWikiについて

とりあえず、ゆっくりですが開発は進んでいます。 プラグイン書いてコミットしたりとかコアを修正したりとかぼちぼちと。

それにしても記法プラグインが完成できないのは痛い。 相変わらず、perlが応答しなくなる現象に遭遇するのでなんともできない。 さらに問題の回避がしようがないので精神的にもよろしくない。

置換演算子の中で比較演算子を使おうとするとperlが応答しなくなるという現象は、 他の環境でも起こるんだろうか? さらによく分からんのが、あるページでは起こるのに別のページではまったく起こらないのだから不思議。 リファレンスをたらい回しに処理していくのがまずいのかな。 ただ自分のとこの環境でのみ起こっているような気もしなくもないんだよな。

何か関連情報を知っている方がいれば教えてください。

あとSubversionリポジトリ公開したときに言い忘れていたんですが、 現在、NyakiWikiは安定版ではなく* 開発版 *です。 なので、そう大きな仕様の変更はしませんが、内部的な処理を書き換えたりしてるので、 最新版かどうかはよく確かめる事をオススメします。

そういや、買い込んだ積読本が消費しきれてません。 買いすぎだよ。

Win32なApacheでPATH_INFOがShift_JISになる

Posted at 2006-08-07T13:19:36+09:00 in Software

なんかここの所Wikiネタばっかりなので、役に立ちそうで立つのか分からないネタ。

WindowsでApache使ってサーバ立てるのはオススメできないという話。

なんでもShift_JIS

仕様なのかバグなのか分かりませんが、Win32なApacheではPATH_INFO等がShift_JISに強制変換されるみたいです。 WindowsXP + Apache1.3.34 で確認しました。というかまあ僕の開発環境なんですが、他の環境でもそうなるかと思います。 Apache PATH_INFO 文字化けなんかで検索すると同じようなエントリが出てきます。

具体的にはどういうことかと言うと、CGIのPATH_INFOに日本語(マルチバイト?)な文字列を、 URIエスケープして渡すと、なぜかShift_JISに変換されます。 なので場合によっては文字化けしてPATH_INFOが使い物にならなくなります。 ちなみにこれはmod_rewriteを使ったURI書き換えでも起こります。

僕が遭遇したのはmod_rewriteで化けたほうが先で、PATH_INFOがおかしくなるのに気づいたのはWiki書き始めた時です。

まあ、遭遇した順番はどうでもいいですが、このままだとPATH_INFOが使えないので解決策を考えてみます。

環境変数 REQUEST_URI , SCRIPT_NAME を使う

REQUEST_URISCRIPT_NAMEを使えば意外と簡単にできます。 というわけで例。コードはPerlです。

my ($request_uri,$script_name) =
    ( $ENV{'REQUEST_URI'} , $ENV{'SCRIPT_NAME'});
my $path_info = $request_uri;
$path_info =~ s!^$script_name!!;
$path_info =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;

こんな感じです。これでばっちり……と言いたい所ですが問題があったりします。 このコードそのまま使うとmod_rewriteなんかでURI書き換えた時動かねぇという事態に陥ります。

簡単なURIの書き換え、例えばCGIファイル名を隠すというリライトなら

my ($request_uri,$script_name,$script_filename) =
    ( $ENV{'REQUEST_URI'} , $ENV{'SCRIPT_NAME'} , $ENV{'SCRIPT_FILENAME'});
my @tmp_filename = split m{/},$script_filename;
my $filename = pop @tmp_filename;
my $path_info = $request_uri;
if ($path_info !~ m/$filename$/){
    $script_name =~ s!/$filename$!!;
}
$path_info =~ s!^$script_name!!;
$path_info =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;

こんな感じのコードで対応できると思います。ただこれ以外のリライトになると、 どう対応していいのか分かりません。解決策ねぇって言う状態です。 Win32でApache使うのやめるぐらいしか選択肢がないように思います。

まとめ

この問題を回避する選択肢としては、

  1. PATH_INFOに日本語突っ込むのをやめる
  2. WindowsでApache使うのやめる
  3. Windowsを窓から投げ捨てろ

ぐらいでしょうか。1か2が妥当でしょう。3はネタなので気にしない。 いや本当に投げ捨ててもいいと思いますが。問題ないのならば。

2に関してはlighttpdという最近はやり?のやつがあるので、 そっちを試してみるのもいいかもしれません。試したこと無いので問題起こるかどうか知りませんが。

おまけ

自作Wikiの公開のためのサイトですが全然できてません。 記法作るのに時間がかかってるよ。今月中には公開したい。

About Me

name
Naoki Okamura
nick
nyarla
contact
nyarla[ at ]thotep.net
Category
Log
Banners
Powered by
nim