在自己的计算机上建立lxr源代码检索服务器

内核编译和嵌入式产品的设计与开发
头像
microtiger
帖子: 27
注册时间: 2006-09-14 10:57
来自: http://szmicrotiger.blogspot.com/

在自己的计算机上建立lxr源代码检索服务器

#1

帖子 microtiger » 2008-12-06 14:24

SourceInsight固然在windows下面分析源代码很但方便,但是我的工作平台是linux,linux下面也需要经常对代码进行分析和检索,我试用过多种分析工具,最后还是确定使用lxr,通过参考一位台湾朋友t@c发表的一篇名为
Technical Writing's Rule Of Thumb + Local Web based Code Cross Reference (eg. LXR clone)
的文章得以在我的工作计算机ubuntu 8.04和家用计算机ubuntu 8.10上搭建成功,谨在此向t@c仁兄致敬。

现在我把原文略加修改(原文为繁体中文,若干专有名词与大陆不同,作者使用的内核代码为2.6.24,我自己的是2.6.26)后转述如下:

01) LXRng依赖许多package,因此需要安装相关软件,使用如下命令:
$ sudo aptitude install git-core postgresql-8.3 postgresql-client-8.3 libxapian15 libsearch-xapian-perl apache2 libapache2-mod-perl2 libcgi-simple-perl libcgi-ajax-perl libhtml-parser-perl libtemplate-perl libterm-progressbar-perl libdevel-size-perl libdbd-pg-perl ctags

2) 数据库增加有用最大权限的使用者帐号,指令为:
$ sudo -i
$ su - postgres
$ createuser user # Answer "yes" when asked about superprivileged access
$ exit
$ exit

3) 建立数据库,并将http服务器使用者设定为数据库的一般使用者,因此在建立www-data帐号遇到的问题全部回答"N",指令为:
$ createdb lxrng
$ createuser www-data

4) 由LXR的repository取得LXRng,指令为:
$ cd ~
$ git-clone git://lxr.linux.no/git/lxrng.git

5) 启动LXRng设定,指令为:
$ cd ~/lxrng
$ cp lxrng.conf-dist lxrng.conf
$ vim lxrng.conf

6) 将以下字符串注释掉
use LXRng::Repo::Git;
my $gitrepo = LXRng::Repo::Git
->new('/var/lib/lxrng/repos/linux-2.6/.git',
release_re => qr/^v[^-]*$/,
author_timestamp => 0);
my $search = LXRng::Search::Xapian->new('/var/lib/lxrng/text-db/linux-2.6');

7) 新增加以下新的字符串,指令为:
use LXRng::Repo::Plain;
my $plainrepo = LXRng::Repo::Plain->new('/home/user/src/linux-source');
my $search = LXRng::Search::Xapian->new('/home/user/src/linux-source-2.6.26-textdb');

8) 修改下列字符串:postgresq
'repository' => $gitrepo, --改为--> 'repository' => $plainrepo,
'base_url' => 'http://lxr-test.linpro.no/lxr', --改为--> 'base_url' => 'http://localhost/lxr',
'cache' => '/var/lib/lxrng/cache', --改为--> 'cache' => '/home/user/lxrng/cache',
'ver_list' => [$gitrepo->allversions], --改为--> 'ver_list' => ['v2.6.26'],
'ver_default' => 'v2.6.20.3', --改为--> 'ver_default' => 'v2.6.26',

9) save&quite(emacs or vim in this example)

