便利ツール

【手順】OpenGrokをUbuntu18.04.2に設置する方法

2020年10月16日

OpenGrok とは?

意味を調べる

OpenGrokとは、ブラウザを使用してソースコード閲覧・検索できるようにするWebサーバー側のツールです。

emacs【テキストエディタ】と grep【検索ツール】を組み合わせて解析してますよね。
OpenGrokを導入すると、関数定義やその呼出し箇所をブラウザ上で簡単に検索できるようになります。

SANACHAN
SANACHAN
様々なプログラミング言語に対応しており、非常に使い勝手が良いです。

 

必要なパッケージのインストール

インストール

必要なパッケージ

  • Java JDK 1.8
  • GlassFish または Tomcat8.x 以降
  • Universal ctags (下記注意!)

注意

Universal ctags は、apt でインストールする標準の ctags とは異なります。
(標準だと正常に動きません)

Java JDK 1.8 のインストール

 command
$ sudo apt install default-jdk

 

Tomcat のインストール

universe リポジトリを追加してインストールします。

 command
$ sudo vi /etc/apt/sources.list
$ cat /etc/apt/sources.list
deb http://jp.archive.ubuntu.com/ubuntu bionic main
deb http://jp.archive.ubuntu.com/ubuntu bionic-security main
deb http://jp.archive.ubuntu.com/ubuntu bionic-updates main
deb http://jp.archive.ubuntu.com/ubuntu bionic universe
deb http://jp.archive.ubuntu.com/ubuntu bionic-security universe
deb http://jp.archive.ubuntu.com/ubuntu bionic-updates universe
$ sudo apt update
$ sudo apt install tomcat8 tomcat8-admin
$ sudo service tomcat8 start

動作確認

ブラウザで http://localhost:8080/ を表示して動作を確認する。
Tomcat のページが表示されれば成功です。

 

Universal Ctags のインストール

apt にリポジトリを追加して実行します。

 command
$ sudo add-apt-repository ppa:hnakamur/universal-ctags
$ sudo apt install universal-ctags
$ sudo update-alternatives --config ctags

 

その他、小物のインストール

 command
$ sudo apt install ant jflex

 

OpenGrok のインストール

ダウンロード

簡単な流れ

  • Github からダウンロードし、/usr/local に展開
  • OpenGrokの最新版は、ココを確認
  • WebApp から参照される Config ファイルの保存先とする /etc/opengrokを作成
  • 検索対象のソースコードを配置する /var/opengrok/src を作成
  • インデックスデータの格納先となる /var/opengrok/dataを作成
 command
 
$ wget https://github.com/oracle/opengrok/releases/download/1.2.7/opengrok-1.2.7.tar.gz
$ tar xf opengrok-1.2.7.tar.gz
$ cd opengrok-1.2.7/lib
$ ln -snf /usr/share/java/jflex.jar jflex.jar
$ cd ../..
$ sudo cp -r opengrok-1.2.7 /usr/local/opengrok
$ sudo mkdir -p /etc/opengrok /var/opengrok/{src,data}

 

OpenGrok に同梱の Tool をインストール

Python pip のインストール

OpenGrok 同梱の Tool をインストールするために Python の pip をインストールします。

 command
$ sudo apt install python3-pip

 

OpenGrok Tool のインストール

 command
$ sudo python3 -m pip install /usr/local/opengrok/tools/opengrok-tools.tar.gz

 

デプロイして OpenGrok の動作確認

 command
$ sudo opengrok-deploy -c /etc/opengrok/configuration.xml /usr/local/opengrok/lib/source.war /var/lib/tomcat8/webapps

動作確認

http://localhost:8080/source にアクセスし、下記のエラー画面が表示されることを確認する。

OpenGrok Error

OpenGrok エラー画面

 

ソースコードの登録

プログラミング

簡単な流れ

  • インストール時に作成した /var/opengrok/src 下にソースコードを登録
  • /var/opengrok/src 直下のディレクトリ名がプロジェクト名
  • /var/opengrok/data 下に解析した結果が格納される
  • indexを付ける
 command
 
$ opengrok-indexer -J=-Djava.util.logging.config.file=/usr/local/opengrok/doc/logging.properties
-J=-Xmx2048m
-a /usr/local/opengrok/lib/opengrok.jar --
-c /usr/bin/ctags
-s /var/opengrok/src -d /var/opengrok/data -H -P -S -G
-W /etc/opengrok/configuration.xml
-U http://localhost:8080/source

 

トラブルシューティング

トラブルシューティング

「Failed to get xref file」というエラー

もし、xref の参照で「Failed to get xref file」というエラーが出た場合、index を付ける時に付与した「-H -S -G」を省くと上手くいく場合があります。

SANACHAN
SANACHAN
このオプションは、ソースコードの改変履歴を git/svn リポジトリから取得して追いかけるもので、付けなくても特に問題はありません。

 

JavaVMでHeap Spaceに関するエラー

JavaVMでHeap Spaceに関するエラーが出た場合は、「-J=-Xmx2048m」のオプション(サイズは自身の環境に合わせる)をログプロパティファイルの後ろに付けると上手くいく場合があります。

SANACHAN
SANACHAN
OpenGrokを設置するマシンのメモリが少ない場合、試す価値あり!

 

一般公開されている OpenGrok 設置例

 

参考

参考

 

こちらの記事もよく読まれています

  • この記事を書いた人
  • 最新記事
SANACHAN

SANACHAN

「生涯一エンジニア」を掲げ、大手グローバル企業でSE/PGとして8年勤め、キャリアアップ転職した現役のエンジニアです。世にあるメジャーな全プログラム言語(コボル除く)を自由に扱えます。一児の父。自分のため、家族のため、日々勉強してます。システムエンジニア、プログラミングに関する情報を蓄積している雑記帳です。

-便利ツール
-,