Chinaunix首页 | 论坛 | 博客
  • 博客访问: 678508
  • 博文数量: 156
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 1201
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-05 20:08
文章分类

全部博文(156)

文章存档

2010年(13)

2008年(39)

2007年(104)

我的朋友

分类: LINUX

2007-05-13 23:36:12

LXR 安裝教學

詹前泓
中正大學  資訊工程研究所  即時系統實驗室

完成日期:2005/02/22
修改日期:2005/02/23

 

零˙ 必備環境&注意事項:

Apache server必須具備CGI-Script的功能。
參考

Perl須有version 5或以上。

此文件的安裝環境是
Mandrake Linux 10.0,Apache和Perl version 5是用distribution內附的RPM package安裝。
如果你的Linux或Apache的操作方式有所不同,也請參考該distribution的manual或相關的readme等。

 

一˙必備軟體:

LXR 0.3:
原始網頁:
         

Glimpse:
原始網頁:

LXR用的icons:http://www.cs.ccu.edu.tw/~cch93/linux/devtools/lxr/icons.tar.gz

解壓縮方式:
$ tar -zxvf lxr-0.3.tar.gz
$ tar -zxvf glimpse-latest.tar.gz
$ tar -zxvf icons.tar.gz

分別會解壓縮出lxr-0.3、 glimpse-4.18.0、icons三個目錄。

icons.tar.gz解開後為icons目錄,請放到Apache安裝目錄下,預設路徑是/var/www/,將裡面的icons目錄覆蓋即可。
$ cp -rf icons /var/www/

 

二˙LXR安裝:

先進入剛剛解壓縮出來的LXR目錄,
$ cd lxr-0.3

1. 首先是修改Makefile的設定:

PERLBIN=/usr/bin/perl,這個是你perl版本5(或以上)執行檔的位置,如果你的perl執行檔在其他位置,請修改至正確位置。

INSTALLPREFIX=/tmp/lxr,這是你LXR的安裝路徑,請修改為Apache能夠瀏覽的目錄下,預設是/var/www/html/lxr

OK,修改完畢。

2. 再來就安裝吧~:

$ make install

如果在/var/www/html/ 下面看到lxr的目錄,那恭喜你,安裝成功囉。

 

三˙Apache的相關設定:

1. 修改Apache對LXR讀取的權限:

修改 /etc/httpd/conf/httpd2.conf (Apache 1.x的檔案是httpd.conf)

或  /etc/apache2/apache2.conf

新增:


    Options All
   
AllowOverride All
   
order allow,deny
    allow from all

/var/www/html/lxr/http的部分,你可以改成 你安裝LXR的目錄/http

2. 修改Apache對CGI的權限設定:

在/var/www/html/lxr/http/ 下面,新增一個檔案.htaccess(注意檔名最前方有個"."),內容如下:


    SetHandler cgi-script
    Options ExecCGI

3. 重新啟動Apache:

$ /etc/init.d/httpd restart

或 $ sudo apache2ctl restart

(也許你的Linux是別種方式)

 

四˙LXR的設定:

LXR安裝目錄下有三個目錄bin、 http、source,分別是LXR的分析code執行檔、一些Perl和LXR設定檔、還有原始碼位置。

$ cd /var/www/html/lxr/

$ mkdir dbdir

dbdir是放置解析原始碼的資訊

在LXR要動之前,我們要先對LXR 做好相關的設定才行,首先先看一下http目錄下的lxr.conf中的內容,格式大致是標籤:參數

variable: v, Version, [/local/lxr/source/versions], [/local/lxr/source/defversion]
variable: a, Architecture, (i386, alpha, m68k, mips, ppc, sparc, sparc64)
baseurl:

htmlhead: /local/lxr/http/template-head
htmltail: /local/lxr/http/template-tail
htmldir: /local/lxr/http/template-dir
sourceroot: /local/lxr/source/$v/linux/
srcrootname: Linux
incprefix: /include
dbdir: /local/lxr/source/$v/
glimpsebin: /local/bin/glimpse
map: /include/asm[^\/]*/ /include/asm-$a/
map: /arch/[^\/]+/ /arch/$a/

variable 的參數為variable_type, variable_name, values, default_value。
variable_type:"v"是version,"a"是architecture。
variable_name:可以取你要的名字。
values:如variable_name為"v"即是說有哪些version,"a"則是說有哪些 architecture,這些在"解析原始碼"部分會解釋。
default_value:從values中選取一個當作你進入LXR時,預設使用的value。

baseurl:你LXR的WWW路徑,即
/ (此路徑的最後一定要加上"/"),
yourIP是你架設LXR的server IP位址,如jupiter.cs.ccu.edu.tw。

sourceroot:你存放原始碼的地方,稍後在"解析原始碼"部分會解釋,你可以把他視為 //lxr/source/$v/的格式。< local>即Apache存放網頁的目錄,在這文件是var/www/html。

