{"id":563,"date":"2013-03-09T18:25:02","date_gmt":"2013-03-09T09:25:02","guid":{"rendered":"http:\/\/43.203.250.216\/?p=563"},"modified":"2025-10-01T16:25:06","modified_gmt":"2025-10-01T07:25:06","slug":"ubuntu-12-04%ec%97%90-opengrok-%ec%84%a4%ec%b9%98","status":"publish","type":"post","link":"https:\/\/litcoder.com\/?p=563","title":{"rendered":"OpenGrok \uc124\uce58"},"content":{"rendered":"<blockquote><p>OpenGrok\uc744 \uc124\uce58\ud558\ub294 \uac00\uc7a5 \uac04\ub2e8\ud55c \ubc29\ubc95\uc740 tomcat5~6 \uc0ac\uc774\uc758 \ubc84\uc804\uc744 \uc0ac\uc6a9\ud558\uace0, \uc124\uce58\ud558\ub294 \uc704\uce58\ub97c \/var\/opengrok \uc73c\ub85c \uc815\ud558\ub294 \uac83\uc774\ub2e4. \uc774\ub807\uac8c \ud558\uba74 \ubcc4\ub3c4\uc758 \uc218\uc815\uc5c6\uc774 \uac70\uc758 \uadf8\ub300\ub85c OpenGrok\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4. (<a title=\"OpenGrok \uc124\uce58 \ube68\ub9ac \ud558\uae30\" href=\"https:\/\/litcoder.com\/?p=621\">OpenGrok \uc124\uce58 \ube68\ub9ac \ud558\uae30<\/a> \ucc38\uc870)<\/p>\n<p>\uc774 posting\uc5d0\uc11c\ub294 Source\ub97c &lt;YOUR_SOURCE_REPOSITORY_TOP&gt; \uacbd\ub85c \uc544\ub798\uc5d0 \uac01 project\ubcc4\ub85c \ub530\ub85c \ubcf4\uad00\ud558\uace0, &lt;YOUR_HOME_DIRECTORY&gt;\/opengrok \uacbd\ub85c \uc544\ub798\uc5d0 OpenGrok\uacfc \uad00\ub828\ub41c file\ub4e4\uc744 \ubcf4\uad00\ud558\ub294 \uc0c1\ud669\uc744 \uac00\uc815\ud558\uace0 \uc124\uba85\ud55c\ub2e4.<\/p><\/blockquote>\n<h2>\uc124\uce58 \ud658\uacbd<\/h2>\n<p>Ubuntu 12.04\uc5d0 tomcat7\uc744 \uc124\uce58\ud558\uace0, OpenGrok\uc5d0 \uad00\ub828\ub41c file\ub4e4\uc740 &lt;YOUR_HOME_DIRECTORY&gt;\/opengrok \uc544\ub798\uc5d0 \ubcf4\uad00\ud558\uace0, source code\ub4e4\uc740 \ubcc4\ub3c4\ub85c&lt;YOUR_SOURCE_REPOSITORY_TOP&gt; \uc544\ub798\uc5d0 project\ubcc4\ub85c \uad6c\uc131\ub418\uc5b4 \uc788\ub294 \uc0c1\ud669\uc744 \uac00\uc815\ud55c\ub2e4.<\/p>\n<h2>\ud544\uc694\ud55c package\ub4e4<\/h2>\n<pre class=\"lang:default highlight:0 decode:true\">$ sudo apt-get install tomcat7 tomcat7-admin exuberant-ctags<\/pre>\n<p>\uc124\uce58\uac00 \uc644\ub8cc\ub41c \ud6c4\uc5d0 http:\/\/localhost:8080\uc73c\ub85c \uc811\uadfc\ud558\uba74 tomcat\uc774 \uc81c\ub300\ub85c \ub3d9\uc791\ud558\ub294\uc9c0 \ud655\uc778\ud574 \ubcfc \uc218 \uc788\ub2e4. Tomcat\uc774 \ub3d9\uc791\ud558\ub294 \uac83\uc744 \ud655\uc778\ud55c \ud6c4\uc5d0\ub294 OpenGrok\uc744 download \ubc1b\uc544 \uc555\ucd95\uc744 \ud574\uc81c\ud55c\ub2e4.<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">$ wget http:\/\/hub.opensolaris.org\/bin\/download\/Project+opengrok\/files\/opengrok-0.11.1.tar.gz\n$ tar xvzf opengrok-0.11.1.tar.gz<\/pre>\n<h2>OpenGrok \uc2e4\ud589 \ud658\uacbd \ub9cc\ub4e4\uae30<\/h2>\n<p>OpenGrok\uc774 \ub3d9\uc791\ud560 \ud658\uacbd\uc744 \ub9cc\ub4e0\ub2e4. bin, data, etc, src\uac00 \ud544\uc694\ud55c\ub370 bin\uc740 OpenGrok script\ub97c \ube44\ub86f\ud55c \uc2e4\ud589 file\ub4e4\uc774 \ub4e4\uc5b4\uac08 \uacf3\uc774\uace0, data\ub294 indexing\ub41c \uacb0\uacfc\ubb3c\uc774 \uc800\uc7a5\ub41c\ub2e4. etc\uc5d0\ub294 configuration\uc5d0 \uad00\ub828\ub41c data\uac00 \ud3ec\ud568\ub418\uace0 src\uc5d0\ub294 OpenGrok\uc774 \ubd84\uc11d\ud560 source code\uac00 \uc800\uc7a5\ub418\ub294 \uacf3\uc774\ub2e4. \ud558\uc9c0\ub9cc \uc55e\uc11c \ub9d0\ud55c\uac83 \ucc98\ub7fc source\ub294 \uc774\ubbf8 \ub2e4\ub978 \uc704\uce58\uc5d0 \uc788\ub294 \uac83\uc744 \uac00\uc815\ud558\uace0 \ud658\uacbd\uc744 \uc124\uc815\ud560 \uac83\uc774\ub2e4.<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">$ mkdir -p opengrok\/bin\n$ mkdir -p opengrok\/data\n$ mkdir -p opengrok\/etc<\/pre>\n<p>\uc555\ucd95\uc744 \ud574\uc81c\ud55c \uacf3\uc73c\ub85c \ubd80\ud130 bin directory\ub85c \uc2e4\ud589\uc5d0 \ud544\uc694\ud55c \ud30c\uc77c\ub4e4\uc744 \ubcf5\uc0ac\ud55c\ub2e4.<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">$ cp bin\/OpenGrok opengrok\/bin\n$ cp -r lib opengrok\/<\/pre>\n<h2>Tomcat7 \uacbd\ub85c \ucd94\uac00<\/h2>\n<pre class=\"lang:default highlight:0 decode:true\">FATAL ERROR: Unable to determine Deployment Directory for Tomcat - Aborting<\/pre>\n<p>OpenGrok\uc744 deploy\ud558\uae30 \uc704\ud574 \uba85\ub839\uc744 \uce58\uba74 tomcat directory\ub97c \ucc3e\uc9c0 \ubabb\ud588\ub2e4\ub294 \uc624\ub958\uc640 \ud568\uaed8 \uc2e4\ud589\uc774 \uc911\ub2e8\ub41c\ub2e4. \uc774\uac83\uc740 OpenGrok 0.11.1 version\uc5d0\uc11c tomcat7\uc5d0 \ub300\ud55c \uace0\ub824\uac00 \ub418\uc5b4\uc788\uc9c0 \uc54a\uae30 \ub54c\ubb38\uc778\ub370 bin directory\ub85c \ubcf5\uc0ac\ud55c OpenGrok script\ub97c \ud3b8\uc9d1\uae30\ub85c \uc5f4\uc5b4\uc11c \uc544\ub798\uc640 \uac19\uc774 2\uacf3\uc5d0 tomcat7\uc774 \ud3ec\ud568\ub418\ub3c4\ub85d \ucd94\uac00\ud574 \uc900\ub2e4.<\/p>\n<p>1. FindApplicationServerType()\uc5d0 tomcat7 \ucd94\uac00 (Line 489)<\/p>\n<pre class=\"nums:true start-line:478 lang:sh decode:true\">    # This implementation favours Tomcat, but needs a lot of work,\n    # especially if Glassfish is perferrerd or it is under the control\n    # of SMF (Service Management Facility)\n\n    # Maybe a better implementation would be to call Application\n    # Server specific WAR Directory and see if they exist.\n\n    if [    -d \"\/var\/tomcat6\/webapps\"        \\   \n         -o -d \"\/var\/lib\/tomcat6\/webapps\"    \\   \n         -o -d \"\/var\/lib\/tomcat5\/webapps\"    \\   \n         -o -d \"\/var\/lib\/tomcat5.5\/webapps\"  \\\n         -o -d \"\/var\/lib\/tomcat7\/webapps\"    \\   \n       ]   \n    then\n        echo \"Tomcat\"\n        return\n    fi<\/pre>\n<p><span style=\"font-size: 1rem; line-height: 1.714285714;\">2. DetermineWarDirectoryTomcat()\uc5d0 tomcat7 \ucd94\uac00 (Line 524)<\/span><\/p>\n<pre class=\"nums:true start-line:518 lang:sh decode:true\">    for prefix in               \\   \n        ${OPENGROK_TOMCAT_BASE} \\\n        \/var\/tomcat6            \\   \n        \/var\/lib\/tomcat6        \\   \n        \/var\/lib\/tomcat5        \\   \n        \/var\/lib\/tomcat5.5      \\   \n        \/var\/lib\/tomcat7\n    do<\/pre>\n<h2>OpenGrok script\uc758 \uc2e4\ud589\uacbd\ub85c \ubcc0\uacbd\ud558\uae30<\/h2>\n<p>OpenGrok script\ub294 \/var\/opengrok directory\uc544\ub798\uc5d0 bin, data, ext, src\uac00 \uc788\ub294 \uac83\uc744 \uac00\uc815\ud558\uace0 \uc791\uc131\ub418\uc5b4 \uc788\ub2e4. Source \uacbd\ub85c\ub294 \ubcc4\ub3c4\uc758 directory\uc5d0 \ubcf4\uad00\ud558\uace0 \uc788\ub294 \uac83\uc744 \uadf8\ub300\ub85c \uc0ac\uc6a9\ud558\uace0, bin, data, ext\ub294 home directory\uc5d0 opengrok directory \uc544\ub798\uc5d0 \uc788\ub294 \uac83\uc744 \uc0ac\uc6a9\ud558\ubbc0\ub85c, OpenGrok script\ub97c \uc5f4\uc5b4\uc11c \uad00\ub828 \ubd80\ubd84\uc744 \uc218\uc815\ud574 \uc900\ub2e4.<\/p>\n<p>1. OPENGROK_INSTANCE_BASE<\/p>\n<p>: \uc774 \uac12\uc744 \uae30\uc900\uc73c\ub85c bin, data, ext, src\uc758 \uacbd\ub85c\uac00 \uae30\ubcf8\uac12\uc73c\ub85c \uc124\uc815\ub418\uc5b4 \uc788\uc73c\ubbc0\ub85c, \uc6d0\ud558\ub294 \uacbd\ub85c\ub85c \uc774 \uac12\uc744 \ubc14\uafbc\ub2e4.<\/p>\n<pre class=\"nums:true start-line:124 lang:default decode:true\">    #OPENGROK_INSTANCE_BASE=\"${OPENGROK_INSTANCE_BASE:-\/var\/opengrok}\"\n    OPENGROK_INSTANCE_BASE=\"${OPENGROK_INSTANCE_BASE:-\/&lt;YOUR_HOME_DIRECTORY&gt;\/opengrok}\"<\/pre>\n<p>2. SRC_ROOT<\/p>\n<p>: Source code\ub294 \ub2e4\ub978\uacbd\ub85c\uc5d0 \uc788\ub294 \uac83\uc744 \uc0ac\uc6a9\ud558\ubbc0\ub85c, SRC_ROOT\ub97c \ubcc0\uacbd\ud55c\ub2e4.<\/p>\n<pre class=\"nums:true start-line:146 lang:sh decode:true\">    # REQUIRED: Source Code\/Repository Root\n    #           (your source code or the root of all repositories)\n    #SRC_ROOT=\"${OPENGROK_INSTANCE_BASE}\/src\"\n    SRC_ROOT=\"&lt;YOUR_SOURCE_REPOSITORY_TOP&gt;\"<\/pre>\n<h2>configuration.xml \uc704\uce58 \ubcc0\uacbd<\/h2>\n<p>web.xml\uc5d0\uc11c configuration.xml \uc0dd\uc131\uc704\uce58\ub97c \ubcc0\uacbd\ud574\uc900\ub2e4. \uc774 \ud30c\uc77c\uc740 source.war\uc548\uc5d0 \ub4e4\uc5b4 \uc788\uc73c\ubbc0\ub85c \uc555\ucd95\uc744 \ud574\uc81c\ud55c \ud6c4 \uc218\uc815\ud558\uace0 \uc7ac \uc555\ucd95\ud558\ub294 \ub2e4\uc18c \ubc88\uac70\ub85c\uc6b4 \uc808\ucc28\ub97c \ub530\ub77c\uc57c \ud55c\ub2e4.<\/p>\n<p>1. \uba3c\uc800 source.war file\uc758 \uc555\ucd95\uc744 \ud47c\ub2e4.<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">$ unzip opengrok\/lib\/source.war -d opengrok\/lib\/source<\/pre>\n<p>2. web.xml\uc744 \uc218\uc815\ud55c\ub2e4.<\/p>\n<p>: opengrok\/lib\/source\/WEB-INF\/web.xml file\uc744 \uc5f4\uc5b4\uc11c CONFIGURATION \ubd80\ubd84\uc758 &lt;param-value&gt; \uac12\uc744 \uc6b0\ub9ac\uac00 \uc0ac\uc6a9\ud560 etc \uc704\uce58\ub85c \ubcc0\uacbd\ud574 \uc900\ub2e4. (Line 9)<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">$ vi opengrok\/lib\/source\/WEB-INF\/web.xml<\/pre>\n<pre class=\"nums:true lang:default decode:true\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;!DOCTYPE web-app PUBLIC \"-\/\/Sun Microsystems, Inc.\/\/DTD Web Application 2.3\/\/EN\" \"http:\/\/java.sun.com\/dtd\/web-app_2_3.dtd\"&gt;\n&lt;web-app&gt;\n  &lt;display-name&gt;OpenGrok&lt;\/display-name&gt;\n  &lt;description&gt;A wicked fast source browser&lt;\/description&gt;\n  &lt;context-param&gt;\n    &lt;param-name&gt;CONFIGURATION&lt;\/param-name&gt;\n    &lt;!-- &lt;param-value&gt;\/var\/opengrok\/etc\/configuration.xml&lt;\/param-value&gt; --&gt;\n    &lt;param-value&gt;&lt;YOUR_HOME_DIRECTORY&gt;\/opengrok\/etc\/configuration.xml&lt;\/param-value&gt;\n    &lt;description&gt;Full path to the configuration file where OpenGrok can read it's configuration&lt;\/description&gt;\n  &lt;\/context-param&gt;<\/pre>\n<p>3. \ub2e4\uc2dc zip\uc73c\ub85c \uc555\ucd95\ud55c\ub2e4.<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">$ zip -u opengrok\/lib\/source.war opengrok\/lib\/source\/WEB-INF\/web.xml \n  adding: opengrok\/lib\/source\/WEB-INF\/web.xml (deflated 80%)<\/pre>\n<h2>Deploy with the script<\/h2>\n<p>\uc774\uc81c \ubaa8\ub4e0 \uc900\ube44\uac00 \ub418\uc5c8\uc73c\ub2c8 super user\ub85c deploy\ub97c \uc2e4\ud589\ud55c\ub2e4.<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">$ sudo .\/OpenGrok deploy\n[sudo] password for &lt;YOUR_ACCOUT&gt;: \nLoading the default instance configuration ...\nInstalling \/usr\/opengrok\/bin\/..\/lib\/source.war to \/var\/lib\/tomcat\/webapps ...\n\nStart your application server (Tomcat),  if it is not already\nrunning, or wait until it loads the just installed web  application.\n\nOpenGrok should be available on &lt;HOST&gt;:&lt;PORT&gt;\/source\n  where HOST and PORT are configured in Tomcat.<\/pre>\n<h2>Indexing<\/h2>\n<p>OpenGrok\uc744 \uc0ac\uc6a9\ud558\ub824\uba74 source code\ub4e4\uc5d0 \ub300\ud574\uc11c indexing\ud558\ub294 \uacfc\uc815\uc744 \uac70\uccd0\uc57c \ud558\ub294\ub370, source code\uc758 \ud06c\uae30\uc640 PC\uc131\ub2a5\uc5d0 \ub530\ub77c \ub2e4\ub974\uc9c0\ub9cc, source code\uac00 \ud06c\uba74 \uaf64 \uc624\ub79c \uc2dc\uac04\uc774 \uc18c\uc694\ub420 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">$ opengrok\/OpenGrok index\nLoading the default instance configuration ...\n  Creating default &lt;YOUR_HOME_DIRECTORY&gt;\/opengrok\/logging.properties ... \nWARNING: Can't find distribution logging configuration (&lt;YOUR_HOME_DIRECTORY&gt;\/opengrok\/bin\/..\/lib\/..\/doc\/logging.properties) to install as default logging configuration (&lt;YOUR_HOME_DIRECTORY&gt;\/opengrok\/logging.properties)<\/pre>\n<h2>\uc0ac\uc6a9<\/h2>\n<p>Indexing \uc791\uc5c5\uc774 \uc644\ub8cc\ub41c \ud6c4\uc5d0\ub294 http:\/\/localhost:8080\/source \uacbd\ub85c\ub85c \uc811\uadfc\ud558\uba74 OpenGrok\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-617\" alt=\"OpenGrok ScreenShot\" src=\"http:\/\/litcoder.com\/wp-content\/uploads\/2013\/03\/Screenshot-from-2013-03-09-232044_opengrok-300x241.png\" width=\"300\" height=\"241\" srcset=\"https:\/\/litcoder.com\/wp-content\/uploads\/2013\/03\/Screenshot-from-2013-03-09-232044_opengrok-300x241.png 300w, https:\/\/litcoder.com\/wp-content\/uploads\/2013\/03\/Screenshot-from-2013-03-09-232044_opengrok-768x617.png 768w, https:\/\/litcoder.com\/wp-content\/uploads\/2013\/03\/Screenshot-from-2013-03-09-232044_opengrok.png 845w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>OpenGrok\uc744 \uc124\uce58\ud558\ub294 \uac00\uc7a5 \uac04\ub2e8\ud55c \ubc29\ubc95\uc740 tomcat5~6 \uc0ac\uc774\uc758 \ubc84\uc804\uc744 \uc0ac\uc6a9\ud558\uace0, \uc124\uce58\ud558\ub294 \uc704\uce58\ub97c \/var\/opengrok \uc73c\ub85c \uc815\ud558\ub294 \uac83\uc774\ub2e4. \uc774\ub807\uac8c \ud558\uba74 \ubcc4\ub3c4\uc758 \uc218\uc815\uc5c6\uc774 \uac70\uc758 \uadf8\ub300\ub85c OpenGrok\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4. (OpenGrok \uc124\uce58 \ube68\ub9ac \ud558\uae30 \ucc38\uc870) \uc774 posting\uc5d0\uc11c\ub294 Source\ub97c &lt;YOUR_SOURCE_REPOSITORY_TOP&gt; \uacbd\ub85c \uc544\ub798\uc5d0 \uac01 project\ubcc4\ub85c \ub530\ub85c \ubcf4\uad00\ud558\uace0, &lt;YOUR_HOME_DIRECTORY&gt;\/opengrok \uacbd\ub85c \uc544\ub798\uc5d0 OpenGrok\uacfc \uad00\ub828\ub41c file\ub4e4\uc744 \ubcf4\uad00\ud558\ub294 \uc0c1\ud669\uc744 \uac00\uc815\ud558\uace0 \uc124\uba85\ud55c\ub2e4. \uc124\uce58 \ud658\uacbd Ubuntu 12.04\uc5d0 tomcat7\uc744 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4],"tags":[72,90,128],"class_list":["post-563","post","type-post","status-publish","format-standard","hentry","category-linux","tag-linux","tag-opengrok","tag-tomcat7"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/posts\/563","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/litcoder.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=563"}],"version-history":[{"count":6,"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/posts\/563\/revisions"}],"predecessor-version":[{"id":3643,"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/posts\/563\/revisions\/3643"}],"wp:attachment":[{"href":"https:\/\/litcoder.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=563"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/litcoder.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=563"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/litcoder.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=563"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}