중소규모 프로젝트 개발시스템 Trac

예전에 테터앤컴패니(TNC) 에서 Trac이라는것을 소개 한적이 있었다. [ TNC는 이거 없으면 안굴러가요… ]
그때는 그런게 있구나 하고 넘어갔었는데, 갑자기 궁금해져서 설치를 감행해 보았다.

http://trac.edgewall.org/

이곳의 설명서대로 설치를 해보자면 바로 대략 OTL…왜 따라만 했는데도 안되는거냐….
힘들게 설치 한거 같아 과정을 기록해 두기로 한다.

설치환경은 레드햇 엔터프라이즈 리눅스 4 (RHEL4) 이다. 그리고 아파치와의 연동을 고려하지 않았다. 그냥 사내용 서버에 웹서버 따로 없이 사용할때에 설치할법한 옵션이다. 세세한 설정도 넘어갔다.

trac을 설치하기전에 앞서 필요한 환경을 설정하자.

1. python 설치
python은 2.3이상의 버젼이 설치되어있어야 한다. 이것은 소스로 설치를 하던 RPM으로 설치를 하던 어렵지 않으므로 패스하겠다.

2. sqlite 설치
sqlite는 http://www.sqlite.org/ 이곳에서 다운 받을수 있다. 하지만 RPM을 제공하지 않아 소스로 컴파일 해야 한다.
차라리 김정균님의 http://www.oops.org/ 에서 제공하는 sqlite3를 다운받도록 하자.


1060212171.rpm
3. pysqlite 설치
python과 sqlite간의 의사소통을 위한 모듈인거 같다. http://initd.org/tracker/pysqlite/wiki/pysqlite 에서 확인할수 있다. 현재 최신버젼인 2.3.3은 python 2.3부터 2.5까지 지원한다.
이것 을 다운받자

[code]# tar -zxvf pysqlite-2.3.3.tar.gz
# cd pysqlite-2.3.3
# python setup.py build
# python setup.py install[/code]

4. clearsilver 설치
trac의 탬플릿 엔진으로 사용되는 녀석인듯 하다. http://www.clearsilver.net/ 에서 확인가능하다.
이것 을 다운받자.

[code]# tar -zxvf clearsilver-0.10.4.tar.gz
# cd clearsilver-0.10.4
# ./configure –with-python=/usr/bin/python
# make
# make install[/code]

5. subversion 설치
subversion님이시다. 설치가 되어있다면 넘어가도 된다. http://subversion.tigris.org/ 에서 확인가능하다.
이곳 에서 자신의 OS에 맞는 최신버젼을 다운받자.
apr과 swig도 깔아야 한다. 나는 다음과 같이 설치하였다.
swig-1.3.25-1.i386.rpm
apr-0.9.12-2.i386.rpm
apr-debuginfo-0.9.12-2.i386.rpm
apr-devel-0.9.12-2.i386.rpm
apr-util-0.9.12-1.i386.rpm
apr-util-devel-0.9.12-1.i386.rpm
subversion-1.4.0-1.i386.rpm
subversion-devel-1.4.0-1.i386.rpm
subversion-python-1.4.0-1.i386.rpm
subversion-tools-1.4.0-1.i386.rpm

6. pysvn 설치
python과 subversion간의 커넥터이다. http://pysvn.tigris.org/ 의 download에서 extension을 다운 받는다.
이것 을 다운받으면 된다.
1.3.2 부터 1.4.0 사이의 subversion 의 버젼을 지원한다. 위에서 최신버젼을 놔두고 1.4를 받은 이유가 이것이다.

[code]# tar -zxvf pysvn-1.5.1.tar.gz
# cd pysvn-1.5.1/Source/
# python setup.py configure
# make

# mkdir /usr/lib/python2.3/site-packages/pysvn/
# cd pysvn
# cp * /usr/lib/python2.3/site-packages/pysvn/[/code]

