写在前面

无论是android asop、linux kernel,harmony os,rtos,还是alios,代码量成万上亿行;无论用什么IDE都无法秒级找到我们想要的函数或者变量。

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

一、安装Linux子系统

1.1 启用或关闭Windows功能

1.2 适用于Linux的Windows子系统

1.3 MicroSoft Store下载安装Ubuntu

1.4  Ubuntu on Windows

二、安装Opengrok工具链

2.1 下载安装OpenGrok

2.1.1 OpenGrok简介

官网链接:{OpenGrok by OpenGrok

如上我们了解到,OpenGrok安装环境以来以下软件:

  • Java(11及以上版本)
  • Tomcat (10.x 及以上版本)
  • Universal ctags

2.1.2 下载Opengrok

下载链接:https://github.com/oracle/opengrok/releases/

2.2 下载安装Java

下载链接:Java Downloads | Oracle

dpkg -i jdk-11.0.14_linux-x64_bin.deb

2.3 下载安装ctags

下载链接:https://github.com/universal-ctags/ctags

    $ git clone https://github.com/universal-ctags/ctags.git$ cd ctags$ ./autogen.sh$ ./configure --prefix=/where/you/want # defaults to /usr/local$ make$ make install # may require extra privileges depending on where to install

三、配置Opengrok

3.1 创建目录层级

为了方便管理,opengrok建议将源码,配置文件,日志,数据,工具等统一放到opengrok目录下,如下:

mkdir /opengrok/{src,data,dist,etc,log}
tar -C /opengrok/dist --strip-components=1 -xzf opengrok-X.Y.Z.tar.gz

3.2 日志配置

cp /opengrok/dist/doc/logging.properties /opengrok/etc

修改日志配置文件,内容如下:

handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandlerjava.util.logging.FileHandler.pattern = /opengrok/log/opengrok%g.%u.log
java.util.logging.FileHandler.append = false
java.util.logging.FileHandler.limit = 0
java.util.logging.FileHandler.count = 30
java.util.logging.FileHandler.level = ALL
java.util.logging.FileHandler.formatter = org.opengrok.indexer.logger.formatter.SimpleFileLogFormatterjava.util.logging.ConsoleHandler.level = WARNING
java.util.logging.ConsoleHandler.formatter = org.opengrok.indexer.logger.formatter.SimpleFileLogFormatterorg.opengrok.level = FINE

3.3 设置源码数据

基于我们之前建立的目录结构,将我们需要建立索引的代码放置到/opengrok/src目录下,如下:

3.4 安装管理工具(可选)

# 将会安装opengrok管理工具,路径如opengrok/dist/tools/opengrok-tools.tar.gz
$ cd tools
$ python3 -m venv env
$ . ./env/bin/activate
$ pip install opengrok-tools.tar.gz

该管理工具主要封装了OpenGrok's创建索引等相关命令,管理工具的安装需要系统已安装Pyton环境。

3.4.1 安装管理工具命令解析

python3 -m venv env

创建见python3的venv环境,环境创建后需进行激活进入evn环境,才可以使用opengrok管理工具。

此时,env下还没有安装opengrok工具,目录结构如下:

激活env环境,如下命令:

. ./env/bin/activate

激活后,命令终端前面会多一个(env)标记,如下图:

接下来我们安装管理工具到env环境下,如下:

pip install opengrok-tools.tar.gz

注意!后面使用opengrok管理工具如opengrok-indexer都需要在env环境下进行哦。

3.5 部署web应用程序

3.5.1 拷贝opengrok下的source.war到tomcat目录下的webapps目录下

cp opengrok/dist/lib/source.war xxx/01_apache-tomcat-10.0.18/webapps/

3.5.2 配置web.xml

vim xxx/01_apache-tomcat-10.0.18/webapps/source/WEB-INF/web.xml

修改param-name为CONFIGURATION的值内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1"><display-name>OpenGrok</display-name><description>A wicked fast source browser</description><context-param><description>Full path to the configuration file where OpenGrok can read its configuration</description><param-name>CONFIGURATION</param-name><param-value>xxx/opengrok/etc/configuration.xml</param-value></context-param>
...

四、初始化索引

java11 \-Djava.util.logging.config.file=/root/workspace/opengrok/etc/logging.properties \-jar /root/workspace/opengrok/dist/lib/opengrok.jar \-c /usr/local/bin/ctags \-s /root/workspace/opengrok/src -d /root/workspace/opengrok/data -H -P -S -G \-W /root/workspace/opengrok/etc/configuration.xml -U http://localhost:8080/source

五、FAQ

5.1 Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.UnsupportedClassVersionError: org/opengrok/indexer/index/Indexer has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versionsup to 52.0

解决方案:java版本过低,使用java11+;

5.2 16:45:51 SEVERE: Couldn't notify the webapp on http://localhost:8080/source.jakarta.ws.rs.NotFoundException: HTTP 404 Not Found

解决方案:java版本过低,使用java11+;

5.2 提示“autoreconf: not found”,没有生成configure文件

解决方案:

需要安装autoreconf工具,安装命令如下:

sudo apt install autoconf

【OpenGrok代码搜索引擎】二、Windows10下基于Linux子系统搭建Opengrok代码搜索引擎相关推荐

  1. Windows10下安装Linux子系统

    Windows10下安装Linux子系统 版本说明 版本 作者 日期 备注 0.1 ZY 2019.7.9 初稿 目录 文章目录 Windows10下安装Linux子系统 版本说明 目录 一.初衷 二 ...

  2. win10下linux子系统6,Windows10下安装Linux子系统2020年7月最新版

    作为数据分析的必备工具,Linux系统已经成为不可缺少的系统工具.如今Windows10开始可以安装Linux子系统(Windows Subsystem for Linux,WSL),直接在Windo ...

  3. windows10下基于3070显卡安装 mmdetection+mmcv_full

    windows10下基于3070显卡安装 mmdetection+mmcv_full ​ 3070显卡的算力是8.6,支持的cuda版本按照正常情况,应该只支持cuda11以上版本,但是mmcv_fu ...

  4. Ubuntu环境下基于Linux进行DOL配置

    Ubuntu环境下基于Linux进行DOL配置 Description The distributed operation layer (DOL) is a framework that enable ...

  5. 基于SSM的校园二手书管理系统 基于java的二手平台代码 二手商城系统下载

    基于SSM的校园二手书管理系统 基于java的二手平台代码 二手商城系统下载 注意:该项目只展示部分功能,如需了解,评论区咨询即可. 1.开发环境 开发语言:Java 后台框架:SSM(Spring+ ...

  6. windows10下使用Ubuntu子系统

    文章目录 Ubuntu子系统概述 什么是子系统 WSL介绍 双系统.虚拟机以及子系统的对比 安装Ubuntu子系统 在Windows10下开启WSL 安装Ubuntu 配置和运行Ubuntu 新环境和 ...

  7. 软raid1 重新同步_软RAID搭建基于linux系统搭建RAID5

    实验二.软RAID搭建-基于linux系统搭建RAID5 实验要求: 1)创建RAID5; 2)添加一个热备盘sdj 3)指定chunk为32k 4停止阵列,重新激活阵列 5使用热备盘,扩展阵列容量, ...

  8. window命令行 linux,Windows命令行:起源 直到引入Windows下的linux子系统(WSL)

    本文从Windows命令行的起源及终端的演变,到我们在未来Windows发行版中对Windows控制台及命令行进行全面更新,引入Windows下的linux子系统(WSL).在本文中,我们将对命令行最 ...

  9. Windows10玩转Linux子系统(WSL)

    Windows10玩转Linux子系统(WSL) WSL简介 WSL 是 Windows Subsystem for Linux 的缩写,意思是 linux 版的 window 子系统. Linux ...

  10. windows10内置Linux子系统挂载文件

    windows10内置Linux子系统的根目录位于 C:\Users\用户名\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_ ...

