lxr安装__ubuntu下安装lxr-0.10.2(gunavy2009)

学linux驱动,看源码感觉 http://lxr.oss.org.cn挺不错,很清晰方便
 
转载的文章 http://blog.chinaunix.net/uid-26820608-id-3166734.html里面有ubuntu下安装的详细过程,如果感觉链接里面的简单就用里面的方法装,apt-get安装版本默认0.3
 
在Ubuntu下搭建LXR环境步骤:
 
1.安装 apache2, MySQL and exuberant-ctags:

  1. sudo apt-get install apache2 mysql-server exuberant-ctags

在安装mysql-server时,你需要为root 用户创建一个密码才可完成安装
 
2.安装perl library, 确保你可以连接数据库,安装和perl 相关的库:

  1. sudo apt-get install libdbi-perl libdbd-mysql-perl libfile-mmagic-perl libapache2-mod-perl2

3.下载lxr
http://sourceforge.net/projects/lxr/
在lxr 官网下载lxr,我下载的是lxr-0.10.2.tgz,默认下载到本地Downloads 文件夹下。
 
注:
在这里提下,写博客这几天,lxr最新版为lxr-0.11.1,最新版的安装可以说更“简单化了”,准确点的说是更“人性化”,但是把所有的环境配置都弄完了,就是用浏览器访问被禁止(403 Forbidden)不明白是那里的问题,perl代码实在是不想看,看了也解决不了,等高人解决吧,总体来说lxr-0.11.1配置较前面的版本有了很大的提高,文件结构也也规整了很多。
还有就是lxr-0.10.2里面有个bug需要自己手动修改(lxr-0.11.1已经改正),这个bug视perl版本,由perl语法变化导致,如果perl版本较早,没有出现问题就不用改了!
 
4. 获取解压lxr
解压缩lxr-0.10.2.tgz 到 /usr/local/share 改名为lxr:
不熟悉命令,右击解压,改名lxr

  1. cd /usr/local/share
  2. sudo mv /home/beaver/Downloads/lxr-0.9.10.tgz .
  3. sudo tar -zxf lxr-0.9.10.tgz
  4. sudo mv lxr-0.9.10 lxr
  5. cd lxr
5.配置数据库
以下代码中“#”后面的为注释部分,不输入终端
首先登录数据库,使用直接创建的root 用户和密码

  1. mysql -u root -p #Enter the password when asked.

初始化MySQL server, 运行如下命令建立索引数据系统:

  1. CREATE USER 'lxr'@'localhost' identified by 'foo'; #Creates the user "lxr" with the password "foo"
  2. \. initdb-mysql #Initializes the lxr database by creating the tables and give "lxr" user the needed permissions.
注:
为了确保初始化过程正确,需要终端在lxr目录下,即/usr/local/share/lxr 运行以上命令. 否则,在初始化数据库的时候无法找到initdb-mysql脚本。
 
退出数据库

  1. exit
6.安装搜索引擎swish-e
使用开源搜索引擎swish-e,swish-e是完全开源的,也可以使用glimpse,但glimpse是商业的
 
注:
不知道什么原因,glimpse-4.18.6在lxr-0.10.2中索引2.6.xx内核时停止不动,看其生成的数据文件中有一个总是创建了又删除,索引linux-0.11的时候没什么问题,不知道什么原因,在lxr-0.3和lxr-0.11.2上没出现这个问题,本来是用glimpse的,因为没通过又装了swish-e,如果没出问题那个都可以
 
下载安装swish-e:

  1. sudo apt-get install swish-e

6.配置lxr.conf
拷贝lxr根目录templates中的lxr.conf到lxr 根目录
不熟悉命令直接桌面拷贝,以下是命令方式

  1. sudo cp templates/lxr.conf .  #注意最后的“.”表示当前目录
  2. gedit lxr.conf &

在lxr.conf 配置文件中注释掉glimpse相关的行,如下所示:

  1. #, 'glimpsebin' =>‘/usr/local/bin/glimpse'
  2. #, 'glimpseindex' =>'/usr/local/bin/glimpseindex’

现在给出swish-e 的执行路径,可以通过使用 “which swish-e” 命令找到。我系统的swish-e执行路径是:
  1. , 'swishbin' =>'/usr/bin/swish-e‘

注:要确保用户对该文件有执行权限,如果遇到问题,可以通过“chmod”使用户有执行权限
 
配置lxr的 ctags and configuration:
源文件如果是/path/to把这个替换成解压lxr的绝对路径如下

  1. , 'ectagsconf' => '/path/to/lib/LXR/Lang/ectags.conf'
  2. , 'genericconf' => '/path/to/lib/LXR/Lang/generic.conf’

替换后

  1. , 'ectagsconf' => '/usr/local/share/lxr/lib/LXR/Lang/ectags.conf'
  2. , 'genericconf' =>'/usr/local/share/lxr/lib/LXR/Lang/generic.conf‘