srcrootname:取你喜歡的名字。

dbdir:存放有解析原始碼的資訊。

glimpsebin: Glimpse執行檔的位置,預設是/usr/local/bin/glimpse,稍後會在"增加LXR功能"部分介紹Glimpse的功能和安裝。

除了glimpsebin,其餘的 "local"字樣全部改為你Apache的目錄,比方說把dbdir的內容改為/var/www/html/lxr/source/$v/

關於variable設定部份,下一章節說明。

 

五˙解析原始碼:

1. 建立原始碼目錄:

好了,接下來就該進行解析原始碼的各個function、variable、macro等的definition了。

還記得剛剛說到LXR有三個目錄 bin、http、source嗎?

把你希望取的版本名稱先建立一個目錄,把你要分析的source code放到這個目錄下方吧。

舉個例子:
(1)$ cd /var/www/html/lxr/source/
(2)$ mkdir linux-2.6.10
(3)$ cd linux-2.6.10
(4)$ wget
 (下載Linux kernel)
(5)$ tar zxvf linux-2.6.10.tar.gz
(6)$ mv linux-2.6.10 linux                                                (把解壓縮出來的目錄改名稱)

好了,把話題拉回到上一章節先跳過的部分。

你會注意到,lxr.conf裡面的dbdir和sourceroot的參數都有個$v,在這個例子中,就是步驟(2)的linux-2.6.10。

而sourceroot參數解釋部份的/ /lxr/source/$v/中的在這邊是步驟(6)改名後的linux,lxr.conf預設就是linux,你也可以改成其他的名稱,總之就是要讓兩邊都一樣,而source code就是放在這之中。

2. 開始使用LXR的程式解析原始碼:

/var/www/html/lxr/bin/genxref /var/www/html/lxr/source/linux-2.6.10/linux

或是在 linux-2.6.10(就是$v)的目錄下,輸入 ../../bin/genxref linux

這一步會隨著你的程式碼大小和電腦效能能有時間上的差異。

結束後,你可以用ls查看在linux-2.6.10目錄下的檔案,會看到有產生兩個檔案fileidxxref,把fileidx的權限設定為755
$ chmod 755 fileidx

3. 修改lxr.conf,讓LXR能夠用CGI-Script來對原始碼動態產生網頁:

在上一章,我們有提到lxr.conf中有個variable的標籤,現在我們就要來解釋設定方法和網頁所得的關係。

variable: variable_type, variable_name, values
variable: variable_type, variable_name, values, default_value (用於values是中括號[]的情形)

variable_type:可以設定"v",字面上是version,就是指說現在要設定的variable,是要描述有哪些原始碼的名稱(或版本);而"a"就是architecture。
variable_name:在網頁上會顯示出的提示字樣,預設是Version,你也可以改看看,看網頁顯示出來是什麼樣子。
values:要填入哪些內容呢?就是剛剛一直有提到的$v 。格式可以是name(name1,name2,...)[filename]

小括號()是說你不只有一個原始碼,就要用小括號來寫,而小括號的第一個(即name1)會是預設值
中括號[]是說你把所有的$v寫到一個檔案,然後把檔案的位置填入[]中。
defvalue:LXR預設要開啟什麼原始碼,你如果有好幾個原始碼,你可以在這邊設定預設的原始碼。格式是name[filename]

再一次提醒,用中括號就必須加上defvalue參數。

以剛剛的例子,假設我又多了一個linux-2.4.29的原始碼,也就是說LXR中的"source"目錄中有兩個版本的原始碼,你在lxr.conf中的 variable就可以寫:
variable: v, Variable, (linux-2.6.10, linux-2.4.29)
這樣你進入網頁會發現,Version欄位會有 linux-2.4.29和linux2.6.10,而顯示出來的source code結構會是2.6.10版本的原始碼結構。

當然,你也可以在LXR的 source目錄下建立一個檔案名稱是"versions",內容如下:
linux-2.4.29
linux-2.6.10

這樣的話你在lxr.conf中設定的就是
variable: v, Variable, [/var/www/html/lxr/source/versions], linux-2.6.10
當然檔名不一定要versions,不過就是lxr.conf和你自己設定的要能夠相同就是。

如果defvalue用的是檔案的話 (即中括號[]),那麼檔案內容就只要填入一個原始碼名稱就好(就是從values裡面挑一個)。
如果有多個的話,會造成 LXR的"source navigation"功能出現問題。

4. 檢視你的LXR是否成功:

OK,辛苦了這麼久,最後就是要看看到底成功了沒,就在你的瀏覽器輸入,yourIP當然是你自己架設LXR的IP或host name囉。

