高速ソースコード検索エンジン OpenGrok

何気に OpenGrokの導入は3回ぐらい挫折しています。
理由はただ一つ perlな人にとって、java/Servlet? 環境の構築は何かでツマヅクと何をどうしたらいいのか大変で・・・挫けてしまう。
さらに、google検索でひっかかるページは、基本的に java な人のページなので、すごい省略しててどうにもならんのです。

OpenGrokプロジェクト(http://hub.opensolaris.org/bin/view/Project+opengrok/

今回はやっと成功したので次回用のメモも兼ねて書きます。
(http://src.opensolaris.org/source/xref/opengrok/trunk/doc/EXAMPLE.txt を参考にしています)

したことは基本的に以下の4つ

  1. 必要なパッケージのインストール
  2. OpenGrokを使って、検索用のindexとconfigファイルを作る
  3. OpenGrok付属の source.war を rebuild する(上のconfigのパスを記述するだけ)
  4. Tomcat の webapps ディレクトリに source.war を入れてブラウザアクセスする

1. 必要パッケージをインストールする


$ pfexec pkg install SUNWj6rt # JDK 6.0 Runtime(1.6.0_13)
$ pfexec pkg install SUNWtcat # Tomcat 6.0.18
$ pfexec pkg install exuberant-ctags # Exuberant Ctags
ちなみに、Exuberant Ctags は SunStudio を入れているならそのパッケージ内にも入っているので、そっちを使ってもいいと思います。

2. /opengrok/data にindex情報、/opengrok/configuration.xml を作ります。
ディレクトリは以下で作ります。


/opengrok

-- bin
-- web
`-- source # source.war のrebuild用
-- data

`-- source
|-- onnv-gate # ソースコード; hg clone http://bitbucket.org/mirror/onnv-gate/ とかで
`-- perl-5.10.1 # ソースコード; wget http://www.cpan.org/src/perl-5.10.1.tar.gz から

検索時、source以下のディレクトリ名 = "Project名" になります。
今回は onnv と perl-5.10.1 をProjectとして登録します。


$ mkdir /opengrok
$ mkdir /opengrok/bin
$ mkdir /opengrok/data
$ mkdir /opengrok/source
$ mkdir /opengrok/web
$ mkdir /opengrok/web/source
(ソース以下はプロジェクトとして用意)
$ ls /opengrok/source/
onnv-gate/ perl-5.10.1/
$ cd /tmp
$ wget http://hub.opensolaris.org/bin/download/Project+opengrok/files/opengrok%2D0.8.1.tar.gz
$ gzip -cd opengrok-0.8.1.tar.gz | tar xf -
$ cd opengrok-0.8.1
$ cp -r opengrok.jar lib /opengrok/bin
$ java -jar /opengrok/bin/opengrok.jar -W /opengrok/configuration.xml \
-c /usr/bin/exctags -P -S -v -s /opengrok/source \
-d /opengrok/data

Scanning for repositories...
Done searching for repositories (1s)
Writing configuration to /opengrok/configuration.xml
Done...
...
Adding: /onnv-gate/usr/src/xmod/xmod_files (PlainAnalyzer)
Apr 6, 2010 9:39:07 PM org.opensolaris.opengrok.index.IndexDatabase optimize
INFO: Optimizing the index ...
Apr 6, 2010 9:39:28 PM org.opensolaris.opengrok.index.IndexDatabase optimize
INFO: done
Apr 6, 2010 9:39:34 PM org.opensolaris.opengrok.index.IndexDatabase createSpellingSuggestions
INFO: Generating spelling suggestion index ...
Apr 6, 2010 9:40:13 PM org.opensolaris.opengrok.index.IndexDatabase createSpellingSuggestions
INFO: done
$

3. source.war を rebuild します


$ cd /opengrok/web/source
$ unzip /tmp/opengrok-0.8.1/source.war
$ vi WEB-INF/web.xml
...

CONFIGURATION
/opengrok/configuration.xml
...
$ cd /opengrok/web/source
$ zip -r /opengrok/web/source.war .

4. tomcat で検索画面を表示する


$ pfexec svcadm enable tomcat6
$ cd /var/tomcat6
$ pfexec mv webapps webapps_org
$ pfexec mkdir webapps
$ pfexec chown webservd:webservd
$ pfexec mv /opengrok/web/source.war webapps/

後は、http://サーバのアドレス:8080/source/ にアクセスして完了。