fedora16上搭建lxr-1.2.0

来源:互联网 发布:无主之地前传mac汉化 编辑:程序博客网 时间:2024/06/14 04:44

一:需要的文件准备(更详细可参考官方的文件lxr-1.2.0/doc/INSTALL

1.perl版本5.10或者更高

2.ctags版本5或者更好

3.Mysql数据库,版本4.x/5.x

4 apache服务器,版本1或者版本2

5. The Perl File::MMagic module(从INSTALL文件上复制过来的,大概就是一个Perl的模块)

大概就是上面这些文件,更具体的请必须参考官方的文件lxr-1.2.0/doc/INSTALL。

具体的命令就是(拿mysql做例子)yum install mysql mysql-server。大家根据自身具体的情况把依赖程序或者库装上去就行了。


二:. 配置lxr-1.2.0

在进行配置之前,可运行以下命令检查你第一步所需的文件有没有安装全

./genxref --checkonly

假如出现以下类似的情况则说明你所需的文件已经安装好了

    No URL specified - Continuing in checking mode=>  [  OK  ]     Perl     version ... 5.14.2    Parameter 'ectagsbin' not defined - trying to find ctags    'ectagsbin' found at /usr/bin/ctags    Manually update lxr.conf for permanent setting=>  [  OK  ]     ctags    version ... 5.8    Parameter 'glimpsebin' not defined - trying to find glimpse    'glimpsebin' found at /usr/local/bin/glimpse    Manually update lxr.conf for permanent setting=>  Checked:    glimpse   version ... 4.18.5    Parameter 'glimpseindex' not defined - trying to find glimpseindex    'glimpseindex' found at /usr/local/bin/glimpseindex    Manually update lxr.conf for permanent setting=>  Checked: glimpseindex version ... 4.18.5    Parameter 'swishbin' not defined - trying to find swish-e=>  swish-e not found, `which swish-e` returned a null string    genxref stopped without indexing by --checkonly option

(上述检查方法出席官方文件lxr-1.2.0/doc/INSTALL

然后就开始真正的lxr-1.2.0配置了,在lxr-1.2.0目录下运行(注意,需要root权限)

./scripts/configure-lxr.pl -v

按照官方文件的说法,在这个lxr版本中,为了方便用户进行一系列繁琐的配置,所以就写了上面这样一个脚本,交互式地引导用户进行配置。其中选项中绿色或者以大写字幕表示的选项代表默认选项,在不太懂的情况下可以直接按(Enter键)直接跳过。以下逐一列出每一条配置选项(根据你的选择可能略有出入):

1. Configure for single/multiple trees? [S/m] > 

     (这个句子意思不是很懂,为了不误人子弟,不发表见解)选择:S

2. Do you intend to add other trees later? [yes/NO] > 

       (在官方文档上说了,加入选择了single tree模式,以后就不能再添加tree了,所以这个句子是问你是否确定选择single tree模式。如果你在第一个句子上选择了multiple              trees,

3.Web server type? [1.DEFAULT/2.section in default/3.indepedent/4.section in indepedent] > 
(对各种类型不太了解)选择:1


4. The computer hosting the server is described by an URL.The form is scheme://host_name:port--- Host name or IP? [//localhost] > 
输入你电脑的主机名(指能在浏览器访问的,类似www.baidu.com那种主机名),一般情况下,默认选择localhost就行了。

5. Database engine? [MYSQL/oracle/postgres/sqlite] > 
MYSQL数据库,不解释。

6. --- Directory for glimpse databases? > 
(就是指定存放glimpse数据库的地址,这个可以随便给定,只是作为以后产生索引时,存放glimpse相关文件的地方)随便给定:/home/username/glimpse_db


7. templates directory templates/ now protected read-onlyIs your Apache version 2.4 or higher? [YES/no] > 
apache服务器的版本,视你所安装的而定,我的版本是2.2,所以选择no


8. --- Alias name ? (hit return to stop) > 
给你在4中给定的主机名钻则一个别名,意义不大,按Enter键跳过

9. --- Use 'buttons-and-menus' instead of 'link' interface? [YES/no] > 
不太懂,按Enter键直接跳过


10. --- Caption in page header? (e.g. Project XYZZY displayed by LXR) > 
网页上显示的类似标题之类的东西,随便给就行了。给定:at you will


11. Do you need a specific encoding for this tree ? [yes/NO] > 
网页上的编码,选择默认就行了。选择:NO


11. How is your tree stored? [FILES/cvs/git/svn/hg/bk] > 
你的源文件是存放在哪里的,第一个FILES表示在本地,所以选择:FILES


12. --- Source directory? (e.g. /home/myself/project-tree) > 
这个参数很重要,指名你的源代码的根目录是地址,有点类似apache的root directory的味道。可以选择指定位lxr-1.2.0. 


13. Name to display for the path root? (e.g. Project or $v for version) [$v] > 
这里的path root和上面的source dirctory以及$v变量,我觉得一开始是挺不好理解的,不知道究竟有什么不同。其实这个source directory如步驟12所说的,是一个根目录,而这个根目录下面应该有存放你各种源代码版本的子目录(这些子目录才是真正放源代码的地方,由$v变量内容决定),而这个path root如句子中所说,只是一个名字,不是特别重要。根据官方文件给出的建议,可以指定位第12步中的project名,即lxr-1.2.0或者默认的$v(这是个变量,代表版本号)。指定lxr-1.2.0

14. Label for version selection menu?  [Version] > 
第13步中变量$v的内容,随便指定就行了。选择默认Version

15. Version enumeration method? [LIST/file/function] > 
不懂。直接按Enter跳过

16. --- Version name? (hit return to stop) >
不懂。随便指定好了

17.  -- Default displayed version is first in 'range'? [YES/no] > 
上面步驟13不是有一个$v变量,如果你查lxr.conf文件你就会发现这个变量其实类似于一个python中数组结构(或者C++中的map容器),它是以字符串索引数组里面的内容的,而这个range指定了你的索引号。比如你的range内容是("hello", "world"),那么在你在步驟11指定的源代码目录(本文指lxr-1.2.0)就应有hello和world两个文件夹,里面应该存放源代码作为用脚本产生索引(后面会讲到)的依据,同时在你的glimpse数据库文件(步驟6)底下,也会产生相应的文件夹,存放glimpse相关的文件。所以这里的意思是指是否同意在浏览器上默认显示range里面的第一个版本版本(这里指的是hello文件夹里面的版本)


18.  --- Directory to ignore, e.g. CVSROOT or CVS? (hit return to stop) > 
不懂。直接按enter跳过


19. --- Include directory, e.g. /include? (hit return to stop) > 
可能是类似c中#include的功能?不懂。直接按enter跳过。


20.....--- Database name? > db--- DB user name? [lxr] > --- DB password? [lxrpw] > --- DB table prefix? [lxr_] >
上面包含了几步,是指定创建mysql数据库时的资料。按自己的实际情况填写就好了。


三:初始化数据库

执行命令

./custom.d/initdb.sh

然后输入mysql root用户的密码就行了,就会根据上面第20步的内容创建数据库。

在第二大步驟中在custom.d文件中会产生一个lxr.conf配置文件(里面存放的是lxr的所有参数,随时可以改),把它复制到lxr-1.2.0的根目录

 cp custom.d/lxr.conf

然后就可以产生索引了,在产生索引之前,把你的的源代码文件复制到步驟17上讲的各‘range’版本的文件夹(这里hello文件夹)中,然后运行下面的命令

 ./genxref --url=//myPC.example.com/virtroot --version=versionA
其中myPC.example.com就是你的主机名,virtroot就是对应你以后在浏览器上访问时的一个路径名,具体可以参看你的lxr.conf文件。versionA就是指你的range中的版本,这里就是指hello这个版本。所以在本文的例子中就是

 ./genxref --url=//localhost/virtroot --version=hello
上面只是产生在hello文件底下的源代码文件的索引,还有一个命令可以产生所有版本的索引,具体请参考官方文件lxr-1.2.0/doc/INSTALL

四:配置apache服务器(只给出apache版本2的例子,如果你的是apache版本1,请参考官方文件里面给出的做法)

apache服务器配置就简单了,只需把custom.d文件夹中的apache-lxrserver.conf文件拷贝到/etc/httpd/conf.d/目录就行了。


最后为了避免SELinux的干扰,最好加上这句话

chcon --reference /var/www/cgi-bin/ -R LXR_root_directory/
LXR_root_dirctory就是步驟12中的source directory。


到此所有的配置都完成了。在浏览器上输入 http://localhost/virtroot/source(注:除了virtroot要换上你具体的名字外,其它都不要改)



配置是完成,但是总有难免有一些不可避免的问题和麻烦。本人就遇到了一大堆麻烦,例如mysql服务不能成功运行,http服务不能运行,没有访问页面的权限等等。提供几个普遍的发现问题在哪里和怎么解决的办法。

1. 查看/var/log/messages文件,这里基本上对你所遇到的意外的情况都有比较详细的描述,记得参考。此外还有/var/log/目录下具体程序的服务日志,如apache服务器的是/var/log/httpd/error_log,里面有例如你的apache服务器配置文件httpd.conf那里语法不对这类的描述,记得参考。

2. 有时候你对你自己说,“这怎么可能错的”,却的确错了(例如没有页面访问权限)的时候,很可能就是SELinux或者防火墙在作怪。因此,你应该了解以下SELinux的一些基本操作和情况,鸟个这里有非常好的介绍URL


此外,对于各种linux发行版,建议使用以下命令启动服务,比较通用些。

service httpd start

service mysqld start


大概就讲这么多了,希望你能顺利搭建。我搭建之后发现感觉非常之棒,不用再费尽心思去找一个函数或struct结构的定义在哪里,非常之方便。

如果你有看了本文的讲解之外仍然有问题,可以跟我联系,我会尽力帮助你的。我的邮件地址是zczhuohuo@gmail.com微笑













原创粉丝点击