美文网首页linux工具我用 LinuxLinux学习之路
使用LXR搭建Linux Kernel源码索引服务器

使用LXR搭建Linux Kernel源码索引服务器

作者: 网路元素 | 来源:发表于2017-09-10 11:42 被阅读23次

    0.测试环境

    Ubuntu13.10(64位,Kernel为自己编译的3.13.6)

    1.工具

    a.Perl

    在我的Ubuntu里已安装了Perl,版本信息如下:

    This is perl 5, version 14, subversion 2 (v5.14.2) built for x86_64-linux-gnu-thread-multi

    b.ctags

    使用sudo apt-get install ctags进行安装,我现在安装好后的版本信息如下:

    Exuberant Ctags 5.9~svn20110310, Copyright (C) 1996-2009 Darren Hiebert

    c.mysql

    在此处我们选择mysql关系数据库,当然也可以选择sqlite、postgresql、oracle等。

    使用如下命令安装相关工具套件:

    sudo apt-get install libmysqlclient-dev mysql-server

    安装过程会弹出一个界面要求输入MySQL的root用户密码,我们输入一个slamxinu吧。

    d.apache及Perl模块

    在此处我们选择apache作为WEB服务器,当然也可使用lighttpd、Nginx等。

    使用如下命令安装和开启相关工具套件:

    sudo apt-get install apache2

    sudo apt-get install libapache2-mod-perl2

    sudo a2enmod cgi

    e.Glimpse

    在此处我们选择Glimpse作为文本搜索索引,当然也可使用Swish-e。

    安装该工具需要源码编译安装:

    mkdir ~/lxr-related

    cd !$

    wget http://webglimpse.net/trial/glimpse-latest.tar.gz

    tar xvf glimpse-latest.tar.gz

    cd glimpse-4.18.6/

    ./configure

    make

    sudo make install

    f.Perl相关包

    sudo cpan

    该命令会有相关交互操作,全按Enter键默认确认即可。

    当出现cpan[1]>时,我们可以输入如下命令安装相关包:

    cpan[1]> install DBI

    cpan[2]> install DBD::mysql

    (该步有可能执行会失败,我是在配置完LXR后再次执行就可以安装成功。)

    cpan[3]> install File::MMagic

    安装好后输入如下命令退出cpan:

    cpan[4]> quit

    g.LXR

    安装好相关工具后,接下来是重头戏LXR了:

    cd ..

    wget http://sourceforge.net/projects/lxr/files/stable/lxr-2.0.1.tgz

    tar xvf lxr-2.0.1.tgz

    2.配置

    a.LXR

    上面解压LXR后,我们接着进行配置,首先下载我们的Linux源码,这里还是使用我们一直使用的3.13.6版本:

    wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.13.6.tar.xz

    tar xvf linux-3.13.6.tar.xz

    mkdir lxr-2.0.1/linux-source

    mv linux-3.13.6 lxr-2.0.1/linux-source/v3.13.6

    cd lxr-2.0.1/

    ./genxref --checkonly

    先检查下工具有没有安装好,我这边提示是lxr.conf文件没找到,接下来的操作里会处理,还有swish-e没找到,因为它与glimpse是两选一的。

    ./scripts/configure-lxr.pl -vv

    此过程是对LXR的配置,有如下配置项需注意(未说明均按Enter键默认配置,本次配置为single tree):

    --- Directory for glimpse databases? > /home/xinu/lxr-related/lxr-2.0.1/glimpse-DB

    --- Caption in page header? (e.g. Project XYZZY displayed by LXR) > xinu_lxr

    --- Source directory? (e.g. /home/myself/project-tree) > /home/xinu/lxr-related/lxr-2.0.1/linux-source

    --- Version name? > V3.13.6

    --- Database name? > lxr

    --- DB user name? [lxr] > root

    --- DB password? [lxrpw] > slamxinu

    配置完成后再执行如下命令:

    ./custom.d/initdb.sh

    此步骤要求输入连接mysql的root用户密码。

    cp custom.d/lxr.conf .

    ./genxref --url=http://localhost/lxr --version=v3.13.6

    此步产生索引,时间约2个小时左右,具体看机器配置。

    b.Apache

    sudo cp custom.d/apache-lxrserver.conf /etc/apache2/sites-available/

    sudo ln -s /etc/apache2/sites-available/apache-lxrserver.conf /etc/apache2/sites-enabled/apache-lxrserver.conf

    修改当前目录下的.htaccess文件,在如下语句:

    # up to Apache 2.2

    # Allow from all

    # from Apache 2.4

    Require all granted

    后面添加如下内容:

    setHandler perl-script

    PerlHandler ModPerl::PerlRun

    Options ExecCGI

    PerlSendHeader On

    保存后重启Apache:

    sudo apachectl restart

    c.创建文件索引

    LC_ALL="C" glimpseindex -H /home/xinu/lxr-related/lxr-2.0.1/glimpse-DB/lxr/v3.13.6/ /home/xinu/lxr-related/lxr-2.0.1/linux-source/v3.13.6/

    chmod 644 glimpse-DB/lxr/v3.13.6/.glimpse_*

    3.后记

    a.在上面配置完成后,我们在浏览器里输入http://localhost/lxr/source进行访问,此时会有500Internal Server Error错误,此时查看/var/log/apache2/error.log文件,有如下提示:

    [Fri Apr 18 17:21:03.197402 2014] [:error] [pid 24473:tid 140635809965824] Can't locate LXR/Common.pm in @INC (@INC contains: /usr/sbin/lib /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl . /etc/apache2) at /home/xinu/lxr-related/lxr-2.0.1/source line 41.\nBEGIN failed--compilation aborted at /home/xinu/lxr-related/lxr-2.0.1/source line 41.\n

    看到是找不到LXR/Common.pm文件,于是做如下处理:

    修改当前目录(/home/xinu/lxr-related/lxr-2.0.1)的source文件,在use strict;后面添加如下内容:

    use lib '/home/xinu/lxr-related/lxr-2.0.1/lib';

    保存后刷新几次浏览器就可以正常访问了。

    当我们访问http://localhost/lxr/ident?和http://localhost/lxr/search?进行搜索时也会有相同错误,我们修改当前目录下的ident和search文件,做与source相同的修改。

    b.Apache服务在启动时会有如下提示:

    AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message

    解决方法:

    修改/etc/apache2/apache2.conf文件的# Global configuration后面添加如下内容:

    ServerName localhost

    相关文章

      网友评论

        本文标题:使用LXR搭建Linux Kernel源码索引服务器

        本文链接:https://www.haomeiwen.com/subject/oivzjxtx.html