zoukankan      html  css  js  c++  java
  • [内核分析]LXR安装心得(0.9.3版)RH8.0测试通过

    一、下载
    (1)LXR
    现在LXR已经成为sourceforge的一个project,所以可以到lxr.sourceforge.net上找到最新的lxr代码(当然也就是源代码了)。

    (2)perl的DBI
    http://search.cpan.org/~timb/DBI/

    (3)glimpse
    http://webglimpse.net/download.php
    http://webglimpse.net/trial/glimpse-4.17.2-linux-i386.tar.gz

    (4)Apache2.0.53
    http://httpd.apache.org/download.cgi

    Apache的mod_perl插件,以支持perl脚本的cgi解释
    http://perl.apache.org/download/index.html

    Apache的mod_auth_mysql插件:
    http://sourceforge.net/projects/modauthmysql/
    http://voxel.dl.sourceforge.net/sourceforge/modauthmysql/mod_auth_mysql-2.8.1.tar.gz

    注意:我们用的是Apache2,并且必须是2.0.47以上版本。mod_perl2.0对应Apache2,mod_perl1.0对应Apache1.3,不要下载错误的版本

    (5)MySQL4.1.10
    http://www.mysql.com
    http://dev.mysql.com/get/Downloads/MySQL-4.1/MySQL-server-4.1.10-0.i386.rpm/from/http://mirror.services.wisc.edu/mysql/
    http://dev.mysql.com/get/Downloads/MySQL-4.1/MySQL-client-4.1.10-0.i386.rpm/from/http://mysql.ihostunit.com/
    http://dev.mysql.com/get/Downloads/MySQL-4.1/MySQL-devel-4.1.10-0.i386.rpm/from/http://mysql.ihostunit.com/
    http://dev.mysql.com/get/Downloads/MySQL-4.1/MySQL-Max-4.1.10-0.i386.rpm/from/http://mirror.services.wisc.edu/mysql/
    http://dev.mysql.com/get/Downloads/MySQL-4.1/MySQL-bench-4.1.10-0.i386.rpm/from/http://mysql.ihostunit.com/
    http://dev.mysql.com/get/Downloads/MySQL-4.1/MySQL-embedded-4.1.10-0.i386.rpm/from/http://mysql.ihostunit.com/
    http://dev.mysql.com/get/Downloads/MySQL-4.1/MySQL-shared-4.1.10-0.i386.rpm/from/http://mysql.ihostunit.com/
    如果是从3.x升级还需要下载这个(上面的shared就不要了):
    http://dev.mysql.com/get/Downloads/MySQL-4.1/MySQL-shared-compat-4.1.10-0.i386.rpm/from/http://mysql.ihostunit.com/

    (6)ctags包,一般都有。

    二、安装前的准备
    (1)DBI
    解压后:
        perl Makefile.PL
        make
        make test
        make install

    (2)glimpse
    ./configuration
    make
    将文件glimpse和glimpseindex拷贝到/bin或/usr/bin下

    (3)Apache2.0.53:
    ./configuration
    make
    make install

    这样Apache2就装至/usr/local/apache2下了。
    这个版本新特点:
    1.与旧版的Apache的Modules有些不兼容,所以像perl、php、auth_mysql要重新编译过,或都把相应的LoadModule注释掉。
    2.整合了大部分Modules,所以以前在httpd.conf中要写的LoadModule都不用了。

    (4)Apache的mod_perl插件:
        perl Makefile.PL
        make
        make test
        make install

    (5)mod_auth_mysql插件:
    /usr/local/apache2/bin/apxs -c -L/usr/lib/mysql -I/usr/include/mysql -lmysqlclient -lm -lz mod_auth_mysql.c
    /usr/local/apache2/bin/apxs -i mod_auth_mysql.la

    一般来说,这样就可以了。更详细的安装请参考解压后的BUILD

    (5)MySql的安装:
    由于是RPM,所以安装还是方便的:
    rpm -Uvh *.rpm

    参考文章:http://www.cnblogs.com/huqingyu/archive/2004/12/08/74331.html
    这里还有数据库的备份等,虽然是windows下的,但命令差不多,有参考价值。

    三、安装
    1. 本例中使用的是/usr/local/lxr目录作为LXR的根目录。
    #tar zxvf lxr-0.9.3.tar.gz -C /usr/local ;将lxr解压到/usr/local/lxr下
    #cd /usr/local/lxr

    #mv Local.pm diff fixhashbang ident find search source templates ;将web相关部分移到templates下
    #mv templates http   ;http目录,用于存放WEB部分

    #ln http/Local.pm /usr/lib/perl5/site_perl -s
    #ln http/lxr.conf . -s ;为web部分和工具部分都需要用的文件建符号连接
    #mv lib/LXR /usr/lib/perl5/site_perl/LXR   ;将自定义的perl库文件拷贝到perl/mod_perl使用的缺省库文件目录中

    #mkdir src
    #cd src
    #mkdir glimpse

    #vi versions  ;编辑/usr/local/lxr/src/versions文件,添加一行:2.4.20
    #ln /usr/local/src/linux-2.4.20 2.4.20 -s

    #vi versions  ;编辑/usr/local/lxr/src/versions文件,添加一行:0.11
    #ln /usr/local/src/linux-0.11 0.11 -s


    2. 修改lxr.conf
    缺省的lxr.conf已经在/usr/local/lxr/http/下了,并在/usr/local/lxr/下有个连接。

    'glimpsebin'变量,改为glimpse命令的位置,用which glimpse可以找到(如果装了的话),我这里为/usr/bin/glimpse;
    注释掉所有与swish-e相关的变量定义
    'genericonf' => '/usr/lib/perl5/site_perl/LXR/Lang/generic.conf'
    'ectagsconf' => '/usr/lib/perl5/site_perl/LXR/Lang/ectags.conf' (这行INSTALL中少了LXR)
    'baseurl' => 'http://192.168.0.1/lxr',这个IP当然不是通用的(举个例子而已,实际装时根据本机情况适当修改)
    'range' => [ readfile('/usr/local/lxr/src/versions') ],用绝对路径,主要是为了方便;
    'default' => '0.11',我自己定义的缺省的代码树名;
    #template used for headers and footers下的所有路径都弄成绝对路径,如:
    'htmlhead' =>'/usr/local/lxr/http/html-head.html'(紧接着的几个也要改掉)

    'sourceroot' => '/usr/local/lxr/src' (注意,最后无/)
    'sourcerootname' => 'Linux-$v'   ;它将显示在缺省的最高级源码目录上
    'glimpsedir' => '/usr/local/lxr/src/glimpse' (注意,最后无/)

    其余你看有需要再改。

    3.修改apache的httpd.conf
    保证装了mod_perl的时候,在httpd.conf中添加以下几行:
    Alias /lxr/ /usr/local/lxr/http/
    <LOCATION /lxr/>
    AllowOverride None
    SetHandler perl-script
    PerlHandler ModPerl::Registry
    Options +ExecCGI
    </LOCATION>
    目的:能使Perl文件可以在网页中显示其执行结果。
    测试:写一个很小的perl文件,比如1.pl,内容为:
    #!/usr/bin/perl
    print "Content-type:text/plain";
    print "\n\nTest";
    并给它所有人的执行权限:chmod guo+x 1.pl
    在网页中看1.pl,如果显示Test则说明mod_perl装好了。如果显示整个文件内容,则说明mod_perl没装好。
    如果没有mod_perl,可以用SetHandler cgi-script代替perl-script,一样可以用,PerlHandler就不用了。 (没试过)

    如果只让source等文件用perl执行,其它文件不允许用perl执行,可以配成如下形式:
    Alias /lxr/ /usr/local/lxr/http/
    <Directory /usr/local/lxr/http/>
    AllowOverride None
    Options FollowSymLinks
    <Files ~  "(search|source|ident|diff|find)$">
    SetHandler perl-script
    PerlHandler Apache::Registry
    Options +ExecCGI
    PerlOptions +ParseHeaders
    </Files>
    </Directory>


    4. 初始化MySQL数据库
    运行mysql,在提示符下运行"\. initdb-mysql"。这样就建好了lxr用户,建好了lxr数据库可其中一系列表格,并让lxr能全权访问lxr数据库,但没有访问其他库的权限,而且,也不用密码。

    5. 建索引:

    #cd /usr/local/lxr/
    #./genxref --version=2.4.20 --url=http://192.168.0.1/lxr
    #./genxref --version=0.11 --url=http://192.168.0.1/lxr

    这期间,会在/usr/local/lxr/src/glimpse下建两个目录,为0.11和2.4.10,分别放glimpseIndex自动创建的文件(以.glimpse开头),这个过程在我的机器上用了3个小时,其目的就是在MySQL中添东西。如果已经做过索引了,它就只关心那些修改过的或新的文件,速度就快多了。这个过程如果中断了,最好清空数据库重新来过,否则可能会有错误。

    6. 修改权限:
    最简单的办法就是把/usr/local/lxr/http下所有的文件都改成apache的属主。
    chmod命令使用可以参考:http://www.cnblogs.com/huqingyu/archive/2005/02/20/106392.html

    #cd /usr/local/lxr/
    #chown apache.apache http -R

    7.启动:
    重启mysql和httpd,然后访问http://192.168.0.1/lxr/source/就可以了。

    #apachetrl restart

    比较奇怪的是,因为这个cgi允许用类似目录一样的形式(source/)来访问,所以,如果服务器端有更新,浏览器端仍会使用老的页面,refresh也没用。这时只有清空本地cache了。

    8.其它:
    1) update
    我还没有遇到更新的情况,但估计2.4.18升级到2.4.19时比较麻烦,因为目录名变了,而数据库里存的仍然是老名字,glimpse也用的老名字,所以更新可能需要重建一次数据索引,就是重新来一次3.initialize。
    但如果仅仅是添加新的源代码树,则只需要修改src/versions文件,按照kernel/2.4.18的模子再在src下建一个目录树,并一样执行一次3.2、3.3、3.4就可以了。为了方便,我把3.x做成了两个脚本。

    2).bugs
    应该在源代码树的组织上。如果同时要索引kernel-2.4.18和kernel-2.2.19,逻辑上好像应该在kernel下建另一个连接指向2.2.19的代码,但实际上应该建一个kernel2与kernel并列在src目录下。
    更新时看样子也会有问题,因为数据库里记录了2.4.18的目录信息,glimpse里也记录了2.4.18。重建实在耗时。
    不知谁有更好的配置方案,尽管这做不了博士课题。

    可能哪一步还不对,请再参考别的文章:
    http://www.oldlinux.org/cgi-bin/LB5000XP/topic.cgi?forum=1&topic=72&show=0

    我的环境:
    OS:windows2003,装Vmware虚拟机运行RedHat Linux8.0
    CPU:C2.53
    内存:512M

  • 相关阅读:
    pl/sql 编程!
    oracle中的常用函数、字符串函数、数值类型函数、日期函数,聚合函数。
    oracle 相关查询和非相关查询,oracle 去除重复数据,以及oracle的分页查询!
    初识 oracle!
    分页查询。
    利用ajax技术 实现用户注册。
    quartz CronExpression
    SQL 面试题
    什么是HTTP协议?常用的状态码有哪些?
    聚集索引与非聚集索引
  • 原文地址:https://www.cnblogs.com/huqingyu/p/106080.html
Copyright © 2011-2022 走看看