如果你已經看到了,試著點點原始碼的目錄結構和測試"identifier search"的功能,如果都沒有任何錯誤,那恭喜你,你已經建立完畢了^_^

這是我的lxr.conf和中括號的檔案,參考一下吧:
http://www.cs.ccu.edu.tw/~cch93/linux/devdoc/lxr/lxr.conf
http://www.cs.ccu.edu.tw/~cch93/linux/devdoc/lxr/archs
http://www.cs.ccu.edu.tw/~cch93/linux/devdoc/lxr/defarch
http://www.cs.ccu.edu.tw/~cch93/linux/devdoc/lxr/versions
http://www.cs.ccu.edu.tw/~cch93/linux/devdoc/lxr/defversion

建構出來的 LXR網頁(不一定有開:P):
http://jupiter.cs.ccu.edu.tw/lxr/http/source

 

六˙增加LXR的功能:

如果你有用瀏覽器多玩玩LXR的其他功能的話,你應該會發覺到,怎麼不能夠用freetext searchfile search?相信我在一開始有給各位一個Glimpse的下載連結吧(別告訴我你沒看到,否則就~吼~),沒錯,就是用他來增加這兩樣功能。

1. 安裝Glimpse:

解壓縮glimpse-latest 會產生glimpse-4.18.0的目錄,開始安裝:
$ cd glimpse-4.18.0
$ ./configure
$ make
$ make install
預設會安裝到/usr/local/中,而執行檔會在/usr/local/bin/glimpse,這也是剛剛在第四章設定lxr.conf時,改變 glimpsebin的參數。

2. 利用Glimpse來產生LXR的最後兩個功能:

到你原始碼的目錄(即$v)下,這裡繼續用第五章的範例:
$ cd /var/www/html/lxr/source/linux-2.6.10/
$ glimpseindex -H . .      (是兩個".",不是一個"..",H要大寫)


到$
dbdir目錄裡面去,然後執行glimpseindex -H . ../source/linux-2.6.10  (放linux kernel source的目錄)

成功後會在linux-2.6.10 下面產生7個隱藏檔:
.glimpse_filenames、.glimpse_filenames_index、.glimpse_filetimes、. glimpse_index、.glimpse_messages、.glimpse_partitions、.glimpse_statistics
可以用"ls -al"指令來看。

把這7個檔案的權限改為755,偷懶點的方法就是輸入如下的的指令:
$ chmod 755 .g*

再用瀏覽器看看,你會發現,LXR已經可以使用freetext search和file search的功能囉~。

 

七˙後記:

這是我第一次寫這樣的 document,可能會有所疏漏或錯誤,如果在安裝上面有問題,或是本文件有錯誤的地方,也歡迎來信。

中正大學   資訊工程研究所  詹前泓
cch93@cs.ccu.edu.tw

八˙例子: 

# Configuration file. 

# Define typed variable "v", read valueset from file.
variable: v, test_Version, [/var/www/html/lxr/source/linux-2.6.17], linux

# Define typed variable "a".  First value is default.
variable: a, Architecture, [/var/www/html/lxr/source/archs], [/var/www/html/lxr/source/defarch]

# Define the base url for the LXR files.
# 中lxr的相對位置/http
# baseurl:'空白'一定要加
baseurl:

# These are the templates for the HTML heading, directory listing and
# footer, respectively.
# 安裝好的lxr/http/template的位置
htmlhead: /var/www/html/lxr/http/template-head
htmltail: /var/www/html/lxr/http/template-tail
htmldir:  /var/www/html/lxr/http/template-dir

# The source is here.
# /usr/src/linux-2.4.20-8/
# 你安裝的linux kernel source位置
sourceroot: /var/www/html/lxr/source/linux-2.6.17/
srcrootname: 隨意

# "#include " is mapped to this directory (in the LXR source
# tree)
incprefix: /include

# The database files go here.
#genxref所產生fileidx和xref的位置目錄
dbdir: /var/www/html/lxr/dbdir/

# Glimpse can be found here.
glimpsebin: /usr/local/bin/glimpse

# The power of regexps.  This is pretty Linux-specific, but quite
# useful.  Tinker with it and see what it does.  (How's that for
# documentation?)
map: /include/asm[^\/]*/ /include/asm-$a/
map: /arch/[^\/]+/ /arch/$a/

Appendix˙安裝過程的問題:

Q:使用LXR時出現有關 DB_File.pm的warning。

A:這是你沒有安裝DB_File這個perl module的問題。
使用root進入shell:
$ perl -MCPAN -e shell
進入後會有一些設定,用預設值即可,
在選擇FTP站台時選擇Asia->Taiwan,會出現"cpan> "這個shell,
輸入方式是install ,& lt;module-name>是你要安裝的module名稱。
如你缺了DB_File.pm,你只需要輸入install DB_File即可。
如此一來即可安裝完成^_^

阅读(2630) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~