viktor's lab & notes
转载自http://blog.csdn.net/xulai1001/article/details/6936056
我参考了上面的文章,加了一些内容。整理了一下原作者的配置顺序
我的环境:
ubuntu 10.10 kernel 是 2。6。35
配置步骤:
(1)安装lxr。我直接用apt-get
安装glimpse
去这里下载glimpse: http://webglimpse.net/trial/glimpse-latest.tar.gz
下载后按下面方式安装
cd glimpse-4.18.6/
./configure
make
make install
- note:lxr会安装apache2,perl,和PostgreSql。这些都会自动配置好。
- 不过还得自己安装这下面两个东西:
- libapache2-mod-perl2:让apache能运行perl脚本的插件,装好后在/etc/apache2/mods-*目录里 (用apt-get installlibapache2-mod-perl2安装)
- glimpse:需要先装flex。(用apt-get)或者在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 (v是个变量,这个配置文件的头部有定义)一定是源码的根目录。这里如果什么都不填,网站上source页面就会把你的根目录爆出来
- srcrootname: bwcpn-Linux 这个随便填。
- # The database files go here.
- dbdir: /usr/share/lxr/databases/$v db文件的路径。这里把g文件和xref文件放在一起了
- # Glimpse can be found here.
- glimpsebin: usr/local/bin/glimpse glimpse程序的路径。自己安装的时候在usr/local/bin中,不在默认的bin/glimpse中
后面的正则表达式不用管
(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)$>;
- 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 DocumentRoot 不是根么?这里不行提示不存在这个根?ident
- DirectoryIndex blurb.html
就可以了
(7)重启apache2
- sudo /etc/init.d/apache2 restart
打开localhost,大功告成。
note:最常用的identifier search和file search很好用,不过diff markup和freetext search还是有些问题。也许是glimpse的使用不当。