定义 server's URL如下:

  1. ,'baseurl' => 'http://localhost/lxr’

添加主机的IP addresses,这样通过网络也可以访问LXR, addresses to URL aliases like the following:

  1. , 'baseurl_aliases' =>[ 'http://17.2.0.193/lxr']

接着指出源码所在的文件夹(下载linux源码),确保通过索引可以找到源码。linux源码可有多个版本,因此可将其放在一个主文件夹下,可包含多个子目录(子目录也可以是ln -s命令创建的源码连接文件夹),如
2.6.30,2.6.34,即每个版本要分别对应一个子目录。例如,我用一个文件夹lxr_source,作为源文件目录,如下所示:

  1. , 'sourceroot' =>'/home/beaver/lxr_source’ //beaver是你的名字

在lxr_source文件夹下,有两个子目录 2.6.30和2.6.34 源码分别在这两个子目录下,需要告诉LXR这些源码并且对他们进行索引,对lxr.conf文件进行如下配置:

  1. , 'range' => [qw(2.6.30 2.6.34)]

接着设置默认版本是 version 2.6.34:

  1. , 'default' => '2.6.34‘

接着配置数据库连接:

  1. , 'dbpass' =>'foo'
  2. , 'dbuser' => 'lxr’

最后设置swish-e索引目录,要和源码目录分开,例如:

  1. , 'swishdir' => '/home/beaver/swish/‘

同时注释掉glimpsedir索引目录:

  1. , 'glimpsedir' => '/path/to/glimpse/databases’
 
7.完成以上操作后,开始索引操作,进入/usr/local/share/lxr 目录执行以下命令:
  1. ./genxref --url=http://localhost/lxr --allversions

这个命令将索引源码目录下的所有版本,如果只对某个版本进行索引,可以执行如下命令:

  1. ./genxref --url=http://localhost/lxr --version=2.6.30

在0.11.1中提供了检测配置命令

  1. ./genxref --url=http://localhost/lxr --checkonly

在步骤3中提到由于perl语法规则的辩护导致lxr中相关perl代码执行出错,步骤8执行是会提示错误,大致内容如下:

  1. ./genxref --checkonly
  2. Global symbol "$wwwdebug" requires explicit package name at lib/LXR/Common.pm line 65.
  3. Global symbol "$tmpcounter" requires explicit package name at lib/LXR/Common.pm line 67.
  4. Global symbol "$wwwdebug" requires explicit package name at lib/LXR/Common.pm line 75.
  5. Global symbol "$wwwdebug" requires explicit package name at lib/LXR/Common.pm line 84.
  6. Global symbol "$wwwdebug" requires explicit package name at lib/LXR/Common.pm line 98.
  7. Global symbol "$tmpcounter" requires explicit package name at lib/LXR/Common.pm line 108.
  8. Type of arg 1 to keys must be hash or array (not hash element) at lib/LXR/Common.pm line 114, near "}}"
  9. Compilation failed in require at lib/LXR/Index.pm line 23.
  10. BEGIN failed--compilation aborted at lib/LXR/Index.pm line 23.
  11. Compilation failed in require at ./genxref line 27.
  12. BEGIN failed--compilation aborted at ./genxref line 27.

在lxr根目录,进入lib/LXR中的Common.pm文件,查找内容并修改,修改内容如下

  1. 修改代码$wwwdebug = 0; 为my $wwwdebug = 0;
  2. 修改代码$tmpcounter = 23; 为my $tmpcounter = 23;
  3. 修改代码foreach my $param (%{keys $HTTP->{'param'}}) { 为foreach my $param (keys %{$HTTP->{'param'}}) {
  4. 可根据错误提示找到错误行位置

8.配置apache2 server
在/etc/apache2/conf.d/目录下创建文件lxrserver.conf

  1. sudo gedit lxrserver.conf &

在文件中添加如下代码

  1. Alias /lxr /usr/local/share/lxr
  2. <Directory /usr/local/share/lxr>
  3.  Options All
  4.  AllowOverride All
  5. </Directory>

复制lxr根目录下.htaccess_cgi为.htaccess
进入 /usr/local/share/lxr 目录,执行如下命令:

  1. sudo cp .htaccess_cgi .htaccess

9.启动apache2

  1. sudo /etc/init.d/apache2 restart

10.查看代码索引

  1. 打开浏览器,输入http://localhost/lxr/source即可浏览索引的源码
推荐参考文档:
1.lxr自带INSTALL文档
2. http://egemengozoglu.com/blog/2011/07/lxr-installation-on-ubuntu-10-10/
3. http://jinnaxu-tju-edu-cn.iteye.com/blog/1335044
4. http://sourceforge.net/projects/lxr/forums/forum/86145/topic/4922249 
5.lxr 下载: http://sourceforge.net/projects/lxr/

你可能感兴趣的:(apache,数据库,ubuntu,perl,.htaccess,compilation)