Monday, July 21, 2008

Using svn and got "Unrecognized URL scheme."

This morning, I built subversion-1.5.0 from source using the ./configure, make and make install. Then I tried to check out a repository and got this error:
$ svn checkout http://svn.assembla.com/svn/blog1/ --username azim.babu
svn: Unrecognized URL scheme for 'http://svn.assembla.com/svn/blog1'

It seemed to be a curious problem to analyze. So I did some googling and found these from http://subversion.tigris.org/faq.html :

Subversion uses a plugin system to allow access to repositories. Currently there are three of these plugins: ra_local allows access to a local repository, ra_dav which allows access to a repository via WebDAV, and ra_svn allows local or remote access via the svnserve server. When you attempt to perform an operation in Subversion, the program tries to dynamically load a plugin based on the URL scheme. A `file://' URL will try to load ra_local, and an `http://' URL will try to load ra_dav.

The error you are seeing means that the dynamic linker/loader can't find the plugins to load. This normally happens when you build Subversion with shared libraries, then attempt to run it without first running 'make install'. Another possible cause is that you ran make install, but the libraries were installed in a location that the dynamic linker/loader doesn't recognize. Under Linux, you can allow the linker/loader to find the libraries by adding the library directory to /etc/ld.so.conf and running ldconfig. If you don't wish to do this, or you don't have root access, you can also specify the library directory in the LD_LIBRARY_PATH environment variable.

So what I got is that I was not able to setup the SVN on my ubuntu box properly. Here even after compiling the source I was not able to enable the support of ra_dav module for http and https protocol. So I did a little googling again and found that I was missing neon. So I download neon from http://www.webdav.org/neon/neon-0.28.1.tar.gz , extract the tarball and install neon using ./configure, make and make install.
Then I recompile subversion as follows:
$ ./configure --with-ssl --with-apr=/usr/local/apache2/bin/apr-config --with-apr-util=/usr/local/apache2/bin/apu-config --with-neon=/usr/local
$ make
$ sudo make install

A little explanation of the above options are:

--with-apr : prefix for installed APR, path to APR build tree, or the full path to apr-config

--with-apr-util : prefix for installed APU, path to APU build tree, or the full path to apu-config

--with-neon : Determine neon library configuration based on 'PREFIX/bin/neon-config'. Default is to search for in a subdirectory of the top source directory.

As I installaed neon without any option during configure, it should be /usr/local for my case :P

Although all these steps may seem to be very much intuitive for many, I think for newbies, this type of blog post may provide some sort of quick help. :)

19 comments:

Shaikh Sonny Aman said...

ajob problem!
thanks for digging out the solution, surely it will help many of us.

Aravindhan Arumugham said...

--with-apr parameter and --with-apr-util parameter are incorrect. I faced this error while running configure with the options you mentioned. Can you help more on solving this. thanks.

K.M. Fazle Azim Babu said...

Can u tell me specifically what errors you are getting? It will then be easier for me to trace back and try for a solution.

Anyway, I guess, ur apache is not installed at the same location like mine.
I installed apache in /usr/local/apache2 and my apache version is 2.0.59 and I installed apache using PREFIX parameter during configure...

K.M. Fazle Azim Babu said...

Those parameters are not incorrect.
I guess u provided wrong values for those parameters :)

Fernando González Cortés said...

many thanks!

I just wanted the client and I did
./configure --with-ssl --with-neon=/usr/local

and I checked out perfectly

Ashish said...

Awsome!! exactly what i was looking for...
Google+this post made my day :)

Pedro L said...

Awesome find! I don't normally respond to these posts but I felt like I had to. Thanks! Happy New Year!

larrycai said...

Great, but for https, need enable it for neon as well before svn
for neon ./configure --with-ssl
for svn ./configure --with-ssl

Marchenkov Alexander said...

check svn --version

and you must see
The following repository access (RA) modules are available:

* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
- handles 'http' scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
- handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
- handles 'file' scheme

if you haven't http - install neon for subversion.

Rico said...

Thank you so much for this post. Exactly was I was looking for.

hexhead said...

Solved my problem. Thanks!

Esteban said...

I had the same problem! I installed Neon and it worked! thanks!

SJ said...

Thanx a lot;

i had fedora 7 and worked like charm 4 me ;

Just didnt get the exact need of neon in this;

Ryan said...

Issues with Make...

/usr/local/lib/libneon.a(ne_xml.o): In function `entity_declaration':
/home/ryan/Desktop/sfi/Dependencies/neon-0.29.6/src/ne_xml.c:421: undefined reference to `XML_StopParser'
collect2: ld returned 1 exit status
make: *** [subversion/libsvn_ra_neon/libsvn_ra_neon-1.la] Error 1
cd subversion/libsvn_ra_neon && /bin/bash /home/ryan/Desktop/sfi/subversion-1.7.0/libtool --tag=CC --silent --mode=link gcc -g -O2 -g -O2 -pthread -D_LARGEFILE64_SOURCE -DNE_LFS -Werror=implicit-function-declaration -rpath /usr/local/svn/lib -version-info 0 -Wl,--no-undefined -o libsvn_ra_neon-1.la commit.lo fetch.lo file_revs.lo get_dated_rev.lo get_deleted_rev.lo get_location_segments.lo get_locations.lo get_locks.lo lock.lo log.lo merge.lo mergeinfo.lo options.lo props.lo replay.lo session.lo util.lo ../../subversion/libsvn_delta/libsvn_delta-1.la ../../subversion/libsvn_subr/libsvn_subr-1.la -L/usr/local/apr/lib -laprutil-1 -L/usr/local/apr-httpd/lib -lapr-1 -L/usr/local/lib -lneon -lz -lexpat
/usr/local/lib/libneon.a(ne_xml.o): In function `entity_declaration':
/home/ryan/Desktop/sfi/Dependencies/neon-0.29.6/src/ne_xml.c:421: undefined reference to `XML_StopParser'
collect2: ld returned 1 exit status
make: *** [subversion/libsvn_ra_neon/libsvn_ra_neon-1.la] Error 1

Ryan said...
This comment has been removed by the author.
Ryan said...

This is my whole command using svn 1.7.0:

make clean; ./autogen.sh; ./configure --with-ssl --enable-javahl --with-jdk=/usr/lib/jvm/java-6-openjdk/ --prefix=/usr/local/svn --with-apr=/usr/local/apr-httpd/ --with-apr-util=/usr/local/apr/ --with-neon=/usr/local; make; sudo make install; make javahl; sudo make install-javahl

HowitZer said...

yum install neon-devel did it for me.

sharek said...

Great post! I solved my problem with LFS system

jigante said...

Great! This solved my problem.
Thank You