ubuntu 10.10 LXR配置 (with note)

ref: http://damocles.blogbus.com/tag/lxr/

Linux Cross Reference工具在很多网站上都有,不过很多都是国外的网站总是上不去,或者没有适合自己的版本。还是自己配置一下的好。而且可以举一反三,配好了LXR,还可以搞个FXR,XEN-XR什么的。很麻烦但是很有用。

我参考了上面的文章,加了一些内容。整理了一下原作者的配置顺序

配置步骤:
(1)安装lxr。我直接用新立得

note:lxr会安装apache2,perl,和PostgreSql。这些都会自动配置好。
不过还得自己下这两个东西:
libapache2-mod-perl2:让apache能运行perl脚本的插件,装好后在/etc/apache2/mods-*目录里
glimpse:需要先装flex。(渣ubuntu连flex都没有)然后在http://webglimpse.net/download.php 下载以后安装。

(2)lxr的安装目录为 /usr/share/lxr/,我们把需要索引的源代码放到(链接到)/usr/share/lxr/source/下,目录名字为版本号,如2.6.35

然后新建文件/usr/share/lxr/source/versions,文件中写入2.6.35。

创建文件/usr/share/lxr/source/defversion,意思为默认版本,我们写入2.6.35

note:目录名字可以任取,然后写入versions 即可。

(3)建立索引目录,新建目录/usr/share/lxr/databases,然后在databases目录下创建目录2.6.35

(4) 生成数据文件xref和glimpse索引文件

cd /usr/share/lxr/source/
sudo genxref 2.6.35/
sudo glimpseindex -H . 2.6.35

note: 长时间等待,因为要扫描文本处理。数据和索引加起来差不多上G 最后还要把生成的所有文件(xref, fileidx, .g**的隐藏文件)挪到database文件夹去,修改权限,让所有用户可读。**

(4.5) 实际使用中 发现lxr在查找源码时使用的相对路径,但是我的glimpseindex 4.1版本 生成的.glimpse-filenames索引是按绝对路径来的。结果就成了这样

. 查询:viktor-Linux/arch/x86/aaaaa.c
.warning: can' t find /usr/share/lxr/source/2.6.35/usr/src/linux-source-2.6.35/arch/x86/aaaaa.c


一大串,而且把代码的真实路径(不是链接的路径)爆出来了

解决:

sudo sed -i 's/\/usr\/src\/linux-source-2.6.35\///' .glimpse_filenames

用sed把.glimpse-filenames这个文件编辑一下,把绝对路径去掉就行了

sed的正则里面一堆转义字符看起来好别扭……虽然一般的shell脚本,用单引号就可以避免转义,但是sed有自己的特殊字符,比如斜杠,所以还得转义一次。调了好半天

(5)配置LXR,主要修改的文件是/usr/share/lxr/http/lxr.conf

这一步很关键。配不好各种出错 要修改的5处:

# Define the base url for the LXR files.
baseurl: http://localhost/lxr/http/
# The source is here.
sourceroot: /usr/share/lxr/source/$v 一定是源码的根目录。这里如果什么都不填,网站上source页面就会把你的根目录爆出来
srcrootname: viktor-Linux 这个随便填。
# The database files go here.
dbdir: /usr/share/lxr/databases/$v glimpse文件的路径。这里把g文件和xref文件放在一起了
# Glimpse can be found here.
glimpsebin: /usr/share/glimpse/ glimpse程序的路径。自己安装的时候渣技术错放到share目录去了……应该是在/usr/bin的
#glimpsedir: /usr/share/lxr/databases/$v 不是glimpsedir……


后面的正则表达式不用管

(6)配置apache2,新建文件 /etc/apache2/sites-available/lxr,写入以下代码

Alias /lxr /usr/share/lxr
<Directory /usr/share/lxr>
Options All
AllowOverride All
</Directory>
注:这是让client访问apache2下localhost/时直接访问到/usr/share/lxr,以隐藏lxr的真实目录。


然后执行 sudo ln /etc/apache2/sites-available/lxr -s /etc/apache2/sites-enabled/lxr 把它链过去

创建文件/usr/share/lxr/http/.htaccess ,写入以下代码:

<Files ~ (search|source|ident|diff|find){1}gt;
SetHandler cgi-script
</Files>
注:这是为了让perl起作用,让apache2的mod_perl来执行http目录下的perl文件,而不是下载这个文件。


(6.5)修改apache主页。 想让localhost一打开就进入identifier search页面,修改/etc/apache2/sites-enabled/000-default文件。

加入

DocumentRoot "/usr/share/lxr/http/ident"
DirectoryIndex blurb.html


就可以了

(7)重启apache2

/etc/init.d/apache2 restart


打开localhost,大功告成。


note:最常用的identifier search和file search很好用,不过diff markup和freetext search还是有些问题。也许是glimpse的使用不当。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值