ubuntu 上配置lxr

Linux Cross-Reference 是一个源代码交叉引用的工具,具体介绍请看 LXR 主页

所有命令在root权限下执行(即前面加上sudo)

1. 下载lxr 的源代码
    apt-get source lxr-cvs

2. 将 lxr 解压缩为 /var/lib/lxr/

   建立  /var/lib/src/ 目录,用以存放 源代码
   将内核源代码解压到/var/lib/src/ , 以版本号命名,比如 2.6.17。可以放置多份不同
   版本的源代码。  新建文件/var/lib/src/versions , 将各个版本号列入其中。
                                                              
   建立 /var/lib/swish-e/ 目录 ,用以存放 swish-cache

3. 安装 ctags
   apt-get install ctags

4. 安装 mysql 4.1  (必须是 4.x )
   apt-get install mysql-server-4.1 mysql-client-4.1
  

5. 安装 apache 及 mod_perl  (必须是 apache ,而非 apache2)
   apt-get install apache libapache-mod-perl

6.  安装  swish-e , 用于文本搜索
    apt-get install swish-e

7. 安装 Perl File:MMagic 模块
    apt-get install  libfile-mmagic-perl

8. mysql环境的搭建,首先需要初始化系统表
   mysql_install_db -u root
   然后启动mysql服务器
   mysqld_safe -u root &
   最后需要创建lxr所需要的数据库和数据表,切换到 /var/lib/lxr/ 目录,
   以root 身份运行  mysql
   mysql -u root -p
   当数据库提示输入密码时,直接按回车即可,在mysql的提示符下输入
    \.  initdb-mysql   //这里initdb-mysql要全路径才行例如在/root/lxr/initdb-mysql
   以建立数据库表

9.  运行:
   cp  /var/lib/lxr/Local.pm  /usr/lib/perl5/
   cp -r /var/lib/lxr/lib/LXR   /usr/lib/perl5/

   mv    /var/lib/lxr/templates/*    /var/lib/lxr/


10 编辑 /var/lib/lxr/lxr.conf
     1)注释掉所有带 glimps 的行
     2)  将 'swishbin' =>  "/some/path/to/exectuable" 改为
             'swishbin'=> '/usr/bin/swish-e'

    3) 将  baseurl 设为 'http://localhost/lxr/'
         将  virtroot 设为 '/lxr'
    4)  注释掉 basealias
    5)  找到 readfile('src/versions'), 将其修改为 readfile('/var/lib/src/versions')
         将 default 设为默认的源代码版本号(比如 2.6.17)
         将 sourceroot  设为 /var/lib/src/
    6) 将 swishdir 设为 /var/lib/swish-e/
    7) 将'genericconf' => '/path/to/lib/LXR/Lang/generic.conf',
         改为'genericconf' => '/var/lib/lxr/lib/LXR/Lang/generic.conf',
   8)将'ectagsconf' => '/path/to/lib/LXR/Lang/ectags.conf',
         改为'ectagsconf' => '/var/lib/lxr/lib/LXR/Lang/ectags.conf',

11. 生成索引
    运行 : /var/lib/lxr/genxref  --url=http://localhost/lxr/ --version="2.6.17"
     其中 2.6.17 是内核版本号(与 /var/lib/src/ 下的目录相一致)。也可以使用 --allversions
     选项生成 /var/lib/src/ 目录下所有源代码的索引。

     由于我之前直接通过apt-get install lxr-cvs下载过lxr,因此需要将lxr.conf拷贝到/etc/lxr-cvs/中,
      
      (注意: 这个操作要花非常非常长的时间)

12. 配置 apache 服务器
     打开 /etc/apache/httpd.conf ,写入
   Alias /lxr /var/lib/lxr
   <Directory /var/lib/lxr>
    Options All
   AllowOverride All
   </Directory>
  

     重启apache 以后访问  http://localhost/lxr/source 即可访问源代码交叉索引。
立即停止:apachectl -k stop
优雅重启:apachectl -k graceful
立即重启:apachectl -k restart
优雅停止:apachectl -k graceful-stop