Happy My Life

日常とか技術とか

(2019年版)opengrok環境を構築してみた

なんだかんだと毎年OpenGrokをインストールしてるのだが、今年も、その時期がやってきた。

github.com

ということで、最新版のOpenGrok 1.2.8をUbuntu 18.04にインストールしていた。1.2.8は過去のバージョンと比較すると、セットアップの流れがいくつか異なるので今後の自分のためにメモしておく(公式ドキュメント以外はちゃんとした情報が見つからなかった...)。

構築環境

  • Ubuntu 18.04
  • Tomcat 8

1.0系と異なる点

構築にあたってOpenGrok1.0系から1.2系になっての変更点は以下の通り。

  • JDK 8必須
  • universal-ctagインストール
  • OpenGrokパッケージ内部のbinフォルダ廃止

これらの詳細についてはセットアップ方法の流れの中で随時解説していく。

構築の流れ

詳細はOpenGrokの導入公式ドキュメントの通りに行えばインストールできるのだが、自分がハマった事などもあるので、改めて解説していく。

必要なソフトをインストール

OpenJDK8とかTomcat 8など。

$ sudo apt-get install openjdk-8-jdk tomcat8

Universal-ctagsをインストール

公式ドキュメントにも書かれているとおり、解析用ソフトがExuberant ctagsからUniversal ctagsに変更となった。このUniversal ctags、Ubuntu 18.04のパッケージが見つからなかったので、ソースコードからインストール。

github.com

インストール方法は公式ドキュメントここを参考に。

$ sudo apt-get install pkg-config autoconf
$ git clone https://github.com/universal-ctags/ctags.git
$ cd ctags
$ ./autogen.sh 
$ ./configure
$ make
$ sudo make install

make installすると、/usr/local/binディレクトリに実行ファイルが格納される。

OpenGrok向けディレクトリを作成する

OpenGrokで検索する対象のソースコードの配置箇所やワーキングディレクトリを作成する。ここではパーミッションは緩く設定しておいた。世間に公開する訳でもないので。

検索対象とするソースコードは、あらかじめ/var/opengrok/srcディレクトリ配下に配置しておくこと。

$ mkdir -p /var/opengrok/{data,src}
$ chmod 777 -R /var/opengrok/

OpenGrokをデプロイ

opengrok-1.2.8.tar.gzをダウンロードした後に展開した後に、.warファイルをデプロイする。UbuntuパッケージでインストールしたTomcat 8のデプロイ先はデフォルトで/var/lib/tomcat8/webappsディレクトリなので、そこへsource.warファイルをコピーする。以下の手順ではホームディレクトリ直下にopengrok-1.2.8.tar.gzファイルがすでにダウンロード済みであるモノとして進める。

$ cd
$ tar xvfz opengrok-1.2.8.tar.gz
$ cp opengrok-1.2.8/lib/source.war /var/lib/tomcat8/webapps/

.warファイルはTomcat 8を再起動すると展開される。ので、再起動をお忘れ無く。

$ sudo /etc/init.d/tomcat8 restart

検索用インデックスを生成する

最後にOpenGrokの検索に必要な索引を作成する。これ、OpenGrok1.0系の頃ははOpenGrokのパッケージに含まれるbin/opengrokファイルを利用して作成していた。が、1.2系からはbinフォルダそのものが廃止された。当然bin/opengrokファイルもなくなった。

1.2.8では、インデックスを作成する場合、jarファイルを直接実行して作成する。インデックスの作成方法は次の通り。オプションでjarファイルの位置や、ctagsのファイルの位置などを渡す必要がある。このあたりは雰囲気で読めるのでは。

$ java -Djava.util.logging.config.file=/var/opengrok/logging.properties \
    -jar $HOME/opengrok/lib/opengrok.jar \
    -c /usr/local/bin/ctags \
    -s /var/opengrok/src -d /var/opengrok/data -H -P -S -G \
    -W /var/opengrok/etc/configuration.xml -U http://localhost:8080/source

インデックスを作成後、http://localhost:8080/source/にアクセスすることでOpenGrokが利用できるようになる。

Tomcatハンドブック 第2版

Tomcatハンドブック 第2版