Linux OpenGrok搭建

文章目录

  • 一、目的
  • 二、环境
  • 三、相关概念
    • 3.1 OpenGrok
    • 3.2 CTags
    • 3.3 Tomcat
  • 四、OpenGrok搭建
    • 4.1 安装jdk
    • 4.2 安装ctags依赖
    • 4.3 安装universal-ctags
      • 4.3.1 下载universal-ctags
      • 4.3.2 编译&&安装universal-ctags
    • 4.4 安装Tomcat
      • 4.4.1 下载&&解压Tomcat
      • 4.4.2 启动Tomcat
      • 4.4.3 验证Tomcat
    • 4.5 安装OpenGrok
    • 4.6 基于Tomcat搭建OpnGrok服务
  • 五、相关问题
    • 5.1 TomCat访问source异常404?
    • 5.2 OpenGrok没有projects选择项?
    • 5.3 如何修改Tomcat端口?
  • 六、参考资料

一、目的

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

二、环境

  1. 系统:Ubuntu 14.04
  2. CPU:13th Gen Intel® Core™ 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

sudo apt install openjdk-11-jdk

4.2 安装ctags依赖

sudo apt install autoconf automake

4.3 安装universal-ctags

4.3.1 下载universal-ctags

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

4.3.2 编译&&安装universal-ctags

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

4.4 安装Tomcat

4.4.1 下载&&解压Tomcat

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

4.4.2 启动Tomcat

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

4.4.3 验证Tomcat

访问:http://127.0.0.1:8080/

4.5 安装OpenGrok

# 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/
cp opengrok-1.13.7/lib/source.war apache-tomcat-10.1.24/webapps/ 
  1. 配置相关环境变量。
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. 使能环境变量
source ~/.bashrc
  1. 创建相关目录
 mkdir opengrok-1.13.7/etc opengrok-1.13.7/src opengrok-1.13.7/data  opengrok-1.13.7/history
  1. 将待索引代码拷贝到src目录下。 建议创建一个软链接,不然多一份代码占用空间。
cp -r xxx opengrok-1.13.7/src/ 
  1. 生成索引 (之后每次在src目录下有更新需要重新索引)。在opengrok-1.13.7/data/下会有相关索引信息,也是很占空间,此过程费时,这台拖拉机索引一次用了6天(粗略估算了一下,一分钟仅能扫描100个文件)。
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下的项目引用该配置。
# apache-tomcat-10.1.24/webapps/source/WEB-INF/web.xml
<context-param><description>Full path to the configuration file where OpenGrok can read its configuration</description><param-name>CONFIGURATION</param-name><param-value>/media/2TB/lzq/openGrok/opengrok-1.13.7/etc/configuration.xml</param-value>
</context-param>
  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
# sudo cat apache-tomcat-10.1.24/conf/server.xml
<Server port="8006" shutdown="SHUTDOWN"><Connector port="8085" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" /><Connector protocol="AJP/1.3"address="::1"port="8010"redirectPort="8443" />

六、参考资料

  1. OpenGrok搭建
    https://blog.csdn.net/weixin_39577288/article/details/120565619
  2. OpenGrok介绍
    https://www.jianshu.com/p/3371d3b213d2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/36355.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

继续捡钱,每天几百块!

每日操作计划&#xff1a; 标普信息科技(161128)&#xff0c;溢价8.5%&#xff0c;限购100&#xff0c;一拖七&#xff0c;单户每天700*8.5%59元 印度基金LOF(164824)&#xff0c;溢价2.6%&#xff0c;限购100&#xff0c;一拖七&#xff0c;单户每天700*2.6%18元 美元债LOF(…

为什么要本地化您的多媒体内容?

当我们访问网站、应用程序和社交媒体时&#xff0c;体验不再局限于陈旧的文本和静态图像。现代处理能力和连接速度提高了快速加载视频、音频和动画的可能性。 这一切都提供了更具沉浸感和互动性的用户体验。多媒体是数字营销中最有效的内容之一&#xff0c;因为它对用户更具吸…

使用API有效率地管理Dynadot域名,为文件夹中的域名设置域名转发

关于Dynadot Dynadot是通过ICANN认证的域名注册商&#xff0c;自2002年成立以来&#xff0c;服务于全球108个国家和地区的客户&#xff0c;为数以万计的客户提供简洁&#xff0c;优惠&#xff0c;安全的域名注册以及管理服务。 Dynadot平台操作教程索引&#xff08;包括域名邮…

全彩屏负氧离子监测站

TH-FZ5在追求绿色生态、健康出行的今天&#xff0c;景区不仅仅是人们休闲游玩的好去处&#xff0c;更是人们体验大自然、感受清新空气的重要场所。为了进一步提升游客的游览体验&#xff0c;许多景区纷纷引入了全彩屏负氧离子监测站&#xff0c;这一创新举措不仅为景区增添了科…

云通SIPX,您的码号资源智能调度专家!

在数字化转型的浪潮中&#xff0c;号码资源作为企业与客户沟通的重要桥梁&#xff0c;其管理效率直接关系到企业运营的成败。随着运营商对号码资源管理的规范化和精细化&#xff0c;企业对高效、智能的号码资源管理需求日益增长&#xff0c;以实现对外呼叫的降本增效。 一、什么…

学生成绩管理系统带8000字文档学生选课管理系统java项目javaweb项目ssm项目jsp项目java课程设计java毕业设计

文章目录 学生选课成绩管理系统一、项目演示二、项目介绍三、8500字项目文档四、部分功能截图五、部分代码展示六、底部获取项目源码带8500字文档&#xff08;9.9&#xffe5;带走&#xff09; 学生选课成绩管理系统 一、项目演示 选课成绩管理系统 二、项目介绍 语言: Java …

