상세 컨텐츠

본문 제목

소스 검색을 빨리 하는 방법 (source 검색 속도 빠른 툴) OpenGrok 설치

IT : Ubuntu

by 휀스 2014. 11. 28. 00:59

본문



소스 검색을 빨리 하는 방법 (source 검색 속도 빠른 툴) OpenGrok 설치


몇년 전 까지만 해도 안드로이드가 과연 뜰까? 하는 의문을 가진 사람이 많았는데 지금은 OS 의 한 축이 되어 버렸네요. 마이크로 소프트는 뭘 하고 있는지...

이 유명한 안드로이드를 개발하기 위해 소스를 관리해야하는데 기존에 사용하던 tool 로는 소스 검색 속도에 한계가 있었습니다. 빠르다는 툴을 사용해도 text search 를 할 경우 안드로이드 full source 를 검색하는 경우 몇분의 시간은 걸렸었는데 이를 한번에 해결해주는 툴이 있더군요.

바로 OpenGrok 이라는 프로그램입니다.




opengrok 을 설치하기 위해 다운로드는 아래 site 에서 합니다.


https://java.net/projects/opengrok/downloads/


oepngrok 을 사용하기위해 필요한 툴은 web server 와 ctag 입니다. 아래 명령으로 이들을 설치할 수 있습니다.


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


그리고 openJDK 7 이상을 설치해 줍니다.



opengrok 이 java 언어로 구현되어 있기 때문에 jdk 가 필요합니다.

opengrok 소스를 받은 후 압축을 풀고 source 를 받는 등 세팅을 합니다. (테스트 환경은 ubuntu 13.04 입니다.)


먼저 압축을 풀은 폴더를 적당한 위치로 이동시킵니다.


$ mv opengrok ~/opengrok


이제 opengrok실행파일을 편집하여 각 설정을 변경합니다.


$ vi ~/opengrok/bin/OpenGrok

명령으로 아래 두 부분을 자신의 설정에 맞게 수정해 줍니다.


OPENGROK_INSTANCE_BASE="${OPENGROK_INSTANCE_BASE:-/home/ecom/opengrok}"

...

SRC_ROOT="${OPENGROK_INSTANCE_BASE}/src"


그리고 opengrok/lib/source.war 파일 내부의 web.xml 파일을 편집해야 합니다.

이 과정이 싫다면 opengrok 의 폴더를 /var/opengrok/ 으로 옮기면 됩니다.


$ unzip opengrok/lib/source.war -d opengrok/lib/source

$ vi opengrok/lib/source/WEB-INF/web.xml


파일의 앞 부분의 아래 내용을 자신의 설정에 맞게 변경해 줍니다.


<param-value>/var/opengrok/etc/configuration.xml</param-value>


그리고 다시 압축을 합니다.


$ zip -u opengrok/lib/source.war opengrok/lib/source/WEB-INF/web.xml


기본적인 준비는 모두 끝났습니다. 이제 deploy 를 해줍니다.


명령은 아래와 같습니다. (폴더 주의)


ecom@server:~/opengrok/bin$ sudo ./OpenGrok deploy
[sudo] password for ecom: 
Loading the default instance configuration ...
Installing /home/ecom/opengrok/bin/../lib/source.war to /var/lib/tomcat7/webapps ...

Start your application server (Tomcat), if it is not already
running, or wait until it loads the just installed web application.

OpenGrok should be available on <HOST>:<PORT>/source
where HOST and PORT are configured in Tomcat.


그리고 src 폴더에 소스를 넣은 후 index 를 생성합니다.
~/opengrok/src/ 아래 폴더를 만들고 그 안에 소스를 넣어주어야 여러벌의 소스를 관리할 수 있습니다.


만약 system 전체에서 사용하는 JAVA version 이 opengrok 을 돌리기에 맞지 않는 버젼이지만 이를 계속 유지해야 할 경우는 JAVA 를 설치한 후 bin/OpenGrok 의 내용 중 Find_Java_Home() 의 내용을 아래와 같이 수정하면 됩니다.


        Linux:*)

            if [ -f /etc/alternatives/java ]

            then

#               javaHome=`ls -l /etc/alternatives/java | cut -f 2 -d \> `

               javaHome='/usr/lib/jvm/jdk1.8.0_11/bin/java'

               javaHome=`dirname $javaHome`

               javaHome=`dirname $javaHome`

            fi

            ;;


Java version 을 잘 맞추었다면 정상적으로 index 가 생성됩니다. android full source 의 경우 1시간 이상 소요되는 것 같았습니다.




자바 버젼이 맞지 않는다면 아래와 같은 에러가 발생합니다.


ecom@ezserver:~/opengrok$ ./bin/OpenGrok index

Loading the default instance configuration ...

  Creating default /home/ecom/opengrok/logging.properties ... 

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/opensolaris/opengrok/index/Indexer : Unsupported major.minor version 51.0

        at java.lang.ClassLoader.defineClass1(Native Method)

        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)

        at java.lang.ClassLoader.defineClass(ClassLoader.java:615)

        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)

        at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)

        at java.net.URLClassLoader.access$000(URLClassLoader.java:58)

        at java.net.URLClassLoader$1.run(URLClassLoader.java:197)

        at java.security.AccessController.doPrivileged(Native Method)

        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)

        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)

        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)

        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

Could not find the main class: org.opensolaris.opengrok.index.Indexer. Program will exit.


이럴 땐 Java version 을 update 해주거나 새로운 버젼이 있다면 system 변수에서 $JAVA_HOME 을 바꾸어주면 됩니다.


모든 작업이 완료되면 http://youripaddress:8080/src/ 로 접속하면 opengrok 을 사용할 수 있습니다.




이상 소스 검색을 빨리 하는 방법 (source 검색 속도 빠른 툴) OpenGrok 설치 방법에 대한 글 이였습니다.





관련글 더보기