6/5/08

Compile subversion on Fedora core 6

I just move to new company. My first job here is setup a svn on FC6 box. This post is about how i built it.
First download, compile and install apache[must be 2.0 version to have same apr version as subversion-deps-1.4.6.tar.bz2]

[root@localhost ~]# wget http://mirrors.issp.co.th/apache/httpd/httpd-2.0.63.tar.bz2
...
[root@localhost ~]# tar xjf httpd-2.0.63.tar.bz2
[root@localhost ~]# cd httpd-2.0.63
[root@localhost httpd-2.0.63]# ./buildconf
[root@localhost httpd-2.0.63]# ./configure --enable-dav --enable-so --enable-maintainer-mode --prefix=/usr/local/apache20
...
[root@localhost httpd-2.0.63]# make && make install
...
[root@localhost httpd-2.0.63]# cd ..
[root@localhost ~]#

then download subversion source code and the subversion dependencies source code, extract both then go to compile and install apr, apr-util, neon and subversion itself.
[root@localhost ~]# wget http://subversion.tigris.org/downloads/subversion-1.4.6.tar.bz2
...
[root@localhost ~]# wget http://subversion.tigris.org/downloads/subversion-deps-1.4.6.tar.bz2
...
[root@localhost ~]# tar xjf subversion-1.4.6.tar.bz2
[root@localhost ~]# tar xjf subversion-deps-1.4.6.tar.bz2
[root@localhost ~]# cd subversion-1.4.6/apr
[root@localhost apr]# ./configure --prefix=/usr/local/apr
...
[root@localhost apr]# make && make install
...
[root@localhost apr]# cd ../apr-util
[root@localhost apr-util]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
...
[root@localhost apr-util]# make && make install
...
[root@localhost apr-util]# cd ../neon
[root@localhost neon]# ./configure --prefix=/usr/local/neon
...
[root@localhost neon]# make && make install
...
[root@localhost neon]# cd ..
[root@localhost subversion-1.4.6]# ./configure --prefix=/usr/local/subversion --with-apxs=/usr/local/apache20/bin/apxs --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/ --with-neon=/usr/local/neon/ --with-ssl
...
[root@localhost subversion-1.4.6]# make && make install
...
[root@localhost subversion-1.4.6]#

now subversion is already installed, add apache user
[root@localhost subversion-1.4.6]# groupadd apache
[root@localhost subversion-1.4.6]# useradd -g apache -d /usr/local/apache20
[root@localhost subversion-1.4.6]# chown -Rv apache.apache /usr/local/apache20

edit /usr/local/apache2/conf/httpd.conf change..
User nobody
Group #-1

to
User apache
Group apache

and add this code to end of file.
<Location /subversion>
DAV svn
SVNPath /usr/local/subversion/repository/
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /usr/local/subversion/repository/conf/svn-auth-file
Require valid-user
</Location>

create password with this command
/usr/local/apache20/bin/htpasswd -cmd /usr/local/subversion/repository/conf/svn-auth-file {user-name}

create a repository
[root@localhost ~]# mkdir -v /usr/local/subversion/repository
[root@localhost ~]# svnadmin create --fs-type fsfs /usr/local/subversion/repository
[root@localhost ~]#

Last to test I will try import some file to repos.
[root@localhost src]# touch source1
[root@localhost src]# touch source2
[root@localhost src]# ls
source1 source2
[root@localhost src]# svn -m "initial import to svn" import . http://127.0.0.1/subversion/
Authentication realm: Subversion repository
Password for 'root':
Authentication realm: Subversion repository
Username: swd
Password for 'swd':
svn: Can't create directory '/usr/local/subversion/repository/db/transactions/0-1.txn': Permission denied

uhh.. you need to make apache user can access all the files in the repository.
[root@localhost src]# chown -R apache.apache /usr/local/subversion/repository
[root@localhost src]# chmod g+s /usr/local/subversion/repository/db
[root@localhost src]# svn -m "initial import to svn" import . http://127.0.0.1/subversion/
Authentication realm: Subversion repository
Password for 'root':
Authentication realm: Subversion repository
Username: swd
Password for 'swd':
Adding source1
Adding source2

Committed revision 1.
[root@localhost src]#

That's all. You can browse repos. via url 'http://127.0.0.1/subversion/'.

1 comments:

Anonymous said...

I did everything and went to the url localhost/repository and I get a url not found :( Maybe I'm missing something?