10) 下载Linux kernel source code并将目录设置为7)8)中设定好的目录相符合
$ mkdir ~/src
$ cp linux-2.6.26.tar.gz ~/src
$ cd ~/src
$ tar -xzvf linux-2.6.26.tar.gz
$ mkdir linux-source
$ mkdir linux-source/v2.6.26
$ mv linux-source-2.6.26/* linux-source/v2.6.26
$ mkdir linux-source-2.6.26-textdb
$ mkdir ~/lxrng/cache
$ chmod 777 ~/lxrng/cache -R
$ chmod 777 ~/lxrng/webroot -R
$ make -C ~/lxrng/webroot/.static/gfx

11) 生成Linux-2.6.26的XR,指令为:
$ cd ~/lxrng
$ ./lxr-db-admin linux --init
$ ./lxr-genxref linux

12) 设置Apache2
$ cp apache2-site.conf-dist-mod_perl apache2-site.conf
$ sudo ln -s ~/lxrng/apache2-site.conf /etc/apache2/sites-enabled/010-lxrng
$ vim apache2-site.conf
将所有"@@LXRROOT@@"替换成"/home/user/lxrng"
将"@@LXRURL@@"替换成"lxr"

13) 重新启动Apache2
$ sudo /etc/init.d/apache2 reload

14) 使用浏览器打开http://localhost/lxr即可进行代码检索。

如果要更换domain name,可将现有的"localhost"改为"somewhere.com",只需要将"lxrng.conf"中的"base_url"替换之后再执行./lxr-genxref linux即可,这次的执行时间十分短,因为XR都已经存在,现在即可使用浏览器打开新的网址"http://somewhere.com/lxr"检索代码。至此,配置完毕,希望对大家有用。
上次由 microtiger 在 2009-10-28 16:32,总共编辑 1 次。
头像
天浩
帖子: 146
注册时间: 2007-04-14 0:41
来自: 武汉
联系:

Re: 在自己的计算机上建立lxr源代码检索服务器

#2

帖子 天浩 » 2009-03-24 4:32

谢谢,我正在为设置不好lxr而发愁,快放弃的时候看到你的帖子!!!
我差点被下面这行中最后的[11]迷惑了,以为是原文件应该有的,后来google了一下,知道了是楼主引用的文章的解释标号,在实际文件中没有像[11]这样的字符,因该把[11]去掉,不然会出错
my $plainrepo = LXRng::Repo::Plain->new('/home/user/src/linux-source'); [11]

在此给出引用文章连接:
http://memyselfandtaco.blogspot.com/200 ... local.html
头像
lerosua
论坛版主
帖子: 8455
注册时间: 2007-11-29 9:41
联系:

Re: 在自己的计算机上建立lxr源代码检索服务器

#3

帖子 lerosua » 2009-03-24 9:29

好复杂,先收藏吧
头像
天浩
帖子: 146
注册时间: 2007-04-14 0:41
来自: 武汉
联系:

两个截图

#4

帖子 天浩 » 2009-03-24 18:39

v2.6.26 截图
LXR linux2.6.26.png
v2.6.24 截图
LXR linux2.6.24.png
boluor
帖子: 274
注册时间: 2007-10-14 0:11

Re: 在自己的计算机上建立lxr源代码检索服务器

#5

帖子 boluor » 2009-03-24 19:11

我在自己机器上假设了blog,这样会不会对他有影响?
还有如何卸载?
boluor
帖子: 274
注册时间: 2007-10-14 0:11

Re: 在自己的计算机上建立lxr源代码检索服务器

#6

帖子 boluor » 2009-03-24 19:45

$ createuser user # Answer "yes" when asked about superprivileged access

在这一步的时候,提示:
createdb: 无法联接到数据库 postgres: 致命错误: 用户 "boluor" Ident 认证失败

我的系统是8.10.在安装上述软件包时提示,安装的时候提示:
注意:选择 “exuberant-ctags”而不是虚拟软件包 “ctags”

遇到这个问题该怎么解决阿?
谢谢!
头像
天浩
帖子: 146
注册时间: 2007-04-14 0:41
来自: 武汉
联系:

Re: 在自己的计算机上建立lxr源代码检索服务器

#7

帖子 天浩 » 2009-03-24 21:40

$ createuser user 中的"user"最好是你的用户名,即你当前登录的用户名,因为接下来要设置的内容都是用你当前用户的设置的

注意要先切换到postgres用户才执行createdb lexrng和createuser username
头像
天浩
帖子: 146
注册时间: 2007-04-14 0:41
来自: 武汉
联系:

Re: 在自己的计算机上建立lxr源代码检索服务器

#8

帖子 天浩 » 2009-03-24 22:00

boluor 写了:我在自己机器上假设了blog,这样会不会对他有影响?
还有如何卸载?
不会有影响

lxr-db-admin 有三个选项: --init (初始化)、--reset(重置)、 --drop(删除)
我一开始出错了,所以执行删除 ./lxr-db-admin linux --drop, 然后再执行初始化./lxr-db-admin linux --init,在执行以后的操作
卸载的方法:
./lxr-db-admin linux --drop #本例中的linux在lxrng.conf中指定的linux,也可以是lxrng.cong中的其它选项
sudo rm /etc/apache2/sites-enabled/010-lxrng #这样apache2就不会打开http://localhost/lxr了
然后删除其它设置的内容
boluor
帖子: 274
注册时间: 2007-10-14 0:11

Re: 在自己的计算机上建立lxr源代码检索服务器

#9

帖子 boluor » 2009-03-25 14:36

mv linux-source-2.6.26/* linux-source/v2.6.26

这一步应该是mv linux-2.6.26/* linux-source/v2.6.26吧.是把下载的源文件下的所有文件都移动到linux-source/v2.6.26中去。
boluor
帖子: 274
注册时间: 2007-10-14 0:11

Re: 在自己的计算机上建立lxr源代码检索服务器

#10

帖子 boluor » 2009-03-25 14:43

继续遇到问题。

代码: 全选

boluor@boluor-laptop:~/lxrng$ ./lxr-db-admin linux --init
注意:  CREATE TABLE 将为 serial 字段 "charsets.id" 创建隐含序列 "charsets_id_seq"
注意:  CREATE TABLE / PRIMARY KEY 将要为表 "charsets" 创建隐含索引 "charsets_pkey"
注意:  CREATE TABLE / PRIMARY KEY 将要为表 "trees" 创建隐含索引 "trees_pkey"
注意:  CREATE TABLE / PRIMARY KEY 将要为表 "releases" 创建隐含索引 "releases_pkey"
注意:  CREATE TABLE / PRIMARY KEY 将要为表 "files" 创建隐含索引 "files_pkey"
注意:  CREATE TABLE / UNIQUE 将要为表 "files" 创建隐含索引 "files_path_key"
注意:  CREATE TABLE / PRIMARY KEY 将要为表 "revisions" 创建隐含索引 "revisions_pkey"
注意:  CREATE TABLE / UNIQUE 将要为表 "revisions" 创建隐含索引 "revisions_id_file_key"
注意:  CREATE TABLE / PRIMARY KEY 将要为表 "filestatus" 创建隐含索引 "filestatus_pkey"
注意:  CREATE TABLE / PRIMARY KEY 将要为表 "hashed_documents" 创建隐含索引 "hashed_documents_pkey"
注意:  CREATE TABLE / PRIMARY KEY 将要为表 "filereleases" 创建隐含索引 "filereleases_pkey"
注意:  CREATE TABLE / PRIMARY KEY 将要为表 "symbols" 创建隐含索引 "symbols_pkey"
注意:  CREATE TABLE / UNIQUE 将要为表 "symbols" 创建隐含索引 "symbols_name_key"
注意:  CREATE TABLE / PRIMARY KEY 将要为表 "identifiers" 创建隐含索引 "identifiers_pkey"
boluor@boluor-laptop:~/lxrng$ ./lxr-genxref linux
--- recording all files for                                                  
Recording:   0% [                                                    ]Can't call method "contents" on an undefined value at /home/boluor/lxrng/lib/LXRng/Repo/Plain/Iterator.pm line 28.
而在前面一步$ make -C ~/lxrng/webroot/.static/gfx时,提示:
boluor@boluor-laptop:~/lxrng$ make -C ~/lxrng/webroot/.static/gfx
make:进入目录'/home/boluor/lxrng/webroot/.static/gfx'
make: 没有什么可以做的为 `all'。
make:离开目录“/home/boluor/lxrng/webroot/.static/gfx”


我使用的是2.6.28.在那个conf文件中已经按照对应的改了。
boluor
帖子: 274
注册时间: 2007-10-14 0:11

Re: 在自己的计算机上建立lxr源代码检索服务器

#11

帖子 boluor » 2009-03-25 14:54

这个是我现在声称的界面,估计是上一步的提示中出问题的缘故。现在是使用不了的。
附件
由于发生上述错误,我继续设置了apche2后,输入http://localhost/lxr看到的界面。
由于发生上述错误,我继续设置了apche2后,输入http://localhost/lxr看到的界面。
boluor
帖子: 274
注册时间: 2007-10-14 0:11

Re: 在自己的计算机上建立lxr源代码检索服务器

#12

帖子 boluor » 2009-03-25 17:30

哈哈,我搞定了。现在可以了。谢谢LZ和 天浩 兄弟,我用了一下午终于搞定了。那个./lxr-genxref linux过程整整耗了2个小时12分钟。
贴张图show下:
附件
在我的机器上终于架起了Lxr。
在我的机器上终于架起了Lxr。
boluor
帖子: 274
注册时间: 2007-10-14 0:11

Re: 在自己的计算机上建立lxr源代码检索服务器

#13

帖子 boluor » 2009-03-25 20:46

我结合上面的和自己装的经历,写了篇总结。欢迎大家查看。
附件提供pdf和doc版本。大家喜欢那个格式就下哪个吧。
附件
lxr源代码检索服务器.doc
(245.5 KiB) 已下载 91 次
lxr源代码检索服务器.pdf
(214.52 KiB) 已下载 120 次
头像
天浩
帖子: 146
注册时间: 2007-04-14 0:41
来自: 武汉
联系:

Re: 在自己的计算机上建立lxr源代码检索服务器

#14

帖子 天浩 » 2009-03-26 1:27

:em50 很不错! 继续加油啊!
boluor
帖子: 274
注册时间: 2007-10-14 0:11

Re: 在自己的计算机上建立lxr源代码检索服务器

#15

帖子 boluor » 2009-03-26 8:53

:em02 thank you! 以后多多交流。
回复