直播带货大模型,开启自动卖货的时代

Streamer-Sales是一个为直播带货主播量身定制的智能工具。 它能够智能分析商品特性&#xff0c;自动创作出引人入胜的解说词&#xff0c;从而有效增强商品的吸引力和提升销售业绩。它还具备多种交互功能&#xff0c;比如将主播的语音实时转换为文字&#xff0c;便于与观众进行…

移动端 UI 风格,书写华丽篇章

移动端 UI 风格&#xff0c;书写华丽篇章

原创作品—医疗行业软件界面UI、交互设计

在医疗行业大屏UI设计中&#xff0c;首要的是以用户为中心&#xff0c;深入理解医生、护士、管理层等用户群体的具体需求和工作流程。大屏设计应直观展示关键医疗数据、患者信息、设备状态等&#xff0c;确保用户能够迅速、准确地获取所需信息。同时&#xff0c;功能布局应合理…

​​植物大战僵尸杂交版直装版v2.1 安卓版:全新策略塔防体验

《植物大战僵尸杂交版直装版》v2.1是由B站UP主“潜艇伟伟迷”精心制作的同人游戏&#xff0c;为策略塔防手游带来了全新的活力。游戏中引入了众多创新的杂交植物&#xff0c;例如结合了向日葵的阳光生成能力和豌豆射手的攻击特性的向日葵豌豆射手&#xff0c;以及拥有寒冰豌豆射…

金融科技如何运用技术手段实现细颗粒度服务

随着金融科技的快速发展&#xff0c;金融机构正在通过采用各种技术手段来提供更加细颗粒度的服务&#xff0c;以满足客户日益增长的个性化需求。这些技术手段不仅提高了金融服务的效率和安全性&#xff0c;还显著提升了用户体验和满意度。 一、大数据分析与人工智能&#xff08…

中国旺旺:廉颇老矣or老而弥坚?

从80后的童年吃到了20后的童年&#xff0c;什么舌尖上的产品能旺这么久&#xff1f; 相信大家都能说出他的名字——中国旺旺。 要问旺旺的第一单品是啥&#xff1f;毫无疑问是旺仔牛奶。 这也体现在财报上&#xff0c;2022财年&#xff0c;旺旺乳品、饮料品类收入双位数下滑&…

【Sklearn驯化-回归指标】一文搞懂机器学习中回归算法评估指标:mae、rmse等

【Sklearn驯化-回归指标】一文搞懂机器学习中回归算法评估指标&#xff1a;mae、rmse等 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#x1f387; 免…

python-docx 使用xml为docx不同的章节段落设置不同字体

本文目录 前言一、完整代码二、代码详细解析1、处理过程解释(1) 引入库并定义路径(2) 创建docx的备份文件(3) 定义命名空间(4) 打开并处理.docx文件(5) 分析和组织文档结构(6) 设置字体(7) 保存结果前言 本文主要解决的内容,就是为一个docx的不同章节段落设置不同的字体,因为…

6.二叉树.题目3

6.二叉树.题目3 题目17.二叉搜索树中的众数18.二叉树的最近公共祖先19.二叉树搜索树的最近公共祖先20.二叉搜索树中的插入操作。普通二叉树的删除方式 21.删除二叉搜索树中的节点22.修剪二叉树23.将有序数组转化为二叉搜索树24.把二叉搜索树转化为累加树 总结 题目 17.二叉搜索…

LLM大模型本地部署与预训练微调

以通义千问-1_8B-Chat为例&#xff0c;按照官方教程&#xff0c;简单介绍如何将模型进行本地CPU部署以及预训练微调&#xff1a; 1、环境条件&#xff1a;Linux 24G内存左右 2、本地部署&#xff1a; 提前安装好git跟git lfs&#xff0c;否则可能拉取不到模型文件&#xff0c;g…

【教程】DPW 325T FPGA板卡程序下载与固化全攻略

到底什么是固化&#xff1f;&#xff1f;&#xff1f; 在开发板领域&#xff0c;"固化"通常指的是将软件或操作系统的镜像文件烧录&#xff08;Flash&#xff09;到开发板的存储介质上&#xff0c;使其成为开发板启动时加载的系统。这个过程可以确保开发板在启动时能…

从单点到全景:视频汇聚/安防监控EasyCVR全景视频监控技术的演进之路

在当今日新月异的科技浪潮中&#xff0c;安防监控领域的技术发展日新月异&#xff0c;全景摄像机便是这一领域的杰出代表。它以其独特的360度无死角监控能力&#xff0c;为各行各业提供了前所未有的安全保障&#xff0c;成为现代安防体系中的重要组成部分。 一、全景摄像机的技…

【SpringMVC】第1-7章

第1章 初始SpringMVC 1.1 学习本套教程前的知识储备 JavaSEHTMLCSSJavaScriptVueAJAX axiosThymeleafServletMavenSpring 1.2 什么是MVC MVC架构模式相关课程&#xff0c;在老杜的JavaWeb课程中已经详细的讲解了&#xff0c;如果没有学过的&#xff0c;可以看这个视频&…

当下为什么越来越多的企业选择产业园区,而不是写字楼?

随着经济形势的变化和各行业的升级转型&#xff0c;我们发现越来越多的企业选择扎根产业园而非传统的写字楼&#xff0c;这一现象背后真正的原因是什么呢&#xff1f;今天我们就站在企业自身发展的角度&#xff0c;全维度对比一下产业园与传统写字楼的区别&#xff0c;看是否能…