Ubuntu 17.10でOpenGrok1.1-rc70
Read-Onlyで使用しているリポジトリのgit logが重くて泣きそうだったのでOpenGrokを導入しました。 前に使用したときよりだいぶバージョンが上がっていたので手順をメモしておきます。
導入
OpenGrokはTomcat等のWebアプリサーバ上で動作し、ブラウザからソースコードを閲覧するためのUIを提供してくれます。 関数や変数の参照箇所・定義箇所を高速に検索することができるほか、Git等で構成管理している場合には履歴をたどることができます。 ライセンスはCDDLです。
- {OpenGrok by OpenGrok
- oracle/opengrok: OpenGrok is a fast and usable source code search and cross reference engine, written in Java
Androidのような大きなリポジトリでも高速で検索することができて便利です。
環境
- OS: Ubuntu 17.10 (Artful Aardvark)
- OpenGrok: 1.1-rc70
- Tomcat: 8.5.21.0
- Java: Oracle JDK 11.0.1
- universal-ctags: 5.8
- Python: 3.6.3
インストール
手順はHow to setup OpenGrok · oracle/opengrok Wiki に従います。
ctags
universal-ctagsをビルドしてインストールします。
$ git clone https://github.com/universal-ctags/ctags.git $ sudo apt install make autoconf pkg-config $ cd ctags $ ./configure $ make $ sudo make install $ cd
Java
Oracle Javaをdebパッケージでインストールします。
- Java SE Development Kit 11- - Downloads \ →jdk-11.0.1_linux-x64_bin.deb
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-11*/bin/java 1081 $ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk-11*/bin/javac 1081 $ sudo update-alternatives --install /usr/bin/javadoc javadoc /usr/lib/jvm/jdk-11*/bin/javadoc 1081 $ sudo update-alternatives --install /usr/bin/javap javap /usr/lib/jvm/jdk-11*/bin/javap 1081 $ sudo update-alternatives --config java $ sudo update-alternatives --config javac $ sudo update-alternatives --config javadoc $ sudo update-alternatives --config javap
Tomcat
Tomcatをaptでインストールします。
$ sudo apt install tomcat8 $ sudo service start tomcat8
ブラウザで http://localhost:8080 を表示して動作を確認します。
pip
OpenGrokのCLIがシェルスクリプトからPythonに移行しているようなので、pipをインストールしておきます。(Jarのラッパーなので手順的にはOptional扱いのようです)
(see: Installation — pip 18.1 documentation)
$ wget https://bootstrap.pypa.io/get-pip.py $ sudo python3 get-pip.py
OpenGrok
OpenGrokのバイナリをダウンロードしてPythonスクリプトをインストールします。
$ wget https://github.com/oracle/opengrok/releases/download/1.1-rc70/opengrok-1.1-rc70.tar.gz $ tar xzf opengrok-1.1-rc70.tar.gz $ cd $ python3 -m pip install --users tools/opengrok-tools.tar.gz
リポジトリの格納場所、インデックスデータの格納場所、設定ファイルの格納場所を決めます。
/var/local/opengrok
配下に格納するようにしました。
/var/local/opengrok ├── data: インデックスデータの格納場所(data root) ├── etc: 設定ファイルの格納場所 │ └── configuration.xml: OpenGrokの設定ファイル ├── lib: OpenGrokのバイナリに含まれるlibディレクトリ │ ├── lib │ ├── opengrok.jar │ └── source.war └── repos: リポジトリの格納場所(source root)
$ sudo opengrok-deploy -c /var/local/opengrok/etc/configuration.xml /var/local/opengrok/lib/source.war /var/lib/tomcat8/webapps/source.war
リポジトリのインデックスを作成します。Pythonのスクリプトも用意されています(opengrok-indexer)が、しっくりこなかったのでjarを直接使用しました。 最低限、data root(-d)、source root(-s)は指定する必要があるようです。 configuration.xmlはここで作成するようにします(--writeConfig)。
$ sudo java -jar /var/local/opengrok/lib/opengrok.jar -d /var/local/opengrok/data -s /var/local/opengrok/repos --writeConfig /var/local/opengrok/etc/configuration.xml
いろいろと試して以下のような形にしました。
$ sudo java -jar /var/local/opengrok/lib/opengrok.jar -d /var/local/opengrok/data -s /var/local/opengrok/repos -t 1 -P -H -r on -T 3 -G -S --progress --renamedHistory on --writeConfig /var/local/opengrok/etc/configuration.xml
設定内容は下記の通りです。
- タブ幅(-t): 1
- インデックス作成時のスレッド数(-T): 3
- プロジェクト単位での表示あり(-P)
- 履歴表示あり(-H、-r、-G、-S、--renamedHistory on)
- インデックス中のインデックス中の進捗表示あり(--progress)
その他、設定できる内容は下記で確認できます。
$ sudo java -jar /var/local/opengrok/lib/opengrok.jar -h --detailed
動作確認
$ sudo service restart tomcat8
ブラウザで http://localhost:8080/source へアクセスして動作を確認します。