만약 컴파일중에 에러가 발생한다면, setup.py 안에 “-lgssapi_krb5 -lkrb5 -lk5crypto -lkrb5support -lcom_err -lresolv -lexpat -lneon”을 찾아 -lkrb5support 와 -lneon 을 지우도록 하자

7. subversion repository 설정 및 데몬 실행
대망의 subversion 실행이다. trac과 svn의 연동이 필요없다면 넘어가도 될 부분이다.
아예 윗부분의 관련된 것들을 설치 안해도 되는것이었다-_-;;;

[code]# mkdir /home/svn
# svnadmin create –fs-type fsfs /home/svn/test[/code]

인증된 사용자만 사용가능하도록 설정하자.

[code]# vi /home/svn/test/conf/svnserve.conf[/code]
위의 파일을 열어 다음의 내용을 설정하자


[general]
anon-access = none
auth-access = write
password-db = passwd

[code]# vi /home/svn/test/conf/passwd[/code]
위의 파일을 열어 다음과 같이 “아이디 = 비번”으로 설정해주자. 파일이 없다면 생성하자.


[users]
eye = good

[code]# svnserve -d -r /home/svn[/code]

8. trac 설치
우선 감사하게도, http://trac-ko.kldp.net/ 이곳에서 trac 한글화 프로젝트를 진행중이다.
최신버젼인 0.10.4버젼까지 한글화 되어있다.
이것 을 다운받자.

[code]# rpmbuild –rebuild trac-ko-0.10.4-1.src.rpm
# rpm -Uvh /usr/src/redhat/RPMS/noarch/trac-ko-0.10.4-1.noarch.rpm[/code]

9. trac 실행
trac이 설치될 디렉토리를 지정해주자.

[code]# mkdir /home/trac
# trac-admin /home/trac initenv[/code]
init시에 물어오는것은 프로젝트명은 정확히 기입하고 나머지는 엔터만 쳐도 된다.

한글 사용을 위해 다음과 같이 설정하자.

[code]# vi /home/trac/conf/trac.ini[/code]


[trac]
default_charset = euc-kr
다음과 같이 실행하면 된다.

[code]# tracd -p 8000 /home/trac[/code]

10. trac auth를 포함하여 실행
htdigest를 사용해도 되는데 기분좋게 하나 만들어서 실행해 보자.

[code]# vi /usr/bin/trac-digest[/code]

#!/usr/bin/python


from optparse import OptionParser
import md5


# build the options
usage = “usage: %prog [options]”
parser = OptionParser(usage=usage)
parser.add_option(“-u”, “–username”,action=”store”, dest=”username”, type = “string”,
                  help=”the username for whom to generate a password”)
parser.add_option(“-p”, “–password”,action=”store”, dest=”password”, type = “string”,
                  help=”the password to use”)
(options, args) = parser.parse_args()


# check options
if (options.username is None) or (options.password is None):
   parser.error(“You must supply both the username and password”)


# Generate the string to enter into the htdigest file
realm = ‘trac’
kd = lambda x: md5.md5(‘:’.join(x)).hexdigest()
print ‘:’.join((options.username, realm, kd([options.username, realm, options.password])))

[code]# chmod 755 /usr/bin/trac-digest
# trac-digest -u eye -p good > /home/digest
# tracd -p 80 –auth trac,/home/digest,trac /home/trac[/code]

11. euc-kr 코덱 설치
euc-kr 로 설정할 경우 해당 캐릭터셋이 없다고 에러가 나올경우가 있다.

이는 python 2.4 미만 버젼에서 해당 캐릭터셋이 없어서 발생하는 문제이다. 2.4에서는 기본적으로 euc-kr을 포함하고 있다.

한글 코덱을 설치해 주면 된다.
1076519290.gz
위의 코덱을 받아 설치 해 주자.

[code]# tar -zxvf cjkcodecs-1.1.1.tar.gz
# cd cjkcodecs-1.1.1/
# python setup.py install[/code]