Subversion-1.14.2

Subversion の概要

Subversion はバージョン管理システムであり、オープンソースコミュニティにおいて CVS に代わるものとして構築されたものです。 CVS の機能を拡張しつつ、それまでの CVS と同様のインターフェースを提供しています。 ここに示すビルド手順では Subversion リポジトリを制御する、サーバー/クライアントソフトウェアをともにインストールします。 リポジトリの生成方法については Subversion サーバーの起動 において説明しています。

[注記]

注記

LFS や依存パッケージが本ブックに示す最新安定バージョンでなかった場合には、BLFS 開発版においては、パッケージのビルドや処理実行が適切に行われないことがあります。

パッケージ情報

  • ダウンロード (HTTP): https://archive.apache.org/dist/subversion/subversion-1.14.2.tar.bz2

  • ダウンロード MD5 sum: 9927b167d1c67d663ca63125907f6f69

  • ダウンロードサイズ: 8.3 MB

  • 必要ディスク容量: 208 MB (add 228 MB for bindings, 52 MB for docs, 1.3 GB for tests)

  • 概算ビルド時間: 0.5 SBU (Using parallelism=4; add 1.9 SBU for bindings, 35 SBU for tests)

Subversion の依存パッケージ

必須

Apr-Util-1.6.3, SQLite-3.44.2

Recommended

任意

Apache-2.4.58, Boost-1.84.0, Cyrus SASL-2.1.28, dbus-1.14.10, Doxygen-1.9.8 (for generating HTML documentation), gnome-keyring-42.1, libsecret-0.21.2, Py3c-1.4 (for the python bindings, and tests), Python-3.12.1 (with sqlite support for the tests), Ruby-3.2.2, SWIG-4.1.1 (for building Perl, Python and Ruby bindings), LZ4, and UTF8proc

任意; (Java バインディングビルド時)

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

Subversion のインストール

First, adapt some Python scripts to use python3:

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

Next, adapt the Ruby bindings to Ruby-3.2:

sed -e 's/File.exists?/File.exist?/'               \
    -i subversion/bindings/swig/ruby/svn/util.rb   \
       subversion/bindings/swig/ruby/test/test_wc.rb

以下のコマンドを実行して Subversion をビルドします。

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

Doxygen-1.9.8 をインストールしていて、API ドキュメントをインストールする場合は以下を実行します。

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.14 and must be downloaded separately. To build the Java bindings, issue the following command:

make -j1 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.12/site-packages/libsvn \
     swig_pydir_extra=/usr/lib/python3.12/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. Due to changes in Python-3.12, you can expect to see around 200 Syntax Warnings during the test suite due to invalid escape sequences.

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.2 &&
cp      -v -R doc/* /usr/share/doc/subversion-1.14.2

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.12/site-packages/libsvn \
      swig_pydir_extra=/usr/lib/python3.12/site-packages/svn
make install-swig-rb

The java bindings need to be installed in order for the tests to run, since the tests attempt to look for them in CLASSPATH. To test the results of the Java bindings build, issue LANG=C make check-javahl.

コマンド説明

--disable-static: このスイッチはスタティックライブラリをインストールしないようにします。

--with-apache-libexecdir: If Apache-2.4.58 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.

Subversion の設定

設定ファイル

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

設定情報

/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.

パッケージ構成

インストールプログラム: svn, svnadmin, svnbench, svndumpfilter, svnfsfs, svnlook, svnmucc, svnrdump, svnserve, svnsync, and svnversion
インストールライブラリ: libsvn_*-1.so and optionally, a Java library, the mod_dav_svn.so and mod_authz_svn.so Apache HTTP DSO modules and various Perl, Python and Ruby modules.
インストールディレクトリ: /usr/include/subversion-1, /usr/lib/perl5/site_perl/5.38/{,auto/}SVN, /usr/lib/python3.12/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.2

概略説明

svn

Subversion リポジトリにアクセスするための、コマンドラインのクライアントプログラム。

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

Subversion リポジトリを調べるためのツール。

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