导读:
摘要====
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目录即可。删除是不可逆的,切记。
本文转自
http://www.lslnet.com/linux/docs/linux-5147.htm
摘要====
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目录即可。删除是不可逆的,切记。
本文转自
http://www.lslnet.com/linux/docs/linux-5147.htm