linux 下使用 LXR 看代码

来源:互联网 发布:windows server pack 编辑:程序博客网 时间:2024/05/01 08:50
  这是以前做过的配置,有些淡忘了,不过为了下次不再忘记,记录下来以备下次再浪费时间到网络上搜索。
  LXR 官方解释:LXR (formerly "the Linux Cross Referencer") is a software toolset for indexing and presenting source code repositories. LXR was initially targeted at the Linux source code, but has proved usable for a wide range of software projects. lxr.linux.no is currently running an experimental fork of the LXR software.   可以直接在IE拦中输入lxr进入网站,lxr刚开始主要是为了面向查看内核源码的方便而建立的一个项目,不过现在它的应用已经很普遍了,可以在国外的很多开放源码查看网站中看到它的影子。
  系统:ubuntu7.10,依赖apache1/2(版本不限)、perl5、glimpse、genxref
  安装apache:
sudo apt-get install apache2 libapache2-mod-perl2
sudo apt-get install libcgi-simple-perl libcgi-ajax-perl libhtml-parser-perl libtemplate-perl

  安装lxr和glimpse:
aptitude install lxr aptitude install glimpse
  同理genxref都可以在ubuntu的软件包管理中安装,也可下载源码安装。
  配置apache2:
touch /etc/apache2/sites-available/lxr
cd /etc/apache2
ln -s sites-available/lxr sites-enabled/lxr

vi sites-available/lxr 输入以下内容:
  1. # Linux Cross Reference Stuff
  2. # /usr/share/lxr is the home of lxr installed
  3. Alias /lxr /usr/share/lxr/
  4. <Directory "/usr/share/lxr">
  5. Options All
  6. AllowOverride All
  7. </Directory>
  配置lxr:
touch /usr/share/lxr/http/.htaccess
vi /usr/share/lxr/http/.htaccess
输入下内容
  1. <files ~="" (search|find|source|diff|ident)$="">
  2. SetHandler cgi-script
  3. </files>

  好了,现在我们可以生成要查看的代码了,因为lxr支持符号链接,所以不必将源码放进lxr指定的目录中,只需要建立符号链接就可以用了,如我们要查看的源码文件目录为/opt/source/linux-2.6.23,lxr指定的源目录为/usr/share/lxr/sources,为linux-2.6.23建立符号链接: ln -s /opt/source/linux-2.6.23 /usr/share/lxr/sources/2.6.23
  在该目录下建立查看代码的信息文件 versions 和defversion,versions中可以输入多个文件名称,每个名称占用一行,并且该名称和该目录中的源码目录名称对应,对于我的就需要输入2.6.23就可以了;defversion为lxr默认显示的源码,同样为versions中的其中一项即可,同样这里只输入2.6.23。
  另外为lxr建立数据索引文件的目录,模认为为/usr/share/lxr/databases,进入/usr/share/lxr/sources目录,为2.6.23生成索引信息:
genxref 2.6.23
glimpseindex -H . 2.6.23

  为了方便管理,在/usr/share/lxr/databases中为2.6.23建立一个指定的目录为2.6.23,将刚刚生成的索引文件移到该目录中:
mv fileidx xref ../databases/2.6.23/
mv *.glimpse* ../databases/2.6.23/
chmod 777 ../databases/2.6.23/*
chmod 777 ../databases/2.6.23/.glimpse*

  上面的修改权限是为了省事,但是为了安全,自己可以修改成期望的权限,不在赘述。
最后修改lxr的配置文件lxr.conf文件,如果lxr是默认安装,即安装到/usr/share/lxr目录,那么该文件就不需要做改动,否则样对该配置文件修改,主要是上面的versions、defversion、databases、sources的目录,以及lxr的http目录中的文件路径信息,比较简单,看一下就能明白,不再解释。
  最后启动apache服务器: /etc/init.d/apache2 restart
  查看代码,在IE栏输入http://localhost/lxr/http/blurb.html
  最后,若无法看到代码而且apache的日志访问中说明的是权限问题的时候,检查下文件的权限,包括源码的权限,然后修改使apache有访问的权限就可以了。

附注:在fedora中apache的配置文件为/etc/apache2/httpd.conf文件,将上面的sites-available/lxr文件内容放在httpd.conf文件中;RedHat9.0同理,但可能会报出关于无法找到perl的一个语言模块的问题,只需要在rpmfind.net中找到该模块的rpm包,安装后即可使用。


参考文档:http://www.orangespike.ca/?q=node/77
(这个文档直接点击总是提示Page Not Found,但是在地址栏中刷新一下就可以用,不知道什么原因)


原创粉丝点击