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.pswp.cn/diannao/36355.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/36355.shtml
英文地址,請注明出處:http://en.pswp.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(…

【leetcode系列】46.全排列

題目&#xff1a;給定一個不含重復數字的數組 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意順序 返回答案。 示例 1&#xff1a; 輸入&#xff1a;nums [1,2,3] 輸出&#xff1a;[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例 2&#xff1a; 輸入&am…

算法力扣刷題記錄 二十【18題. 四數之和】

前言 哈希篇&#xff0c;繼續。 記錄 二十【18題. 四數之和】 一、題目閱讀 給你一個由 n 個整數組成的數組 nums &#xff0c;和一個目標值 target 。請你找出并返回滿足下述全部條件且不重復的四元組 [nums[a], nums[b], nums[c], nums[d]] &#xff08;若兩個四元組元素一…

為什么要本地化您的多媒體內容?

當我們訪問網站、應用程序和社交媒體時&#xff0c;體驗不再局限于陳舊的文本和靜態圖像。現代處理能力和連接速度提高了快速加載視頻、音頻和動畫的可能性。 這一切都提供了更具沉浸感和互動性的用戶體驗。多媒體是數字營銷中最有效的內容之一&#xff0c;因為它對用戶更具吸…

vue-cli 項目打包優化-基礎篇

1、項目打包完運行空白 引用資源路徑問題&#xff0c;打包完的【index.html】文件引用其他文件的引用地址不對 參考配置&#xff1a;https://cli.vuejs.org/zh/config 修改vue.config.js &#xff0c;根據與 后端 或 運維 溝通修改 module.export {// 默認 publicPath: //…

使用API有效率地管理Dynadot域名,為文件夾中的域名設置域名轉發

關于Dynadot Dynadot是通過ICANN認證的域名注冊商&#xff0c;自2002年成立以來&#xff0c;服務于全球108個國家和地區的客戶&#xff0c;為數以萬計的客戶提供簡潔&#xff0c;優惠&#xff0c;安全的域名注冊以及管理服務。 Dynadot平臺操作教程索引&#xff08;包括域名郵…

全彩屏負氧離子監測站

TH-FZ5在追求綠色生態、健康出行的今天&#xff0c;景區不僅僅是人們休閑游玩的好去處&#xff0c;更是人們體驗大自然、感受清新空氣的重要場所。為了進一步提升游客的游覽體驗&#xff0c;許多景區紛紛引入了全彩屏負氧離子監測站&#xff0c;這一創新舉措不僅為景區增添了科…

【懷莊之醉白酒】懷莊之醉醬香白酒哪款好?

【懷莊之醉醬香白酒】在懷莊之醉醬香白酒的豐富系列中&#xff0c;懷莊之醉尊品、懷莊之醉三星和懷莊之醉匠心之作是三款受到廣泛歡迎的產品。 每一款酒都具備其獨特的風味和適合的飲用場合。以下是對這三款酒特性的分析&#xff1a; 懷莊之醉 尊品&#xff1a;懷莊之醉 尊品…

云通SIPX,您的碼號資源智能調度專家!

在數字化轉型的浪潮中&#xff0c;號碼資源作為企業與客戶溝通的重要橋梁&#xff0c;其管理效率直接關系到企業運營的成敗。隨著運營商對號碼資源管理的規范化和精細化&#xff0c;企業對高效、智能的號碼資源管理需求日益增長&#xff0c;以實現對外呼叫的降本增效。 一、什么…

學生成績管理系統帶8000字文檔學生選課管理系統java項目javaweb項目ssm項目jsp項目java課程設計java畢業設計

文章目錄 學生選課成績管理系統一、項目演示二、項目介紹三、8500字項目文檔四、部分功能截圖五、部分代碼展示六、底部獲取項目源碼帶8500字文檔&#xff08;9.9&#xffe5;帶走&#xff09; 學生選課成績管理系統 一、項目演示 選課成績管理系統 二、項目介紹 語言: Java …

php數據結構之鏈表

本文由 ChatMoney團隊出品 鏈表的基本概念 鏈表&#xff08;Linked List&#xff09;是一種常見的數據結構&#xff0c;它由一系列節點組成&#xff0c;每個節點除了存儲數據外&#xff0c;還包含指向下一個節點的指針。與數組相比&#xff0c;鏈表在插入和刪除操作上具有更高…

直播帶貨大模型,開啟自動賣貨的時代

Streamer-Sales是一個為直播帶貨主播量身定制的智能工具。 它能夠智能分析商品特性&#xff0c;自動創作出引人入勝的解說詞&#xff0c;從而有效增強商品的吸引力和提升銷售業績。它還具備多種交互功能&#xff0c;比如將主播的語音實時轉換為文字&#xff0c;便于與觀眾進行…

移動端 UI 風格,書寫華麗篇章

移動端 UI 風格&#xff0c;書寫華麗篇章

原創作品—醫療行業軟件界面UI、交互設計

在醫療行業大屏UI設計中&#xff0c;首要的是以用戶為中心&#xff0c;深入理解醫生、護士、管理層等用戶群體的具體需求和工作流程。大屏設計應直觀展示關鍵醫療數據、患者信息、設備狀態等&#xff0c;確保用戶能夠迅速、準確地獲取所需信息。同時&#xff0c;功能布局應合理…

12寸和8寸封裝線的差異點

12英寸&#xff08;300mm&#xff09;晶圓封裝線與8英寸&#xff08;200mm&#xff09;晶圓封裝線在多個方面存在顯著區別&#xff0c;這些區別影響了它們的生產效率、成本結構和適用技術。以下是一些主要差異&#xff1a; 1. **晶圓面積**&#xff1a; - 12英寸晶圓擁有更…

??植物大戰僵尸雜交版直裝版v2.1 安卓版:全新策略塔防體驗

《植物大戰僵尸雜交版直裝版》v2.1是由B站UP主“潛艇偉偉迷”精心制作的同人游戲&#xff0c;為策略塔防手游帶來了全新的活力。游戲中引入了眾多創新的雜交植物&#xff0c;例如結合了向日葵的陽光生成能力和豌豆射手的攻擊特性的向日葵豌豆射手&#xff0c;以及擁有寒冰豌豆射…

docker打包 arm32v7/debian 問題總結

1.架構不同 我的宿主是x86 ,但是打包的是arm架構 安裝qemu sudo apt-get install binfmt-support qemu qemu-user-static 然后使用buildx打包 docker buildx build --no-cache --platform linux/arm/v7 -t tdc_post:1.0.1 . --load 保存tar docker save -o tdc_post.tar tdc_p…

金融科技如何運用技術手段實現細顆粒度服務

隨著金融科技的快速發展&#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; 免…