Ubuntu搭建OpenGrok环境阅读Linux内核源代码

前端之家收集整理的这篇文章主要介绍了Ubuntu搭建OpenGrok环境阅读Linux内核源代码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
CSDN GitHub
Ubuntu搭建OpenGrok环境阅读Linux内核源代码 AderXCoding/system/tools/opengrok



本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可,转载请注明出处

1 OpenGrok介绍


OpenGrok 是一个快速,便于使用的源码搜索引擎与对照引擎,它能够帮助我们快速搜索、定位、对照代码树. 接下来就具体讲解一下 OpenGrok 的安装及使用.

2 安装OpenGrok


2.1 安装JAVA运行环境


OpenGrok 是基于 JAVA 的,因此我们首先需要 JDKJRE支持其运行

  1. sudo add-apt-repository ppa:webupd8team/java
  2. sudo apt-get update
  3. sudo apt-get install oracle-java8-installer
  4. sudo apt-get install oracle-java8-set-default

具体安装请参照 Ubuntu安装JDK详解

2.2 安装Web服务器-Tomcat


首先大家应该明白 OpenGrok 是一个 Web 系统,因此要共享 OpenGrok 搜索引擎,需要安装 Web 服务器.

Ubuntu 环境下,推荐使用 Tomcat.

Ubuntu14.04 的源中已经提供了Tomcat 7 的包,参见

http://packages.ubuntu.com/trusty/tomcat7

  • 安装 Tomcat7,直接从源中安装 Tomcat7.
  1. sudo apt-get install tomcat7
  • 启动 Tomcat7
  1. sudo service tomcat7 start

或者

  1. sudo /etc/init.d/tomcat7 start

启动 Tomcat 服务后,在浏览器中输入网址

http://localhost:8080

能够进入以下页面证明Tomcat运行成功.

更加详细的安装,请参照Ubunt安装和配置tomcat8服务

2.3 安装OopenGrok


安装好 Tomcat 后,接下来就是配置 OpenGrok 了.

OpenGrok 下载地址 :

http://opengrok.github.io/OpenGrok

在该网址中可以下载 OpenGrok 的编译文件,也可以下载源文件. 在此我们直接下载编译文件(对OpenGrok感兴趣的同学可以下载源码查看究竟),下载后通过以下命令进行解压:

  1. tar xvzf opengrok-0.11.1.tar.gz -C /opt

2.4 配置OpenGrok


如果希望 OpenGrok 能够正常运行,则需要很多环境变量,如果我们按照 OpenGrok的要求安装 jdk,TomcatOpenGrok,并建立好目录结构的话,这些环境变量在运行 OpenGrok 脚本的时候会被正确设置,但是如果我们希望配置更加灵活的话,还是自定义目录结构,然后手动的配置这些环境变量吧,

环境变量的配置如下

  1. #cat mysetenv.sh
  2.  
  3. #-------------------------------------------------------------------------------
  4. # - JAVA_HOME Full Path to Java Installation Root
  5. # - JAVA Full Path to java binary (to enable 64bit JDK)
  6. # - JAVA_OPTS Java options (e.g. for JVM memory increase
  7. #-------------------------------------------------------------------------------
  8. JAVA_HOME=/usr/lib/jvm/java-8-oracle
  9. JRE_HOME=$JAVA_HOME/jre
  10. JAVA_BIN=$JAVA_HOME/bin
  11. CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
  12. PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
  13. export JAVA_HOME JRE_HOME PATH CLASSPATH
  14.  
  15.  
  16.  
  17. #-------------------------------------------------------------------------------
  18. # - OPENGROK_DISTRIBUTION_BASE Base Directory of the OpenGrok Distribution
  19. # - OPENGROK_INSTANCE_BASE Base Directory of the OpenGrok User Data Area
  20. # - EXUBERANT_CTAGS Full Path to Exuberant CTags
  21. # - OPENGROK_CTAGS_OPTIONS_FILE Full path to file with extra command line
  22. # options for CTags program (for its --options
  23. #-------------------------------------------------------------------------------
  24. # opengrok home directory
  25. export OPENGROK_INSTANCE_BASE=/opt/opengrok
  26. export SCRIPT_DIRECTORY=$OPENGROK_INSTANCE_BASE/bin
  27. export OPENGROK_DISTRIBUTION_BASE=$OPENGROK_INSTANCE_BASE/lib
  28.  
  29.  
  30. # source code root
  31. export SRC_ROOT=$OPENGROK_INSTANCE_BASE/database/src
  32. # generated data root
  33. export DATA_ROOT=$OPENGROK_INSTANCE_BASE/database/data
  34. #
  35. EXUB_CTAGS=/usr/bin/ctags
  36.  
  37.  
  38. #-------------------------------------------------------------------------------
  39. # - OPENGROK_APP_SERVER Application Server ("Tomcat" or "Glassfish")
  40. # - OPENGROK_WAR_TARGET_TOMCAT Tomcat Specific WAR Target Directory
  41. # - OPENGROK_WAR_TARGET_GLASSFISH Glassfish Specific WAR Target Directory
  42. # - OPENGROK_WAR_TARGET Fallback WAR Target Directory
  43. # - OPENGROK_TOMCAT_BASE Base Directory for Tomcat (contains webapps)
  44. # - OPENGROK_GLASSFISH_BASE Base Directory for Glassfish
  45. # (contains domains)
  46. #-------------------------------------------------------------------------------
  47. export OPENGROK_APP_SERVER=Tomcat
  48. export OPENGROK_TOMCAT_BASE=/opt/apache-tomcat
  49. export OPENGROK_WAR_TARGET_TOMCAT=$OPENGROK_TOMCAT_BASE/webapps
  50. export OPENGROK_WAR_TARGET=$OPENGROK_TOMCAT_BASE/webapps
  51. export CATALINA_HOME=$OPENGROK_TOMCAT_BASE

