hellwolf 发表于 2006-4-27 08:48:20

EasyLXR 0.1 发布

EasyLXR 0.1 发布

EasyLXR(LXR 0.95)

摘要
====

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,那么
通常需要类似这样的设置:
<Directory /data/lxr>
      Options Indexes FollowSymLinks MultiViews
      AllowOverride All
</Directory>
其中,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=<LXR所使用的数据库名称>

* dbuser,dbpass: 数据库的用户名和密码。
也因此,为了安全性,你需要给/etc/easylxr.conf设置适当的权限。

设置完毕后,你需要运行easylxr-check确保所有设置无误。

3、 添加一个程序的交叉索引
运行easylxr-add命令,你会看到下列帮助信息:
$easylxr-add
Usage: /usr/local/bin/easylxr-add
    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} = '';#<FIXME>
$easylxrconf->{srcversions} = [];#<FIXME>
$easylxrconf->{srcdefaultversion} = '';#<FIXME>
$easylxrconf->{swishdir} = '';#<FIXME>
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} = '';#<FIXME>
$easylxrconf->{cvsmodule} = '';#<FIXME>
$easylxrconf->{lxred_cvs_tags} = [];#<FIXME>
$easylxrconf->{lxred_cvs_default_tag} = '';#<FIXME>
$easylxrconf->{swishdir} = '';#<FIXME>

现介绍与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
即可
页: [1]
查看完整版本: EasyLXR 0.1 发布