#### Beyond Linux® From Scratch (systemd Edition) - Version 11.1

### Chapter 13. Programming

- Prev

  slang-2.3.2

- Next

  Running a Subversion Server

- Up
- Home

# Subversion-1.14.1

## Introduction to Subversion

Subversion is a version control system that is designed to be a compelling replacement for CVS in the open source community. It extends and enhances CVS' feature set, while maintaining a similar interface for those already familiar with CVS. These instructions install the client and server software used to manipulate a Subversion repository. Creation of a repository is covered at Running a Subversion Server.

This package is known to build and work properly using an LFS-11.1 platform.

### Package Information

- Download (HTTP): https://archive.apache.org/dist/subversion/subversion-1.14.1.tar.bz2

- Download MD5 sum: 2eccc2c7451397e01a13682600af9563

- Download size: 8.1 MB

- Estimated disk space required: 208 MB (add 228 MB for bindings, 52 MB for docs, 1.3 GB for tests)

- Estimated build time: 0.5 SBU (Using parallelism=4; add 1.9 SBU for bindings, 35 SBU for tests)

### Subversion Dependencies

#### Required

Apr-Util-1.6.1 and SQLite-3.37.2

#### Recommended

Serf-1.3.9 (for handling http:// and https:// URLs)

#### Optional

Apache-2.4.52, Boost-1.78.0, Cyrus SASL-2.1.27, dbus-1.12.20, Doxygen-1.9.3 (for generating HTML documentation), gnome-keyring-40.0, libsecret-0.20.5, Py3c-1.4 (for the python bindings, and tests) Python-2.7.18 (with sqlite support for the tests), Ruby-3.1.0, SWIG-4.0.2 (for building Perl, Python and Ruby bindings), LZ4, and UTF8proc

#### Optional (for the Java Bindings)

One of OpenJDK-17.0.2, Dante or Jikes, JUnit 4 (to test the Java bindings) and apache-ant-1.10.12.

User Notes: https://wiki.linuxfromscratch.org/blfs/wiki/subversion

## Installation of Subversion

First, adapt some Python scripts to use python3:

    grep -rl '^#!.*python$' | xargs sed -i '1s/python/&3/'

Install Subversion by running the following commands:

    PYTHON=python3 ./configure --prefix=/usr             \
                --disable-static          \
                --with-apache-libexecdir  \
                --with-lz4=internal       \
                --with-utf8proc=internal &&
    make

If you have Doxygen-1.9.3 installed and you wish to build the API documentation, issue:

    doxygen doc/doxygen.conf

If you wish to build the Java bindings pass the `--enable-javahl` parameter to the configure command. In addition, if you want to run the Java test suite, you have to specify the location of the JUnit file by adding `--with-junit=<path to junit jar>` (for instance `--with-junit=/usr/local/java/lib/junit-4.13.jar`) to configure. The JUnit jar file is no longer included in apache-ant-1.10.12 and must be downloaded separately. To build the Java bindings, issue the following command:

    make javahl

If you want to compile Perl, Python, or Ruby bindings, issue any of the following command:

    make swig-pl # for Perl
    make swig-py \
         swig_pydir=/usr/lib/python3.10/site-packages/libsvn \
         swig_pydir_extra=/usr/lib/python3.10/site-packages/svn # for Python
    make swig-rb # for Ruby

To test the results, issue: make check. Four tests in the `commit_tests.py`, `prop_tests.py`, and `update_tests.py` suites are known to fail.

To test the results of the Java bindings build, issue LANG=C make check-javahl.

To test the results of any of the SWIG bindings, you can use any of the following commands: make check-swig-pl, make check-swig-py, or make check-swig-rb.

Now, as the `root` user:

    make install &&

    install -v -m755 -d /usr/share/doc/subversion-1.14.1 &&
    cp      -v -R doc/* /usr/share/doc/subversion-1.14.1

If you built the Java bindings, issue the following command as the `root` user to install them:

    make install-javahl

If you built the Perl, Python, or Ruby bindings, issue any of the following commands as the `root` user to install them:

    make install-swig-pl
    make install-swig-py \
          swig_pydir=/usr/lib/python3.10/site-packages/libsvn \
          swig_pydir_extra=/usr/lib/python3.10/site-packages/svn
    make install-swig-rb

## Command Explanations

`--disable-static`: This switch prevents installation of static versions of the libraries.

`--with-apache-libexecdir`: If Apache-2.4.52 is installed, the shared Apache modules are built. This switch allows to have those modules installed to Apache's configured module dir instead of `/usr/libexec`. It has no effect if Apache is not installed.

`--with-lz4=internal, --with-utf8proc=internal`: Remove these switches if you have installed the optional dependencies.

`--enable-javahl`: enables compilation of Java high level bindings. Running make javahl is necessary to do the compilation.

`--with-junit=<location of the junit jar file>`: gives the location of the junit jar, otherwise the javahl tests cannot be run.

`--disable-gmock`: Do not use the Googlemock testing framework.

## Configuring Subversion

###

#### Config Files

`~/.subversion/config` and `/etc/subversion/config`

###

#### Configuration Information

`/etc/subversion/config` is the Subversion system-wide configuration file. This file is used to specify defaults for different svn commands.

`~/.subversion/config` is the user's personal configuration file. It is used to override the system-wide defaults set in `/etc/subversion/config`.

## Contents

Installed Programs: svn, svnadmin, svnbench, svndumpfilter, svnfsfs, svnlook, svnmucc, svnrdump, svnserve, svnsync, and svnversion
Installed Libraries: libsvn_*-1.so and optionally, a Java library, the mod_dav_svn.so and and mod_authz_svn.so Apache HTTP DSO modules and various Perl, Python and Ruby modules.
Installed Directories: /usr/include/subversion-1, /usr/lib/perl5/site_perl/5.34/{,auto/}SVN, /usr/lib/python3.10/site-packages/{libsvn,svn}, /usr/lib/ruby/site_ruby/<x.y.z>/{,<arch-linux>-linux/}svn, /usr/lib/svn-javahl, and /usr/share/doc/subversion-1.14.1

### Short Descriptions

svn | is a command-line client program used to access Subversion repositories
svnadmin | is a tool for creating, tweaking or repairing a Subversion repository
svnbench | is a benchmarking tool
svndumpfilter | is a program for filtering Subversion repository dumpfile format streams
svnfsfs | is the FSFS (FileSystem atop of the FileSystem - Subversion filesystem implementation) repository manipulation tool
svnlook | is a tool for inspecting a Subversion repository
svnmucc | is a Multiple URL Command Client for Subversion
svnrdump | is a tool for dumping or loading a remote Subversion repository
svnserve | is a custom standalone server program, able to run as a daemon process or invoked by SSH
svnsync | is a Subversion repository synchronisation tool
svnversion | is used to report the version number and state of a working Subversion repository copy
`libsvn_*-1.so` | are the support libraries used by the Subversion programs
`mod_authz_svn.so` | is a plug-in module for the Apache HTTP server, used to authenticate users to a Subversion repository over the Internet or an intranet
`mod_dav_svn.so` | is a plug-in module for the Apache HTTP server, used to make a Subversion repository available to others over the Internet or an intranet

Last updated on

- Prev

  slang-2.3.2

- Next

  Running a Subversion Server

- Up
- Home