完成后,每次在运行 OpenGrok 之前就可以使用mysetenv.sh 脚本来设置环境变量了

  1. source mysetenv.sh

我们可以直接将这条命令加载 OpenGrok 脚本的开头

OpenGrok脚本的信息请参见https://github.com/OpenGrok/OpenGrok/blob/master/OpenGrok

如果运行出错请查看源代码自行设置环境变量的信息

解压完成后进入到解压目录,将 /opt/opengrok/lib 目录下的 source.war 包拷贝到apache-tomcat/webapps 目录下

或者执行

  1. sudo ./OpenGrok deplay

系统会自动$OPENGROK_DISTRIBUTION_BASE/source.war 拷贝到 OPENGROK_WAR_TARGET_TOMCAT

在浏览器中输入

http://localhost:8080/source/

看到以下界面证明OpenGrok运行成功.

接下需要更改 apache-tomcat/webapps/source/WEB-INF 目录下的web.xml配置文件

  1. <context-param>
  2. <param-name>CONFIGURATION</param-name>
  3. <param-value>/opt/opengrok/etc/configuration.xml</param-value>
  4. <description>Full path to the configuration file where OpenGrok can read it's configuration</description>
  5. </context-param>

配置 configuration.xml 的路径为 opengrok/etc 配置目录

提示

实验发现这个xml不配置也是可以正常使用的

2.5 建立源码索引


下面我们就需要为我们的源码配置索引了,OpenGrok 生成代码的索引信息

设置的话需要如下环境变量

环境变量 描述 默认值
SRC_ROOT 生成索引的源代码路径 ${OPENGROK_INSTANCE_BASE}/src
DATA_ROOT 存放生成的索引的路径 ${OPENGROK_INSTANCE_BASE}/data

那么我们直接在 opengrok 的安装目录 /opt/opengrok 下创建 srcdata目录即可

但是我为了方便管理,建立了一个 database 二级目录,将 srcdata 放在这个二级目录里面.

为了使得环境变量能够正确识别,我们可以修改 OpenGrok 脚本的源代码,重置 SRC_ROOTDATA_ROOT 的值.

  1. # 修改/opt/opengrok/bin/OpenGrok
  2.  
  3. SRC_ROOT="${OPENGROK_INSTANCE_BASE}/src"
  4. 改为
  5. SRC_ROOT="${OPENGROK_INSTANCE_BASE}/database/src"
  6.  
  7. DATA_ROOT="${OPENGROK_INSTANCE_BASE}/data"
  8. 改为
  9. DATA_ROOT="${OPENGROK_INSTANCE_BASE}/database/data"

但是由于我已经在 mysetenv.sh 中设置了 SRC_ROOTDATA_ROOT 的值,因此我是这么修改

  1. if [ ! -n "${SRC_ROOT}" ]; then
  2. # required: Source Code/Repository Root
  3. # (your source code or the root of all repositories)
  4. SRC_ROOT="${OPENGROK_INSTANCE_BASE}/src"
  5. fi
  6.  
  7. if [ ! -n "${DATA_ROOT}" ]; then
  8. # required: OpenGrok Generate Data Root
  9. # (for Lucene index and hypertext cross-references)
  10. # This area is rebuilt by "update" / "updateQuietly"
  11. DATA_ROOT="${OPENGROK_INSTANCE_BASE}/data"
  12. fi

接着我们将需要索引的源码放在 src 目录下即可,当然我们其实没必要把源码真的放到这里,只需要为其创建一个链接即可

  1. cd /opt/opengrok/database/src
  2. ln -s /usr/src/linux-4.4.6 4.4.6

将需要索引的源码放在 <code></p>src</code> 目录下

生成索引

  1. #./OpenGrok index

指定SRC_ROOT

  1. ./OpenGrok index <absolute_path_to_your_SRC_ROOT>

接着我们打开

http://localhost:8080/source

就可以看到我们的源代码

猜你在找的Ubuntu相关文章