Hatena::ブログ(Diary)

Lazy Technology

2008-01-24

[] Subversionでhttp(s)のURLスキームを認識しない問題を解決する。

RetrospectivaのtrunkをGoogle Codeからcoしようとしたらエラーが出る。

$ svn co -q http://retrospectiva.googlecode.com/svn/trunk/ retrospectiva
svn: 'http://retrospectiva.googlecode.com/svn/trunk' 用の URL スキームを認識できません

色々調べてみたものの分からなかったので、エラーメッセージググるとあっさり原因が見つかった。svnコマンドでhttp(s)系のリポジトリにアクセスする場合には、neonと言うライブラリが必要になるらしい。subversionのINSTALLファイルには以下のように書かれている。

4.  Neon library 0.25.x or 0.26.x (http://www.webdav.org/neon/)

The Neon library allows a Subversion client to interact with remote
repositories over the Internet via a WebDAV based protocol.  If you
want to use Subversion to connect to a server over ra_dav (via a
http:// or https:// url), you will require Neon.  (See also section
I.11 for information about "serf", an experimental alternative to
Neon for accessing servers over WebDAV.)

まず既存環境にNeonがあるか確認する。

$ rpm -qa | grep -i neon
neon-0.24.7-4

あった。でも要件を満たしていないようだ。と言うわけでNeonを含めてSubversionを再コンパイルする。NeonNeon公式からダウンロードするか、Subversionの依存ファイルを一括してパッケージしたtarファイルに含まれている。今回は後者を利用する。インストール方法も同様にINSTALLファイルに書かれているのでこれを参考に。

The source code is included with the Subversion dependencies package,
and it can also be obtained from:

  http://www.webdav.org/neon/neon-0.25.5.tar.gz
    -or-
  http://www.webdav.org/neon/neon-0.26.1.tar.gz

Building Neon inside the subversion build:

The Neon library source code can be placed in "./neon" if you
want Subversion to build it as part of the Subversion build process.

Unpack the archive using tar/gunzip.  Rename the resulting
directory from ./neon-0.XX.Y to just "./neon", inside the top
level of your Subversion source tree.  (This is what unpacking the
Subversion dependencies package does, too.)

手順は以下の通り。

$ wget http://subversion.tigris.org/downloads/subversion-1.4.6.tar.gz
$ tar zxf subversion-1.4.6.tar.gz
$ wget http://subversion.tigris.org/downloads/subversion-deps-1.4.6.tar.gz
$ tar zxf subversion-deps-1.4.6.tar.gz
$ cd subversion-1.4.6
$ ./configure
$ make
$ sudo make install

特に問題なく終了。configure時には以下の出力を確認した。

#
#configure: Configured to build neon 0.25.5:
#
#  Install prefix:  /usr/local
#  Compiler:        gcc
#  XML Parser:      expat
#  SSL library:     SSL support is not enabled
#  zlib support:    zlib support enabled, using -lz
#  Build libraries: Shared=no, Static=yes

再度チェックアウトし、無事チェックアウト出来る事を確認。


2008/1/29 追記

上記の手順でコンパイルした後、svkが動作しなくなったり、rubySubversionバインディングが動かなくなったりした。バインディングはバージョンが古いだけだったのだけれど、svkは原因がよく分からなかった。

以前とconfigureのオプションが違っていたりする事はあったのだが、Subvresionの依存パッケージにはNeon以外にapr,apr-util,zlibが入っていたので、それが問題になったのかもしれない。復旧した際にはNeon単体のみをソースツリーに含めるようにした。


2008/1/29 追記 その2

configureに--with-sslオプションを追加しないとhttpsでチェックアウトが出来なかったので、再度コンパイルし直し。

$ ./configure \
  PERL=/usr/local/bin/perl \
  PYTHON=/usr/local/bin/python \
  --with-swig=/usr/local/bin/swig \
  --with-ssl
$ make
$ sudo make install

コンパイル前。

$ svn --version
(snip)
以下のリポジトリアクセス (RA) モジュールが利用できます:

* ra_dav : WebDAV (DeltaV) プロトコルを使ってリポジトリにアクセスするモジュール。
  - 'http' スキームを操作します
* ra_svn : svn ネットワークプロトコルを使ってリポジトリにアクセスするモジュール。
  - 'svn' スキームを操作します
* ra_local : ローカルディスク上のリポジトリにアクセスするモジュール。
  - 'file' スキームを操作します

コンパイル後。

$ svn --version
(snip)
以下のリポジトリアクセス (RA) モジュールが利用できます:

* ra_dav : WebDAV (DeltaV) プロトコルを使ってリポジトリにアクセスするモジュール。
  - 'http' スキームを操作します
  - 'https' スキームを操作します
* ra_svn : svn ネットワークプロトコルを使ってリポジトリにアクセスするモジュール。
  - 'svn' スキームを操作します
* ra_local : ローカルディスク上のリポジトリにアクセスするモジュール。
  - 'file' スキームを操作します

2007-09-10

[]プレースホルダを遅延評価する

最近便利に使っているのがプレースホルダ(%s)を遅延評価させること。

要は動的な定数(?)を定義する事が出来る。

ソースを見た方が早いと思うのでさくっと。

SEARCH_URL = 'http://www.google.co.jp/search?q=%s'
%w(ruby perl php).each{|word|
  puts SEARCH_URL % word
}

Railsのどこかで使われていた手法だったんだけど、どこか忘れた…。

2007-05-03

[][] ERB記法メモ

改行やら空白を良い感じに制御する記法が合ったと思ったんだけど、Google先生に聞いても(%とか記号が聞けないのが痛い)パッとしなかったので自分用に覚書。

<% %>Rubyのコードを実行。
<%= %>Rubyのコードを実行し、その結果を出力する。
<%# %>タグ以下はすべてコメント
<% -%>改行を抑止する。
<%- %>行頭の空白を削除する。
<%- -%>改行抑止 & 行頭の空白削除

ERBにこんな感じに書いてみる。

	   <%=   "1hoge" %>
	   <%    "test" %>
	   <%=   "2hoge" %>
	   <%-   "test" %>
	   <%=   "3hoge" %>
	   <%#   "test" %>
	   <%=   "4hoge" %>
	   <%    "test" -%>
	   <%=   "5hoge" %>
	   <%-   "test" -%>
	   <%=   "6hoge" %>

出力結果。

	   1hoge
	   
	   2hoge

	   3hoge
	   
	   4hoge
	   	   5hoge
	   6hoge

<% -%>の記法は改行を削除してくれるものの、行頭に空白が合った場合は残ってしまうので基本的にはセットで<%- -%>と使うのが良いような気がする。

参考URL

no title

RubyのERBマニュアル、分かり辛いなぁ…。