Installing websvn on gentoo-amd64 platform

h3. What is websvn?
p. websvn(http://websvn.tigris.org/)은 cvsweb이나 viewcvs와 같은 svn의 web frontend다.


h3. Emerging (untested) websvn portage
h4. ebuild 수정하기
p. websvn은 amd64에서 testing 되지 않은 상태이므로, ebuild를 직접 수정해야 emerge를 사용한 설치가 가능하다. vi `equery which websvn`를 해보면, 다음과 같은 내용을 볼 수 있다.
bc.. MY_PV=161
DESCRIPTION=”Web-based browsing tool for Subversion (SVN) repositories in PHP”
HOMEPAGE=”http://websvn.tigris.org/”
SRC_URI=”http://websvn.tigris.org/files/documents/1380/14334/WebSVN_${MY_PV}.tar.gz”
LICENSE=”GPL-2″
IUSE=”enscript”
KEYWORDS=”x86″
RDEPEND=”>=dev-php/mod_php-4.1.0
sys-apps/sed
enscript? ( >=app-text/enscript-1.6.0 )”
DEPEND=”sys-apps/findutils”
S=${WORKDIR}/WebSVN
p. KEYWORDS 항목에 amd64를 추가해주도록 하자.
bc. – KEYWORDS=”x86″
+ KEYWORDS=”x86 amd64″
p. ebuild를 수정한 후에는 다음 command를 사용하여 ebuild의 digest 역시 update해주어야 한다.
bc. # ebuild /usr/portage/www-apps/websvn/websvn-1.61.ebuild digest
h4. emerge 하기
p. -p(–pretend) option을 사용하여 emerge를 해보면, enscript USE flag를 가지고 있는 것을 알 수 있다. enscript는 websvn에서 syntax highlight를 지원하기위해서 사용된다.
bc.. # emerge -pvk websvn
These are the packages that I would merge, in order:
Calculating dependencies …done!
[ebuild N ] www-apps/websvn-1.61 -enscript -vhosts 0 kB
Total size of downloads: 0 kB
p. USE flag에 enscript를 넣어줌으로써, enscript와의 dependency를 check하게 되고, enscript가 설치되지 않았다면 자동으로 설치해준다.
bc. # USE=enscript emerge -vk websvn
h3. Configuring Web server
p. portage를 통해서 설치를 했을 경우 websvn은 /usr/share/webapps/websvn/WEBSVN-VERSION/에 설치된다.
p. /usr/share/webapps/websvn/WEBSVN-VERSION/htdocs를 php가 실행 가능하도록 설정해주면 된다. 예를 들어, 나는 다음과 같이 apache를 설정했다.
bc. Alias /websvn “/usr/share/webapps/websvn/1.61/htdocs”

Options +ExecCGI
AllowOverride None
Order allow,deny
Allow from all

h3. Configuring websvn
p. websvn을 설정하는 일은 그다지 어렵지 않다. “Install guide”:http://svn.collab.net/repos/websvn/trunk/install.txt 를 참고하면 된다.
p. 설정은 대체로 /usr/share/webapps/websvn/WEBSVN-VERSION/htdocs/include/config.inc 파일을 수정함으로써 이루어진다.
h4. Repository 설정하기
p. 당연히 subversion repository 위치를 websvn에 알려주어야한다. 두가지 방식이 가능한데, svn repository path를 직접 지정하거나, 또는 svn repository들이 있는 parent path를 지정해서 한꺼번에 지정할 수도 있다. 나는 공개하지 말아야할 repository들도 함께 있기 때문에, 일단 전자의 방법을 선택해서 “galaxy”:http://rubyforge.org/projects/galaxy/ 의 svn repository를 추가하였다.
bc. // To configure the repositories by hand, copy the line below, uncomment it and replace the name and path
//
// $config->addRepository(“NameToDisplay”, “Path/to/repository (e.g. c:\svn\proj)”);
$config->addRepository(“Galaxy”, “/home/cestlavie/repositories/galaxy”);
h4. template 설정하기
p. websvn은 기본적으로 3가지 template을 제공한다. 사실 쓸만한 건 BlueGrey밖에 없다.
bc.. // Uncomment ONLY the display file that you want.
// $config->setTemplatePath(“$locwebsvnreal/templates/Standard/”);
$config->setTemplatePath(“$locwebsvnreal/templates/BlueGrey/”);
// $config->setTemplatePath(“$locwebsvnreal/templates/Zinn/”);
h4. Permission 문제 해결하기
p. 위의 과정까지만 진행해도 브라우저를 통해 websvn 페이지를 볼 수 있다. 하지만, 내 경우에는 bdb 쪽 path에 접근할 수 없다는 permission error가 발생했다. 내가 subversion backend로 bdb를 사용하고 있었고, bdb에 접근하기 위해서 write permission이 필요한 문제 때문이었는데, 어차피 browsing 밖에 하지 않을 websvn을 위해 write access가 가능하게 만들어주고 싶지 않았고, fsfs로 바꾸면 이러한 문제가 발생하지 않는다는 사실을 찾을 수 있었다.
p. subversion repository의 backend를 migration하는 것은 subversion의 dump/load를 사용하면 매우 간단하게 할 수 있다. 이 글에서는 생략하기로 하자.
p. 이 외에도 cache 기능을 위한 permission 문제 또한 발생하길래, 그냥 cache 기능을 꺼버렸다.
bc. // Comment this line to turn off caching of repo information. This will slow down your browsing.
// $config->setCachingOn();
h4. Syntax highlighting
p. websvn은 “enscript”:http://people.ssh.com/mtr/genscript/ 를 이용하여 syntax highlighting을 수행한다.
bc. // Uncomment this line if you want to use Enscript to colourise your file listings
//
// You’ll need Enscript version 1.6 or higher AND Sed installed to use this feature.
// Set the path above.
//
$config->useEnscript();
p. 그런데, “enscript는 공식적으로 ruby를 지원하지 않는다.”:http://people.ssh.com/mtr/genscript/highlightings.html 이를 위해, “Mike Wilson이 작성한 ruby.st”:http://rubyforge.org/cgi-bin/viewcvs.cgi/support/ruby.st (“미스랜더”:http://www.tisphie.net/moniwiki/wiki.php/FrontPage 님이 웹에서 찾아주셨다.)를 다운로드해서 적절한 디렉토리에 넣어주자. (gentoo의 경우에는 /usr/share/enscript/hl/)
p. 더불어 websvn의 config.inc에도 다음 설정이 필요하다.
bc. // $extEnscript[“.pas”] = “pascal”;
$extEnscript[“.rb”] = “ruby”;
p. 참고로 trac에서도 “ruby에 대한 syntax highlighting을 지원”:http://trac.growl.info/trac/wiki/TracSyntaxColoring 하는 데, 다른 언어에 대해서는 enscript나 SilverCity를 사용하지만, ruby에 대해서는 내부 코드(WikiProcessor)를 사용하는 듯 하다. 개인적으로는 “trac의 ruby code”:http://nohmad.sub-port.net/trac.cgi/workenv/file/bin/hexdump.rb 가 더 이쁘게 보인다.
h3. 설치 완료
p. “여기”:http://www.lastmind.net/websvn/ 서 결과를 볼 수 있다.
p. 유명한 프로젝트들도 조금씩 subversion으로 가고 있는데, 아직 rubyforge가 subversion을 지원하지 않아서 매우 아쉽다. 일단은 내가 구축한 websvn 페이지를 rubyforge 페이지로 링크하는 방법을 써야할 것 같다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.