由于项目需求,需要搭建一套代码索引环境,经过网上查找,了解可以使用LXR (the Linux Cross Referencer)来做,同时网上有很多搭建方法,我尝试学习,一步一步搭建环境,在这个过程中,遇到一些问题,记录下来,分享给大家,方便大家顺利完成LXR 搭建。
环境:Ubuntu 10.10,新安装的系统,具体搭建步骤如下(整个过程中基本都需要root权限):
1.安装apache2
sudo apt-get install apache2
2.安装Glimplse
. Glimplse
# wget http://webglimpse.net/trial/glimpse-latest.tar.gz
# tar xvzf glimpse-latest.tar.gz
# cd glimpse-4.18.6
# ./configure
# make
我在make 的时候报下面的错
make[1]: flex: Command not found
make[1]: *** [lex.yy.c] Error 127
make[1]: Leaving directory `/usr/local/src/glimpse-4.18.6/dynfilters’
make: *** [build-sub] Error 2
在编译之前,首先看看你的机器上是否已经安装了flex,因为编译glimpse的时候需要这个软件。如果没有的话,那么进行安装:
sudo apt-get install flex
执行
# make
# sudo make install
3.安装lxr
sudo apt-get install lxr
4.
对文件做映射
在/etc/apache2/httpd.conf 在里面添加以下内容:
Alias /lxr /usr/share/lxr
<Directory /usr/share/lxr>
Options All
AllowOverride All
</Directory>
这样可以达到http://localhost/lxr/ =>/usr/share/lxr
5.
在/usr/share/lxr/http下创建文件 .htaccess, 并写入一下内容:
<Files ~ (search|source|ident|diff|find)$>
SetHandler cgi-script
</Files>
6.
启动apache2
sudo /etc/init.d/apache2 restart
7.
下载linux 源代码
linux内核源码下载地址
http://www.kernel.org/,我下载了2.6.39.4版本的linux 源码,默认下载到/home/beaver(beaver是我的用户名,根据大家的机器而定)/Downloads,解压后为linux-2.6.39.4
创建/usr/share/lxr/source/XX 目录 (XX为版本号)
mkdir /usr/share/lxr/source/2.6.39.4
然后在/usr/share/lxr/source/2.6.39.4下创建linux符号连接
ln -s /home/beaver/Downloads/linux-2.6.39.4 /usr/share/lxr/source/2.6.39.4/linux
(源码地址)
8. 创建/usr/share/lxr/source/versions 文件,这里记录所有要看的版本,内容是
2.6.39.4
2.6.22(可有可无)
要保证2.6.39.4 =>/usr/share/lxr/source/2.6.39.4
创建/usr/share/lxr/source/defversion 文件,这里记录缺省要看的版本,内容是
2.6.39.4
之所以是这两个文件,见/usr/share/lxr/http/lxr.conf里的相关设置
9.
建立索引
cd /usr/share/lxr/source/2.6.39.4/
生成关键字交叉索引数据库
sudo genxref linux
接下来要等待一段比较长的时间,因为它要扫描文件。这样会在当前目录生成fileidx和xref
接下来,生成freetext交叉索引数据库:
sudo glimpseindex -H /usr/share/lxr/source/2.6.39.4/ /usr/share/lxr/source/2.6.39.4/linux
(需要等待一段时间)
之所以是这个目录(/usr/share/lxr/source/2.6.39.4/),见/usr/share/lxr/http/lxr.conf里的相关设置(database项)
10.
修改属性,使任何人都可以读取改文件
sudo chmod +r -R /usr/share/lxr/source/2.6.39.4/*
sudo chmod +r /usr/share/lxr/source/2.6.39.4/.glimpse*
(注意:这句命令必须执行,否则在 file search 的时候会出现警告:Warning: Could not open .glimpse_filenames)
11.
启动apache,查看源码
sudo /etc/init.d/apache2 restart
http://localhost/lxr/http/blurb.html //成功查看源码
阅读的时候可以看到页面顶部有
~ [ source navigation ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~
source navigation是用户查看页面的界面
identifier search是查找某个变量名、结构名、函数名的界面
freetext search是查找任何字符串的界面
file search查找某个文件
参考文件:
http://blog.sina.com.cn/s/blog_6c6d405f0100oq6l.html
http://www.linuxsir.org/bbs/showthread.php?t=246594
http://linux.chinaunix.net/techdoc/system/2006/12/21/946450.shtml
http://yp.oss.org.cn/software/show_resource.php?resource_id=1044
http://wenku.baidu.com/view/7d3c0471f242336c1eb95e13.html
收藏:
http://blog.csdn.net/fengyanhui/article/details/6320117