Linux OpenGrok搭建

news/2024/10/5 21:20:45/文章来源:https://www.cnblogs.com/zhiqinlin/p/18269163

目录
  • 一、目的
  • 二、环境
  • 三、相关概念
    • 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(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

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.hqwc.cn/news/731628.html

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

相关文章

22.5万奖金池丨Higress AI 网关编程挑战赛启动

2024 天池云原生编程挑战赛 6 月 12 日正式启动,8 月 28 日线下决赛,9 月公布最终参赛结果,奖金池合计 22.5 万,共计三个赛道,面向全社会开放。《使用 Higress AI 网关优化 AI 调用成本》是第二赛道。AI 原生应用,对网关的需求已经超越了传统的路由和负载均衡功能,还需要…

alembic数据库迁移工具

Alembic 使用 SQLAlchemy 作为底层引擎,为关系数据库提供变更管理脚本的创建、管理和调用。 安装alembicpip install alembic 2、初始化alembic环境命令: alembic init alembic 3、修改配置和环境 此处修改两个地方: 1 alembic.ini 将url修改为你要连接的数据库地址 2 修…

Hexo自动部署

作者: 時光 来源: 時光的博客园子 原文: https://blog.shiguang666.eu.org/2024/06/24/49078ab077e1Hexo自动部署 为了简化Hexo部署过程,你可以使用持续集成工具(如 GitHub Actions)来实现自动化部署。GitHub Actions 是一个持续集成和持续交付 (CI/CD) 平台,允许你自动化你…

SQLAlchemy的数据库引擎

任何SQLAlchemy应用程序的开始都是一个名为 Engine . 此对象充当连接到特定数据库的中心源,提供工厂和称为 connection pool 对于这些数据库连接。引擎通常是一个只为特定数据库服务器创建一次的全局对象,并使用一个URL字符串进行配置,该字符串将描述如何连接到数据库主机或…

Butterfly主题配置及美化

作者: 時光 来源: 時光的博客园子 原文: https://blog.shiguang666.eu.org/2024/06/24/a334c4683866/Butterfly主题配置及美化 Butterfly主题介绍官方文档:Hexo Butterfly 主题官方文档 GitHub 仓库:Hexo Butterfly 主题 GitHub 仓库Hexo官网上面有非常多好看的主题,你可以选…

概率释疑 | 高一层次

人教2019 A版概率中的问题释疑前言 疑难廓清 ✍️【人教 2019A 版教材 \(P_{246}\) 习题 \(10.1\) 第 \(4\) 题】判断下列说法是否正确.若错误,请举出反例. (1). 互斥的事件一定是对立事件,对立事件不一定是互斥事件; (2). 互斥的事件不一定是对立事件,对立事件一定是互斥…

[Triton课程笔记] 2.1.4 Backend-build

课程链接:https://www.bilibili.com/video/BV1Fa411G75m/?spm_id_from=333.788&vd_source=c2a322357481107ab7f418b1ae9ce618 一、build写CMakeLists.txt文件; 写cmake/TritonYourBackendConfig.cmake.in 文件; 将pytorch_backend/src/libtriton_pytorch.ldscript 拷贝…

pdf转ppt怎么免费转换?3个方法一定要看看!

我们在工作中经常会遇到这两种格式的文件,各有各的优点,PDF兼容性很强,但是不易编辑,如果想要修改其中的内容那就比较麻烦,所以通常会将PDF文件转换成易编辑的Word、PPT等文档。那么你知道pdf如何免费转换ppt吗?下面就来讲讲pdf转ppt的方法,看完你就会了。 方法一、Wind…

服务器raid5数据恢复

服务器数据恢复环境: x3850 X5服务器,一组由5块硬盘组建的raid5阵列,安装linux操作系统,运行oracle数据库。服务器故障检测分析描述: 服务器上raid5阵列中两块硬盘故障导致磁盘离线,服务器数据库数据丢失。raid5阵列中有两块硬盘处于离线状态;没有发现物理故障。服务器数…

服务器磁盘阵列数据恢复

服务器环境描述: IBM 3650服务器,raid磁盘阵列中共有5块 SAS 300GB 磁盘组成一组RAID5磁盘阵列,是windows 2003系统, SQL Server 2010数据库。服务器检测与分析: 首先检测raid磁盘阵列,发现服务器中的2块磁盘物理故障离线且有坏道导致RAID离线,服务器无法进入系统。服务…

浏览器截长图方法及工具推荐

作者: 時光 原文: https://blog.shiguang666.eu.org/2024/06/20/2cff0738b0b5 来源: 時光的博客园子1、使用浏览器开发者工具 一、使用浏览器开发者工具 1.1、 Chrome截图 在浏览器网页中按下F12,进入开发者工具。 输入Ctrl+Shift+P进入命令,中文界面输入截图二字,选择截取完…

npm-ERR-errno-4048

作者: 時光 原文: https://blog.shiguang666.eu.org/2024/06/22/45f9b42e4573 来源: 時光的博客园子这个错误代码通常时由于权限不足所导致,例如执行npm link详细报文如下: npm ERR! code EPERM npm ERR! syscall symlink npm ERR! path D:\hexo\plugins\hexo-footer-plugin …