개발환경구축하기

LXR 설치

LXR 개요

Linux Cross-Reference (LXR)는 Hypertext Cross-referencing Tool로서 Function declarations, Data(type) definitions 그리고 Preprocessor macros를 쉽게 찾아갈 수 있게 도와주므로 대규모 Source Code를 분석하는데 많은 도움을 준다. 본 문서는 LXR의 설치와 사용법에 대해 기술한다.

0. AWS 설치 - 우부투 설치

1. apache2 설치 및 환경설정

2. Perl과 Glimpse 설치 및 환경 설정

3. LXR 설치

4. 소스 설치

5. 메타 DB 생성

6. 사용

 

1. 설치위치

  apache2 서버의 경로에서 확장하는 형식

  /var/www/html/

 

2. LXR 설치 후 생성된 디렉토리

  /var/www/html/lxr/bin

  /var/www/html/lxr/http

  /var/www/html/lxr/source

 

3. 설치할 소스 들

  /var/www/html/lxr/source/[설치할 소스]

 

4. perl 설치 확인
# which perl

5. cgi 동작 여부 점검

a2enmod cgi

1. apache2 설치

웹서버 - CGI를 사용하는 웹서버

 - 보통 아파치를 사용한다. 이를 위해서 우부투를 설치하여 사용한다.

 - LXR이 설치 될 수 있는 환경은 CGI를 사용하는 웹서버 웹서버이다.

 - CGI를 통하여 웹에서 리눅스의 서치 명령어를 바로 실행하는 구조를 가지고 있다.

 

# apt-get install apache2

 

/var/www/html/ 이 서버의 root 임

2. glimpse 설치

free text search를 위한 메타데이터 생성 및 활용에 사용됨

# cd /usr/local/share/

# wget http://webglimpse.net/trial/glimpse-latest.tar.gz

# tar xvfz glimpse-latest.tar.gz

# cd glimpse-4.18.6/

# ./configure; ./make; sudo make install

sh configure도 동작함

설치가 완료가 되면

 /usr/local/bin/에 결과물 설치가 됨

glimpse glimpseindex glimpseserver

3. lxr 설치

LXR을 설치한다.

---------------------------------------------------------------------------------

XLR이 설치될 위치로 이동

# cd /usr/local/share/ 

---------------------------------------------------------------------------------

LXR을 다운로드 한다. apt-get나 wget을 통하여 다운로드 받을 수 있다.

wget을 권장함

# apt-get install lxr  동작이 잘 되지 않는 경우가 있음 이를 대신하여 wget을 사용한다.

# wget http://downloads.sourceforge.net/project/lxr/old/lxr-0.3.1/lxr-0.3.1.tar.gz

---------------------------------------------------------------------------------

압축을 풀고 XLR을 컴파일한다.

컴파일이 완료가 되면 /var/www/html/lxr/ 디렉토리에 bin, http, source 3개의 디렉토리가 생성이 된다.

# tar xvfz lxr-0.3.1.tar.gz

# cd lxr-0.3

# vi Makefile  <---- perl의 위치와 생성될 디렉토리 지정

......

PERBIN=/usr/bin/perl     <----- PERLBIN은 perl 실행파일이 인스톨되어 있는 위치

......

INSTALLPREFIX=/var/www/html/lxr   <---- LXR이 인스톨될 디렉토리

#sudo make install

#cd /var/www/html/lxr/

# ll
total 20
drwxr-xr-x 5 root root 4096 Oct  8 05:35 ./
drwxr-xr-x 3 root root 4096 Oct  8 05:35 ../
drwxr-xr-x 2 root root 4096 Oct  8 05:35 bin/        <------
drwxr-xr-x 3 root root 4096 Oct  8 05:35 http/       <------
drwxr-xr-x 2 root root 4096 Oct  8 05:35 source/    <------

4. lxr 환경 설정

1. lxr/http/lxr.conf 파일 수정

  위치 : /var/www/html/

1-1. lxr/http/lxr.conf 파일의 다음 부분을 수정

# Define typed variable "v", read valueset from file.
variable: v, Version, [/var/www/html/lxr/source/versions], [/var/www/html/local/lxr/source/defversion]

# Define the base url for the LXR files.
baseurl: http://192.168.10.120/lxr/http/                 <---- 홈페이지 주소 에서 /lxr/http/추가

# These are the templates for the HTML heading, directory listing and
# footer, respectively.
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.
sourceroot: /var/www/html/lxr/source/$v/linux/ <---- 웹서버의 위치에서 버젼별로 소스를 관리한다.
srcrootname: $v                                                                   <---- /var/www/html - 웹서버의 위치
                                                                   <---- /lxr/source/ - 소스의 위치
                                                                   <---- 2.6.15 - 버젼별 소스의 위치 

# The database files go here.
dbdir: /var/www/html/lxr/source/$v/                        <---- 메타데이터가 생성되는 위치

# Glimpse can be found here.
glimpsebin: /usr/local/bin/glimpse                       <----- glimpse의 위치

 

1-2. lxr/http/lxr.conf 파일

# Configuration file.

# Define typed variable "v", read valueset from file.
variable: v, Version, [/var/www/html/lxr/source/versions], [/var/www/html/local/lxr/source/defversion]

# Define typed variable "a".  First value is default.
variable: a, Architecture, (i386, alpha, m68k, mips, ppc, sparc, sparc64)

# Define the base url for the LXR files.
baseurl: http://192.168.10.120/lxr/http/

# These are the templates for the HTML heading, directory listing and
# footer, respectively.
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.
sourceroot: /var/www/html/lxr/source/$v/linux/
srcrootname: $v

# "#include <foo.h>" is mapped to this directory (in the LXR source
# tree)
incprefix: /include

