LXR(http://sourceforge.net/projects/lxr)是一個基於web的源代碼交叉索引工具。EasyLXR對LXR進行再包裝,以使LXR的安裝和部署更加簡單。
准備工作 =======
在安裝前,確保你已經安裝有下列軟件: 1、 新版本的exuberant ctag。可以從http://sf.net/projects/ctags上獲得。 2、 4.x以上的mysql數據庫服務器。 3、 web服務器,推薦使用apache。 4、 Swish-e自由文本查詢工具,可以從http://swish-e.org上獲得最新版本。 5、 Perl5語言環境,perl DBI模塊和mysql的perl DBI模塊。以及下列CPAN 模塊:File::MMagic,Digest::SHA。 6、 cvs和rcs工具。
安裝和設置 ==========
1、安裝文件以root身份運行easylxr安裝目錄下的install.pl腳本: #./install.pl 如果沒有錯誤,運行完畢後你的系統中將增加下列文件和文件夾: /usr/local/bin/easylxr-check /usr/local/bin/easylxr-del /usr/local/bin/easylxr-add /usr/local/bin/easylxr-sync /usr/local/share/easylxr/ /usr/local/share/doc/easylxr/ /etc/easylxr.conf 如果你不想安裝在/usr/local下,你可以自行修改install.pl的 $install_prefix變量。注:如果你不是第一次安裝,那麼/etc/easylxr.conf文件如果已經存在則不會被覆蓋掉。
2、 基本設置用你最習慣的編輯器打開/etc/easylxr.conf文件,你會看到下列內容:
{ basedir => '/usr/local/share/easylxr/', #easylxr install dir lxrwwwdir => '/data/lxr/', #lxr's www root virtroot => '/lxr/', #www virtual root tmpdir => '/tmp/', baseurl => 'http://172.16.4.225', baseurl_aliases => [ 'http://192.168.128.2', 'http://mojave' ], Cssfile => '/css/lxr.css', #it's part of url rather a unix path swishbin => '/usr/bin/swish-e', ectagsbin => '/usr/bin/ctags', templatesdir => '/usr/local//share/easylxr/templates/', #customize your templates if you want genericconf => '/usr/local//share/easylxr/configs/generic.conf', swishconf => '/usr/local//share/easylxr/configs/swish-e.conf', ectagsconf => '/usr/local//share/easylxr/configs/ectags.conf', cvspath => '/bin:/usr/local/bin:/usr/bin:/usr/sbin', dsn => 'dbi:mysql:dbname=lxr', dbuser => 'lxr', dbpass => 'lxr', }
其中需要或者可以修改的變量是: * lxrwwwdir: lxr所使用的本地web根目錄。如果你使用的是apache,那麼通常需要類似這樣的設置: Options Indexes FollowSymLinks MultiViews AllowOverride All 其中,AllowOverride選項必須打開。此值必須以'/'字符結尾。
* virtroot: lxr所在的web虛擬目錄。比如這樣的apache配置: Alias /lxr /data/lxr 那麼,virtroot的值就是'/lxr/'。此值必須以'/'字符結尾。
* tmpdir: lxr所使用的臨時文件目錄。此值必須以'/'字符結尾。
* baseurl: lxr所使用的web服務器的URL基地址。此值不能以'/'字符結尾。
* baseurl_aliases: 如果你的web服務器綁定了多個地址,那麼此變量可以設置為其他URL基地址。變量類型是數組,格式為: ['URL1','URL2',...] 裡面的值不能以'/'字符結尾。
* cssfile: lxr所使用的css樣式表文件的HTTP地址比如/css/lxr.css就是http://www.your.server/css/lxr.css EasyLXR的默認安裝下有一個 /usr/local/share/easylxr/templates/lxr.css 樣式文件可供參考
* swishbin和ectagsbin: swish-e和ctags程序的路徑
* templates: 模板目錄,供自定義使用。
* genericconf, swishconf, ectagsconf: 默認的程序配置文件。
* cvspath: 保留默認設置。
* dsn: 數據庫描述。目前只支持mysql的dbi接口,格式是: dbi:mysql:dbname=
* dbuser,dbpass: 數據庫的用戶名和密碼。也因此,為了安全性,你需要給/etc/easylxr.conf設置適當的權限。
設置完畢後,你需要運行easylxr-check確保所有設置無誤。
3、 添加一個程序的交叉索引運行easylxr-add命令,你會看到下列幫助信息: $easylxr-add Usage: /usr/local/bin/easylxr-add [TYPE] [NAME] valid TYPE is: plain cvs
其中plain的意思是,源代碼為普通文件的形式,每增加一個版本就解壓一個版本。cvs的意思是,源代碼存儲於本地cvs倉庫中(只能是本地的)。
首先以plain類型的為例:假設我們現在要索引gpaint的代碼。那麼首先用easylxr-add添加一個 gpaint的LXR目錄: $easylxr-add plain gpaint ln -s /usr/local/share/easylxr/cgis/* . ln -s /usr/local/share/easylxr/configs/Local.pm . cp /usr/local/share/easylxr/configs/htAccess .htaccess cp /usr/local/share/easylxr/configs/lxr.conf.plain lxr.conf /usr/local/share/easylxr//utils/initdb-mysql.pl toUCh .easylxr.plain DO REMEMVER TO CONFIG YOUR /var/www/lxr/gpaint/easylxr.conf NOW!
最後它提醒我們,要配置一個文件/var/www/lxr/gpaint/easylxr.conf。打開後,其內容為: $easylxrconf->{name} = 'gpaint'; $easylxrconf->{longname} = 'gpaint'; $easylxrconf->{incprefix} = []; $easylxrconf->{srcdir} = '';# $easylxrconf->{srcversions} = [];# $easylxrconf->{srcdefaultversion} = '';# $easylxrconf->{swishdir} = '';# die "CONFIG YOUR easylxr.conf first!";
其中: * incprefix: c/c++語言中的include的本地搜索路徑,比如源代碼根目錄下有一個include目錄,那麼你可以設置 $easylxrconf->{incprefix} = ['include'];
* srcdir: 源代碼的目錄位置,可以是絕對地址,也可以是相對地址,如果是相對地址,那麼相對的目錄就是本easylxr.conf所在目錄。在這裡我們將其設置為'src'。也就是,我將我們的代碼解壓在 /var/www/lxr/gpaint/src下。
* srcversions: 源代碼的所有版本,類型為數組。每個版本的代碼可以在上面配置的srcdir下找到,並且對應的目錄名就是版本名。比如我們有gpaint-0.2.1和gpaint-2-0.2.3,那麼設置 $easylxrconf->{srcversions} = ['gpaint-0.2.1','gpaint-2-0.2.3'];
* srcdefaultversion: 默認的版本
* swishdir: swish-e索引文件的保存地址,也可以是相對或絕對地址。在這裡我們設置為'src/swishdir'。
設置完畢後把最後一行的die語句刪除即可。現在先訪問http://yourserver/lxr/gpaint/測試一下情況,如果一切正常,那麼就可以開始更新索引了。更新命令: $easylxr-sync gpaint 一切順利後,再訪問http://yourserver/lxr/gpaint/,這時索引和自由搜索功能就都可以正常工作了。
再簡要介紹一下cvs類型的索引:同樣是使用easylxr-add添加,類型參數為cvs: $easylxr-add cvs cvs_test 運行後得到的easylxr.conf如下: $easylxrconf->{name} = 'cvs_test'; $easylxrconf->{longname} = 'cvs_test'; $easylxrconf->{incprefix} = []; $easylxrconf->{cvsroot} = '';# $easylxrconf->{cvsmodule} = '';# $easylxrconf->{lxred_cvs_tags} = [];# $easylxrconf->{lxred_cvs_default_tag} = '';# $easylxrconf->{swishdir} = '';#
現介紹與plain類型不同的地方,其他不變: *cvsroot: cvs的根倉庫(包含有CVSROOT目錄)
*cvsmodule: 需要索引的cvs模塊。可以是'.',代表整個CVS根倉庫。
*lxred_cvs_tags: 需要關注的cvs標簽,數組類型。使用head或者 1.2這樣的值作為這個數組的元素都不是好注意,因為如果你有些CVS概念的話會知道head是一直在變化的,而每個文件都取1.2版本也不一定能配合良好。所以正確的取值是一組有意義的cvs標簽,比如REL_1,REL_1_FIX 之類的。
*lxred_cvs_default_tag: 默認關注的cvs標簽。
配置完畢後。更新索引的方法不變。
4、 刪除一個程序的交叉索引用easylxr-del命令,參數為已經建立過的LXR目錄即可。刪除是不可逆的,切記。
卸載 ====
運行 #./install uninstall 即可