早年曾经搭建过,最近研究android12,代码比较新,网上没有找到现成的搜索环境,干脆搭一个,没想到搭建过程挺费周折,特此纪录。
1. 不要用太新的opengrok,用了1.7.xx版本,结果报org.apache.lucene.codecs.lucene87错误,用回1.5.10版本就没问题
<2011.11.16刷新>
能用新版本就尽量用新版本,1.7.xx版本更新android12全量索引用了4.5个小时,同样的android代码,同样的硬件,1.4.5版本用了18个小时,好几倍的效率。切换tomcat10后,lucene87错误也没有了。
2. 要用univasal ctag版本,建议自己编译一个,几分钟的事
3. 先用一个小点的工程全流程跑一遍,确认没有问题,再搭建android工程,毕竟建立索引的过程需要花费十几个小时
以下是详细步骤
1.下载opengrok,解压
https://github.com/oracle/opengrok/releases/download/1.5.10/opengrok-1.5.10.tar.gz
2. 下载ctags,编译,具体参考github说明,写的很详细了
https://github.com/universal-ctags/ctags
3. 安装tomcat,前提是安装好jvm
实际测试ubuntu直接用apt install,或者用下载压缩包解压的方式均可行
这一步结束后,确保打开http://localhost:8080可以看到tomcat的欢迎页
4. 拷贝source.war
cp opengrok-1.5.10/lib/source.war /var/lib/tomcat9/webapps/aosp.war
aosp.war名字随意起,最终影响打开的网页地址
这一步结束后,确保打开http://localhost:8080/aosp后,显示一个错误页,说源代码路径找不到之类的,没关系,继续往下执行
5. 用如下命令建立索引,嫌麻烦可以用写好的脚本,》》》》下载
java $JAVA_OPTS -jar /mnt/sdb/code/opengrok-1.5.10/lib/opengrok.jar -H -P -S -G -v \
-c /usr/local/bin/ctags \
-s ${source_root} \
-d ${indexing_root} \
-U http://localhost:8080/aosp \
-W ${indexing_root}/configuration.xml \
-m 256
其中${source_root}需要替换为实际的源代码路径,可以用软链接的方式把不同的源代码链接到此目录下,搜索的时候可以选择按子目录方式搜索不同的源代码
${indexing_root}需要替换为实际索引文件存放的路径,产生的文件会十分庞大,自己找个地方放
6. 修改代码路径
vim /var/lib/tomcat9/webapps/aosp/WEB-INF/web.xml
把如下章节中的configuration.xml路径改成建立索引目录下的configuration.xml路径(即上一步建立索引时候的参数${indexing_root}/configuration.xml)
修改前:
<param-name>CONFIGURATION</param-name>
<param-value>/etc/opengrok/configuration.xml</param-value>
修改后
<param-name>CONFIGURATION</param-name>
<param-value>/mnt/sdb/code/opengrok_data/configuration.xml</param-value>
大功告成:
enjoy!