# The database files go here.
dbdir: /var/www/html/lxr/source/$v/

# 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/

 

2. .haccess 파일생성 및 에디트 

위치 : /var/www/html/lxr/http/

# cd /var/www/html/lxr/http

# vi .htaccess

<Files ~ (search|source|ident|diff|find)$>
SetHandler cgi-script
</Files>

 

3. apache 환경 설정
# cd /etc/apache2

# vi apache2.conf

Alias /lxr /var/www/html/lxr
<Directory /var/www/html/lxr>
Options All
AllowOverride All
</Directory>

# vi /etc/apache2/conf-enabled/apache-lxrserver.conf   <------- 찾아뵈도 없으므로 생략

 - You don't have permission to access /lxr on this server. 이라는 에러가 있는 경우

#Alias /lxr "/home/ubuntu/lxr"
Alias /lxr "/var/www/html/lxr"   <---- 확인

 

4. 한글을 작성시 인코딩 설정 - 생략해도 됨
/usr/share/lxr/http/template-head 파일에 meta 정보를 추가

<base href=”$baseurl”>
<meta http-equiv=”Content-Type” content=”text/html;charset=utf-8″ />
< /head>

 

5. 소스가 있을 디렉토리 생성

# cd /var/www/html/lxr/source/

# mkdir 2.6.15/linux   <------- 복사를 하는 경우 linux 디렉토리에 복사한다.

# mkdir 2.6.15   <------- soft link인 경우 linux 디렉토리를 만들지 않는다.

 

- 2.6.15는 version에 해당한다.

6. 버젼생성

# cd /var/www/html/lxr/source/

# sudo echo '2.6.15' >> ./versions

# sudo echo '2.6.15' >> ./defversion

 

versions 라는 파일을 만들고 내용을 2.6.15로 채운다.

defversion 라는 파일을 만들고 내용을 2.6.15로 채운다.

7. 소스 추가

소스 추가할 경우에 파일의 권한을 봐야 한다.

 [path]/lxr/source/[source이름]/[soft link] 에 소스를 추가 함

 

# cd /var/www/html/lxr/source/[version]      -----> cd /var/www/html/lxr/source/2.6.15

# ln -sf /home/dgfw/n32926sdk_park/ linux

소프트링크를 거는 것이 효율적임

메타 DB만 생성하면됨

8. 메타 DB 생성

1. lxr database 생성
# cd /var/www/html/lxr/source/[version]/     ---> cd /var/www/html/lxr/source/2.6.15/
# ../../bin/genxref [softlink]                        --->  ../../bin/genxref ./linux

2. glimpse 인덱스 생성

# cd /var/www/html/lxr/source/[version]/     ---> cd /var/www/html/lxr/source/2.6.15/
# glimpseindex -H . [softlink]                     ---> glimpseindex -H . linux

최종

 glimpseindex -H . ./linux/  <-소스의 path가 맞지않아서 엉뚱하게 연결이 된다. soft link가 path가 아니 원래 path가 설치됨

한번 더 수정함

 glimpseindex -H . /var/www/html/lxr/source/2.6.15/linux  <- soft link의 전체 path를 걸어준다.

 

3. 해당 파일 permission 변경

# chmod 644 .glimpse* fileidx xref

종종 permission이 잘못 생성되는 경우가 있어, browsing이 안되기도 함
이런 경우 ‘chmod 644 fileidx’와 같이 변경해주면 됨

 

=======================================================

=======================================================

4. 수정이 필요한 경우

생성된 메타 데이터 지우기

  rm -rf fileidx xref .glimpse_*

 -  다시 메타데이터 생성함
 

9. 아파치 재실행

1. apach 재시작

# a2enmod cgi

# /etc/init.d/apache2 restart

# service apache2 restart

10. 소스 업그레이드에 따른 DB 업데이트 절차

  217  rm -rf linux
  218  ls
  219  ln -sf /home/dgfw/n32926sdk_park/source/source/ linux
  220  ls
  221  rm -rf fileidx xref .glimpse_*
  222  ls
  223  ../../bin/genxref linux
  224  glimpseindex -H . /var/www/html/lxr/source/2.6.15/linux
  225  chmod 644 .glimpse_* fileidx xref
  226  a2enmod cgi
  227  service apache2 restart
  228  rm -rf linux
  229  ln -sf /home/dgfw/n32926sdk_park/source/source/plugins/ linux
  230  ls
  231  rm -rf fileidx xref .glimpse_*
  232  ../../bin/genxref linux
  233  glimpseindex -H . /var/www/html/lxr/source/2.6.15/linux
  234  chmod 644 .glimpse_* fileidx xref
  235  a2enmod cgi
  236  service apache2 restart
  237  history
root@ubuntu:/var/www/html/lxr/source/2.6.15#

 

You don't have permission to access  on this server. 가 있는 경우

root@ip-172-31-1-18:/var/www/html/lxr/source/2.6.15# vi /etc/apache2/conf-enabled/apache-lxrserver.conf
root@ip-172-31-1-18:/var/www/html/lxr/source/2.6.15# vi /etc/apache2/apache2.conf
root@ip-172-31-1-18:/var/www/html/lxr/source/2.6.15# service apache2 restart
 

# vi /etc/apache2/conf-enabled/apache-lxrserver.conf

--------------------------------------------------------------------------------------

#Alias /lxr "/home/ubuntu/lxr"
Alias /lxr "/var/www/html/lxr"   <---- 확인
---------------------------------------------------------------------------------------

 

 

 

추가 작업

blurb.html를 index.html로 카피한다.
 

/var/www/html/lxr/http# cp blurb.html index.html
 

댓글

댓글 본문