最新文章

  1. 他25岁当上985博导,今年秋季学生已招满
  2. 谈谈Spanner和F1
  3. 互联网协议 — TCP — (面向面向连接的)三次握手、四次挥手
  4. 解决启动springboot项目时localhost一直显示Whitelabel Error Page和@ConfigurationProperties标红
  5. 中国市场新财富与新人群趋势
  6. 利用VB函数Dir()实现递归搜索目录
  7. MySQL 如何查找并删除重复行
  8. 用计算机模拟宇宙,计算机中的宇宙
  9. kotlin版本组件化+mvvm项目架构
  10. 监控服务器说明文档,监控服务器说明文档
  11. Android 开发工具一键下载
  12. Linux 卸载Mysql
  13. 好喝的阿拉伯咖啡Gahwa
  14. 局域网下 共享文件夹
  15. PMP需要提供什么资料来证明自己的项目管理经验
  16. 如何在eclipse中写jsp文件
  17. 简单分析实现运维利器---web远程ssh终端录像回放libl
  18. 无胁科技-TVD每日漏洞情报-2022-10-14
  19. 【设计模式】工厂设计模式
  20. 我的世界服务器怎么设置自动拾取,我的世界自动拾取mod

热门文章

  1. Android本地数据搜索实现
  2. python操作符是什么意思_如何使用python操作符**与*?有什么区别?
  3. Python爬虫:网易云音乐评论爬取
  4. 学生管理系统IPO图_南昌市2020年小升初信息管理系统学生家长操作说明及采集流程...
  5. Java 应用结构规范
  6. uniapp 实现抽奖幸运大转盘功能
  7. 《Ogre一步一步学开发》 一、Ogre源码编译与安装,从源代码开始构建Ogre图文教程(Ogre 1.12.1 Source + VS2019 + Windows10)
  8. html刮刮乐百分比,jQuery+html5实现彩票刮刮乐效果
  9. excel表格求和,2022年4种最全求和方法
  10. Python图片转base64