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

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

大家好,又见面了,我是你们的朋友全栈君。

写在前面

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

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

一、安装Linux子系统

1.1 启用或关闭Windows功能

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

1.2 适用于Linux的Windows子系统

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

1.3 MicroSoft Store下载安装Ubuntu

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

1.4  Ubuntu on Windows

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

二、安装Opengrok工具链

2.1 下载安装OpenGrok

2.1.1 OpenGrok简介

官网链接:{OpenGrok by OpenGrok

【OpenGrok代码搜索引擎】二、Windows10下基于Linux子系统搭建Opengrok代码搜索引擎如上我们了解到,OpenGrok安装环境以来以下软件:

2.1.2 下载Opengrok 

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

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

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

【OpenGrok代码搜索引擎】二、Windows10下基于Linux子系统搭建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

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

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

handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler

java.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.SimpleFileLogFormatter

java.util.logging.ConsoleHandler.level = WARNING
java.util.logging.ConsoleHandler.formatter = org.opengrok.indexer.logger.formatter.SimpleFileLogFormatter

org.opengrok.level = FINE

3.3 设置源码数据

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

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

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环境。

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

3.4.1 安装管理工具命令解析

python3 -m venv env

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

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

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

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

 

激活env环境,如下命令:

 . ./env/bin/activate

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

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

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

pip install opengrok-tools.tar.gz

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

注意!后面使用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/javaee
         http://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>
...

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

四、初始化索引

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

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

五、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

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

 解决方案: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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/137691.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • docker dockerfile详解_进入docker容器命令

    docker dockerfile详解_进入docker容器命令前言Dockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。Dockerfile简介Dockerfile是用来构建Docker镜像的构建文件,是由一系列

  • solidworks导出urdf文件的步骤和踩过的坑「建议收藏」

    solidworks导出urdf文件的步骤和踩过的坑「建议收藏」平台:sw2020,sw2urdfV1.5sw2016在win10激活成功教程有些问题,选择2020版本sw2urdf下载地址和英文教程:sw_urdf_exporter-ROSWiki下载sw插件版本的一些注意:sw2urdf插件安装提示_Dcr_Hs的博客-CSDN博客_sw2urdf插件过程参考:SolidWorks模型导出urdf(古月居老师)_哔哩哔哩_bilibili注意:文件名,用户名,坐标系,坐标轴尽量用英文,导出urdf文件用小写英文,后边.sld什么的要删掉。导入

  • hash 哈希算法_哈希一致性算法

    hash 哈希算法_哈希一致性算法文章目录一、哈希函数定义特点应用常见哈希算法二、murmurhash定义特点应用介绍三、MurmurHash使用四、性能测试MurmurHash:(multiplyandrotate)and(multiplyandrotate)Hash,乘法和旋转的hash算法。一、哈希函数定义散列函数(英语:Hashfunction)又称散列算法、哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合

    2022年10月18日
  • ideaIU-2021.12.13 激活码【中文破解版】

    (ideaIU-2021.12.13 激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

  • ADRC学习笔记(二)

    ADRC学习笔记(二)1.最速跟踪微分器TD它的离散表达式为:参数中:V(t)是目标值h、h0为积分步长,一般来说h可以等于h0,但是为了减少超调和减少震荡,才把他们分开,一般h0比h大,比如大20倍。当h0较大时,能够明显减少震荡,所以也叫滤波因子。减小h可以抑制噪声放大作用。r为速度因子,值越大,逼近速度越快,但是最好根据实际被控对象的可承受能力而定。表达式中:其中fhan函数第一种表达式为:fhan函…

  • 计算机网络设计——企业网络规划与搭建

    计算机网络设计——企业网络规划与搭建目录摘要 一、任务概述 1.1设计目的 1.2项目任务和要求 1.3参考资料 二、开发环境 三、项目需求分析 四、项目设计和实现 4.1总体设计 4.2功能设计 4.3系统实现 五、程序的运行和测试结果 六、设计中的问题及心得 七、附录摘要在科学技术飞速发展的时代,网络互联技术显示出了它蓬勃发展的生命力,它逐渐进入了人们的家居生活,使得当今社会的智能化和网络化越来越来明显。人们对居住环境的要求也随着计算机的普及和信息产业的发展而大大提高,越来越多的人已经离不开网络

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号