¡Esta es una revisión vieja del documento!
– Juan Gabriel Covas - 2019
How to build Subversion / SVN from Sources, on CentOS 7 or Ubuntu 18 or Ubuntu 19, so you can use the latest subversion version. This how-to is based on this blog post: Building Subversion on Ubuntu 12.10
NOTE: This how-to is OK for a subversion client OR updating the binaries of a subversion SERVER that does NOT use Apache or any other stuff. Since I'm only interested in svn+ssh
protocol, it's fine for me. Anyway a subversion SERVER requires more setup if you want to use Apache, svn+ssh, etc. which is not the purpose of this document. You can check my notes on setup a subversion server for svn+ssh
Tested on CentOS 7 (minimal install, NO stock subversion installed)
Subversion build: success as normal user, under /home/user/src
Pre-requisites (and some other tools I like)
yum install net-tools bind-utils nano yum install net-tools wget nano perl mlocate mailx bind-utils crontabs cronie rsync openssh-server unzip perl-libwww-perl yum-utils deltarpm curl psmisc git cpan colorize colordiff pwgen bc yum install epel-release yum install cpan colorize colordiff pwgen perl-LWP-Protocol-https yum install gcc libevent libevent-devel zlib zlib-devel bzip2-devel gamin-devel lua lua-devel openssl-devel pcre pcre-devel pcre-static libmcrypt libmcrypt-devel yum install libjpeg-turbo-utils optipng gifsicle yum install zlib-devel libuuid-devel gcc make git autoconf autogen automake pkgconfig yum install utf8proc utf8proc-devel apr apr-devel apr-util apr-util-devel libtool
Installing subversion from sources:
cd ~; mkdir src; cd src wget http://ftp.cixug.es/apache/subversion/subversion-1.12.2.tar.gz tar xzf subversion-* cd subversion-* ./get-deps.sh apr serf zlib sqlite cd apr/; ./buildconf cd ../apr-util; ./buildconf cd ../apr-util/xml/expat/; ./buildconf.sh; cd ../../..
Needed for CentOS:
export LIBTOOL_M4=/usr/share/aclocal export LIBTOOL_CONFIG=/usr/share/libtool/config
Then autogen
will work:
./autogen.sh ./configure --with-lz4=internal make make check sudo make install
# svn --version --quiet 1.12.2
Tested on Ubuntu 19 Server (minimal install, NO stock subversion previously installed)
Subversion build: success as a normal user, in /home/user/src
Pre-requisites on Ubuntu 18
# apt-get install build-essential git libtool libtool-bin unzip libutf8proc1 libutf8proc-dev
Pre-requisites on Ubuntu 19 (libutf8proc1 is not needed anymore)
# apt-get install build-essential git libtool libtool-bin unzip
More pre-requisites:
deb-src
inside the file /etc/apt/sources.list
sudo apt-get update
sudo apt-get build-dep subversion
Download subversion sources:
# cd ~; mkdir src; cd src # wget http://ftp.cixug.es/apache/subversion/subversion-1.12.2.tar.gz # tar xvzf subversion-* # cd subversion-1.12.2
Going to compile and install subversion from sources on Ubuntu:
# ./get-deps.sh apr serf zlib sqlite # cd apr/; ./buildconf # cd ../apr-util; ./buildconf # cd ../apr-util/xml/expat/; ./buildconf.sh; cd ../../..
Continue:
# ./autogen.sh # ./configure --with-lz4=internal # make # make check # sudo make install
Everything went OK, make and (sudo) make install, BUT got this error when tried to execute svn
command:
# svn svn: error while loading shared libraries: libsvn_ra_svn-1.so.0: cannot open shared object file: No such file or directory
Fixed forcing ldconfig
:
sudo ldconfig
Then it works:
# svn --version --quiet 1.12.2
If you RE-build a new version from sources, you should move all files libsvn_*
from /usr/local/lib
to some “old” directory to avoid the following errors when doing make
(this is an example when I re-build svn v1.12 when previously compiled 1.11 on the same box):
../../subversion/libsvn_client/.libs/libsvn_client-1.so: undefined reference to `svn_wc__get_experimental_dir' ../../subversion/libsvn_client/.libs/libsvn_client-1.so: undefined reference to `svn_wc__find_copies_of_repos_path' collect2: error: ld returned 1 exit status build-outputs.mk:1194: recipe for target 'subversion/svnmucc/svnmucc' failed make: *** [subversion/svnmucc/svnmucc] Error 1
After moving the files, make
succeeded.