• Linux OpenGrok搭建


    一、目的

            Android源码太庞大,涉及几十个G、上千万个文件,普通的IDE都无法完全加载全部代码,更不用谈搜索、索引,这对于Android源码的学习、调试非常不利。
            OpenGrok是一个源码搜索及交叉引用查询引擎,OpenGrok的引入可以帮助我们更好地在浩如烟海的源码里找到自己需要的那坨代码。

    二、环境

    1. 系统:Ubuntu 14.04
    2. CPU:13th Gen Intel(R) Core(TM) i5-13500

    三、相关概念

    3.1 OpenGrok

            OpenGrok为一个方便快速的源码搜索及交叉引用查询引擎。它以Java编写,可用于源码搜索、交叉引用查询、以及源码树定位。它支持多种编码语言和多种代码版本控制引擎系统。

    3.2 CTags

            CTags是一个在Linux系统中广泛使用的工具,它可以帮助程序员更有效地浏览和管理大型代码库。CTags能够创建一个索引文件,其中包含代码库中的函数、类、结构体等关键词的位置信息。

    3.3 Tomcat

            Tomcat是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,由Apache软件基金会(Apache Software Foundation)的Jakarta项目开发。 它是一个Servlet容器,同时也是JSP(Java Server Pages)的一个容器,支持最新的Servlet和JSP规范。Tomcat的设计目标是提供一个可靠且易于使用的Web应用服务器,特别适用于中小型系统和并发访问用户不是很多的场合。由于其技术先进、性能稳定且免费,Tomcat深受Java爱好者的喜爱,并得到了部分软件开发商的认可,成为比较流行的Web应用服务器之一。

    四、OpenGrok搭建

    4.1 安装jdk

    numbers highlighter
    sudo apt install openjdk-11-jdk
    

    4.2 安装ctags依赖

    numbers highlighter
    sudo apt install autoconf automake
    

    4.3 安装universal-ctags

    4.3.1 下载universal-ctags

    numbers highlighter
    git clone https://github.com/universal-ctags/ctags.git
    

    4.3.2 编译&&安装universal-ctags

    numbers highlighter
    cd ctags
    ./autogen.sh 
    ./configure
    make
    sudo make install
    

    4.4 安装Tomcat

    4.4.1 下载&&解压Tomcat

    numbers highlighter
    # http://tomcat.apache.org/
    tar -xvf apache-tomcat-10.1.24.tar.gz 
    

    4.4.2 启动Tomcat

    numbers highlighter
    sh apache-tomcat-10.1.24/bin/startup.sh
    

    4.4.3 验证Tomcat

    访问:http://127.0.0.1:8080/

    4.5 安装OpenGrok

    numbers highlighter
    # https://github.com/oracle/opengrok
    # https://github.com/oracle/opengrok/releases
    tar -xvf opengrok-1.13.7.tar.gz 
    

    4.6 基于Tomcat搭建OpnGrok服务

    1. 拷贝OpenGrok的源项目到Tomcat下。 Tomcat启动后会自动解压source.war,可以通过浏览器访问:http://127.0.0.1:8080/source/
    numbers highlighter
    cp opengrok-1.13.7/lib/source.war apache-tomcat-10.1.24/webapps/ 
    
    1. 配置相关环境变量。
    numbers highlighter
    sudo vi ~/.bashrc
    # opengrok
    export JAVA_HOME=/usr
    export OPENGROK_TOMCAT_BASE=/media/2TB/lzq/openGrok/apache-tomcat-10.1.24
    export CATALINA_HOME=/media/2TB/lzq/openGrok/apache-tomcat-10.1.24
    export OPENGROK_APP_SERVER=Tomcat
    export OPENGROK_INSTANCE_BASE=/media/2TB/lzq/openGrok/opengrok-1.13.7
    export LANG=zh_CN.UTF-8
    
    1. 使能环境变量
    numbers highlighter
    source ~/.bashrc
    
    1. 创建相关目录
    numbers highlighter
     mkdir opengrok-1.13.7/etc opengrok-1.13.7/src opengrok-1.13.7/data  opengrok-1.13.7/history
    
    1. 将待索引代码拷贝到src目录下。 建议创建一个软链接,不然多一份代码占用空间。
    numbers highlighter
    cp -r xxx opengrok-1.13.7/src/ 
    
    1. 生成索引 (之后每次在src目录下有更新需要重新索引)。在opengrok-1.13.7/data/下会有相关索引信息,也是很占空间,此过程费时,这台拖拉机索引一次用了6天(粗略估算了一下,一分钟仅能扫描100个文件)。
    numbers highlighter
    java -jar opengrok-1.13.7/lib/opengrok.jar -P -S -v -s opengrok-1.13.7/src -d opengrok-1.13.7/data -H --repository  opengrok-1.13.7/history -W opengrok-1.13.7/etc/configuration.xml
    
    1. 配置configuration.xml路径。 索引生成后,会生成opengrok-1.13.7/etc/configuration.xml文件,需要让tomcat下的项目引用该配置。
    numbers highlighter
    # apache-tomcat-10.1.24/webapps/source/WEB-INF/web.xml
    
        Full path to the configuration file where OpenGrok can read its configuration
        CONFIGURATION
        /media/2TB/lzq/openGrok/opengrok-1.13.7/etc/configuration.xml
    
    
    1. 验证功能。 启动tomcat,同时浏览器访问http://127.0.0.1:8080/source/, 大功告成。

    五、相关问题

    5.1 TomCat访问source异常404?

            一开始我下载apache-tomcat-9.0.89,然后http://127.0.0.1:8080/source/, 一直出现404。经历一系列各种乱七八糟的调试后,始终起不来。
            后面更新apache-tomcat-10.1.24,完美。原因不明。

    5.2 OpenGrok没有projects选择项?

            我最开始在opengrok-1.13.7/src/下创建了UIS7870文件夹,然后生成索引的目标目录是指向:opengrok-1.13.7/src/,导致projects仅有UIS7870,故不显示(具体可参考configuration.xml & apache-tomcat-10.1.24/webapps/source/menu.jspf);
            后续将目标索引目录修改成opengrok-1.13.7/src/UI7870/即可。

    5.3 如何修改Tomcat端口?

    • 将server端口修改为8006
    • 将HTTP端口修改为8085
    • 将AJP端口修改为8010
    numbers highlighter
    # sudo cat apache-tomcat-10.1.24/conf/server.xml
    
     
    
     
    
    

    六、参考资料

    1. OpenGrok搭建
      https://blog.csdn.net/weixin_39577288/article/details/120565619
    2. OpenGrok介绍
      https://www.jianshu.com/p/3371d3b213d2
  • 相关阅读:
    Java中Arrays类中的数组操作方法详解
    9. 一个SpringBoot项目运行
    中转服务器是干嘛的?
    完美洗牌问题
    Spring源码系列学习
    redis 的 java实现 —— jedis
    Abnova酸性磷酸酶(小麦胚芽)说明书
    杰理之已定义的 CMD【篇】
    uni-app H5使用 tabbars切换,echartst图表变小 宽度只有100px问题解决
    新渠道+1!TDengine Cloud 入驻 Azure Marketplace
  • 原文地址:https://www.cnblogs.com/zhiqinlin/p/18269163