본문 바로가기

IT

[Ubuntu/Linux] 플랫폼 소스 검색하기, OpenGrok

(지금도 젊지만) 젊었을 때는 비교적 뇌가 말랑말랑하여 know-where가 어느 정도 (제한된 범위에서) 가능하였죠.

아는 범위에서만 움직이면 되었고,

아는 것만 찾아내면 되었습니다.


하지만, 한살한살 나이를 먹어 뇌의 기능에 극명한 한계를 체감하고,

미지의 영역에서도 의미있는 결과를 도출해내기 위한 부질없는 시도를 해야할 필요가 늘어나서,

더 이상 기억력에 의존하는 시도를 포기하게 되네요.


소스가 놓여진 디렉토리에 가서 으레 'grep'을 하거나

ctags로 모든 소스의 태그를 만들어놓고 vim과 함께 문자열 탐색을 했었죠.


그리고 작년,

한 연구원 분이 웹브라우져를 통해 소스에서 특정 문자열을 검색하는 신공을 보여주셨죠.

grep으로 검색하는 것보다 월등한 속도로 결과물을 뽑아내어 놀란 기억이 납니다.

당시에 경이적으로 바라보았던 그 툴이 바로 OpenGrok입니다.


OpenGrok는 Sun Microsystems에서 밀고 있는 오픈소스입니다.


2014년 4월 29일에 stable 버전이 릴리스되었으므로,

작년부터 사용한 연구원분은 나름 최신 트랜드를 따르는 센스있는 분이네요.


OpenGrok의 기능을 보면 입이 쩍 벌어집니다.

단순 문자열만 검색해주는게 아닙니다.

Monotone, SCCS, RCS, CVS, Subversion, Mercurial, Git, Clearcase, Perforce, Bazaar

위와 같은 버전컨트롤 프로그램과 연동하여 history를 검색할 수 있도록 도와줍니다.

이것이 혁신! :)


OpenGrok을 사용하기 위해 우선 사이트에 접속해보세요.


OpenGrok를 설치하기 전에 설치해야하는 패키지들이 있습니다.

Java는 여기를 참고하여 설치해주세요. :)

Tizen SDK 설치를 하며, Java 설치에 대해 설명해둔 포스트가 있습니다.

Tomcat은 7.x 버전으로 받고, ctags도 함께 받습니다.

$ sudo apt-get install tomcat7 tomcat7-admin exuberant-ctags

OpenGrok 바이너리를 다운로드 받습니다.

$ wget http://java.net/projects/opengrok/downloads/download/opengrok-0.12.1.tar.gz


그리고 압축을 풉니다.

$ tar xvzf opengrok-0.12.1.tar.gz

압축을 풀어보면 라이브러리와 실행파일이 나옵니다.

opengrok-0.12.1 디렉토리를 /var/opengrok에 넣어둡니다.

$ sudo mv opengrok-0.12.1 /var/opengrok


이제 OpenGrok의 설정파일을 수정하여,

소스의 위치를 지정해둡니다.

$ sudo vi /var/opengrok/bin/OpenGrok

위의 파일을 열어서,

SRC_ROOT의 값을 원하는 경로로 수정해놓습니다.

    # REQUIRED: Source Code/Repository Root
    #           (your source code or the root of all repositories)
    SRC_ROOT= "<TOP_DIRECTORY_FOR_YOUR_SOURCES>"


OpenGrok을 실행하기 전에 help로 사용할 수 있는 옵션을 체크해둡니다.


$ /var/opengrok/bin/OpenGrok --help
Loading the default instance configuration ...

Usage: OpenGrok <deploy|derby|update|updateQuietly|usage|help>
       OpenGrok index [<directory>]
       OpenGrok clearHistory [<repository_name>]

  Optional environment variables:
    OPENGROK_CONFIGURATION - location of your configuration
      e.g. $ OPENGROK_CONFIGURATION=/var/opengrok/myog.conf /usr/local/lib/opengrok-0.12.1/bin/OpenGrok ...

    See the code for more information on configuration options / variables


OpenGrok을 사용하기 위해 deploy 합니다.

OpenGrok 스크립트가 war파일을 톰캣에서 관리하는 디렉토리로 옮겨줍니다.

$ sudo /var/opengrok/bin/OpenGrok deploy


이제 indexing만 하면 웹브라우져에서 OpenGrok으로 소스검색을 할 수 있습니다.

$ /var/opengrok/bin/OpenGrok index

혹은

$ /var/opengrok/bin/OpenGrok index <absolute_path_to_your_SRC_ROOT>

인덱싱은 파일 갯수가 많아질수록 오래 걸립니다.

컴퓨터 성능에 따라 생각보다 오래 걸릴 수 있으므로 여유를 가지고 시도하세요.


인덱싱을 끝마쳤다면,

이제 웹브라우져로 접속하세요.

http://localhost:8080/source/

왼편에 검색할 대상을 입력한 후,

오른편에 In Project(s)에서 검색할 대상을 선택합니다.

Search를 누르면 바로 검색이 됩니다.

설치하기도 검색하기도 간단하죠~


이제부터 24시간이 걸려 받아 놓은 타이젠 오픈소스에 인덱스를 걸어두고 자야겠네요. :)

(타이젠 오픈소스 내려받기편 참조)


끝_


* reference

https://github.com/OpenGrok/OpenGrok/wiki/How-to-install-OpenGrok