June 30, 2012

Installing Subversion 1.7 on Ubuntu 12.04 precise

Subversion 1.7 comes with many new features and improvements over earlier versions. A key feature introduced in Subversion 1.7 is the centralization of the working copy metadata storage into a single location. Instead of a .svn directory in every directory in the working copy, Subversion 1.7 working copies have just one .svn directory in the root.

If you are working with Ubuntu 12.04, the default Subversion package contains Subversion 1.6. Fortunately Dominik Stadler has published a Subversion 1.7 package for Ubuntu 12.04 (precise).

Following are the instructions to install Subversion 1.7 on Ubuntu 12.04 (precise).


First install some required dependencies:

sudo apt-get install python-software-properties

Install Subversion 1.7

Install Subversion 1.7 from Dominik Stadler PPA.

sudo apt-add-repository ppa:dominik-stadler/subversion-1.7
sudo apt-get update
sudo apt-get install subversion

Fix the SSL handshake error

The libneon27 library, that Subversion 1.7 uses, needs to be updated, otherwise you will receive the following error when accessing a server via https:

SSL handshake failed: SSL error: Key usage violation in certificate has been detected

Following are the instructions to install the updated libneon27 library on Ubuntu 12.04 (precise).

Remove the libneon27 library from your system (if it is installed):

sudo apt-get remove libneon27

Install libssl 0.9.8:

sudo apt-get install libssl0.9.8

Download and install an updated version of the libneon27 library (0.29.3-3).

If you are running Ubuntu 64 bits:

cd ~/Downloads
wget http://ftp.debian.org/debian/pool/main/n/neon27/libneon27_0.29.3-3_amd64.deb
sudo dpkg -i libneon27_0.29.3-3_amd64.deb

If you are running Ubuntu 32 bits:

cd ~/Downloads
wget http://ftp.debian.org/debian/pool/main/n/neon27/libneon27_0.29.3-3_i386.deb
sudo dpkg -i libneon27_0.29.3-3_i386.deb

Now we will create a bash alias to preload the right libneon version when invoking the svn command. Edit your .bashrc file:

nano ~/.bashrc

Add the following alias at the end of the file:

alias svn='LD_PRELOAD=/usr/lib/libneon.so.27 svn'

Save the .bashrc file and finally reload the .bashrc file:

source ~/.bashrc

Now you can test and use Subversion 1.7.