소스인사이트 처럼 소스코트 브라우징을 웹 기반에서 할 수 있는 프로그램인 LXR 에 대한 설치 및 사용법에 대해 설명한다.
설치 환경은 다음과 같다.
H/W | IBM Thinkpad X40 |
S/W | Ubuntu 11.10, lxr, apache, perl, mysql |
설치 시에 참고할 경로는 다음과 같다.
lxr 설치경로 | /usr/local/share/lxr |
소스코드 경로 | /opt/linux |
LXR 의 최신버전은 http://sourceforge.net/projects/lxr/ 에서 다운로드 받을 수 있다. 여기서는 0.9.10 버전을 사용한다.
참고로 이 문서에서 사용할 소스코드는 linux kernel 이다.
LXR 은 웹서버와 연동하여 실행되기 때문에 사전에 이를 설치해야 한다.
#apt-get install apache2 mysql-server exuberant-ctags #apt-get install libdbi-perl libdbd-mysql-perl libfile-mmagic-perl
lxr 설치 방법은 따로 컴파일 과정없이 설치할 곳에 옮겨놓으면 된다.
#cd /usr/local/share #mv /home/aselsan/Desktop/LXR/lxr-0.9.10.tgz . #tar -zxf lxr-0.9.10.tgz #mv lxr-0.9.10 lxr #cd lxr
lxr 의 최신 버전에서 달라진 점이 있다면, DB 를 사용한다는 점이다. 몇 가지 DB 를 지원하는데, 여기서는 mysql 를 사용한다.
아래 명령을 실행하기 전에 현재 경로가 /usr/local/share/lxr 디렉토리인지 확인한다.
#mysql -u root -p
접속한 후에 lxr 에서 사용할 계정과 비밀번호를 추가한다.
mysql> use mysql mysql> CREATE USER 'lxr'@'localhost' identified by 'foo'; // id 는 lxr, password 는 foo 로 지정 mysql> \. initdb-mysql // lxr 에 필요한 db 와 table 생성
이제 본격적인 lxr 설정을 해보자.
cp templates/lxr.conf .
모든 설정은 lxr.conf 에서 이루어 지는데, 아래와 같이 수정한다.
... #, 'glimpsebin' =>'/usr/local/bin/glimpse' // 주석처리 #, 'glimpseindex' => '/usr/local/bin/glimpseindex' // 주석처리 ... , 'swishbin' => '/usr/bin/swish-e' ... , 'ectagsconf' => '/usr/local/share/lxr/lib/LXR/Lang/ectags.conf' , 'genericconf' => '/usr/local/share/lxr/lib/LXR/Lang/generic.conf' ... ,'baseurl' => ' http://localhost/lxr' ... , 'baseurl_aliases' => [ 'http://192.168.100.21/lxr'] ... , 'encoding' => 'utf-8' , 'sourceroot' => '/opt/linux' // linux 디렉토리 생성할 것 ... , 'range' => [qw(v1 v2)] ... , 'default' => 'v1' ... ,'dbpass' =>'foo' , 'dbuser' => 'lxr' ... , 'swishdir' => '/opt/swish/' // swish 디렉토리를 생성할 것
브라우징할 소스코드를 지정된 경로에 옮길 차례다.
#tar xzf linux-1.2.1.tar.gz #cd linux #mkdir -p /opt/linux/v1 /opt/swish #cp -arf * /opt/linux/v1/
위에서 v1 은 lxr.conf 파일에 수정했던, 버전 v1 을 뜻한다.
이제 소스코드를 인덱싱 해야 한다.
#cd /usr/local/share/lxr #./genxref --url=http://localhost/lxr --allversions
소스코드의 용량에 따라 시간이 걸릴 수 있다.
apache 2.x 를 기준으로 설명한다. lxr 을 위한 설정 파일을 별도로 생성한다.
#touch /etc/apache2/conf.d/lxrserver.conf #vi /etc/apache2/conf.d/lxrserver.conf
아래와 같이 작성한다.
Alias /lxr /usr/local/share/lxr <Directory /usr/local/share/lxr> AllowOverride All </Directory>
CGI 실행을 위한 .htaccess 파일을 복사한다.
#cd /usr/local/share/lxr #cp .htaccess_cgi .htaccess
그리고 웹 서버를 재시작한다.
마지막으로 perl 프로그램을 수정해주어야 한다. 해당 파일은 'diff, genxref, ident, search, source' 이다.
#!/usr/bin/perl // #!perl -T 를 수정
웹 브라우저를 열고, http://localhost/lxr/source 로 접속해보자. 탐색창과 함께 lxr 페이지가 뜬다면 성공이다.
/usr/local/share/lxr/templates/lxr.css 파일을 수정하면 기본 폰트 및 디자인을 변경할 수 있다.