本文简单的介绍SVN的编译和安装过程。
1. SVN源码包下载
从以下URL下载源码包:
subversion-1.4.4.tar.bz2 http://subversion.tigris.org/downloads/subversion-1.4.4.tar.bz2
subversion-deps-1.4.4.tar.bz2 http://subversion.tigris.org/downloads/subversion-deps-1.4.4.tar.bz2
2. 编译步骤
执行以下2条命令,解压得到源程序:
tar -jxf subversion-1.4.4.tar.bz2
tar -jxf subversion-deps-1.4.4.tar.bz2
通过以下命令编译SVN:
cd subversion-1.4.4
./configure
make
执行以下命令安装SVN:
make install
3. 安装SVN客户端
经过"make install"命令后,就安装的整个 SVN的系统。但在只作客户端的机器上,只需要运行svn命令就完成代码的捡出、提交等SVN功能了。这样,我们可以将目前编译的svn程序打包后,安装到其它机器上就可以了。
注意:文件subversion/svn/svn只是脚步文件,真正的二进制可执行文件为subversion/svn/.libs/svn。
[root@localhost subversion-1.4.4]# file subversion/svn/svn
subversion/svn/svn: Bourne shell script text executable
[root@localhost subversion-1.4.4]# file subversion/svn/.libs/svn
subversion/svn/.libs/svn: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), not stripped
我们先看看svn关联的动态库,结果如下显示:
[root@localhost subversion-1.4.4]# ldd subversion/svn/.libs/svn
libsvn_client-1.so.0 => /usr/local/lib/libsvn_client-1.so.0 (0x40013000)
libsvn_wc-1.so.0 => /usr/local/lib/libsvn_wc-1.so.0 (0x40034000)
libsvn_ra-1.so.0 => /usr/local/lib/libsvn_ra-1.so.0 (0x4005c000)
libsvn_diff-1.so.0 => /usr/local/lib/libsvn_diff-1.so.0 (0x40060000)
libsvn_ra_local-1.so.0 => /usr/local/lib/libsvn_ra_local-1.so.0 (0x40066000)
libsvn_repos-1.so.0 => /usr/local/lib/libsvn_repos-1.so.0 (0x4006c000)
libsvn_fs-1.so.0 => /usr/local/lib/libsvn_fs-1.so.0 (0x40088000)
libsvn_fs_fs-1.so.0 => /usr/local/lib/libsvn_fs_fs-1.so.0 (0x4008e000)
libsvn_ra_svn-1.so.0 => /usr/local/lib/libsvn_ra_svn-1.so.0 (0x400a5000)
libsvn_ra_dav-1.so.0 => /usr/local/lib/libsvn_ra_dav-1.so.0 (0x400b4000)
libsvn_delta-1.so.0 => /usr/local/lib/libsvn_delta-1.so.0 (0x400de000)
libsvn_subr-1.so.0 => /usr/local/lib/libsvn_subr-1.so.0 (0x400e7000)
libaprutil-0.so.0 => /usr/local/apr/lib/libaprutil-0.so.0 (0x40111000)
libapr-0.so.0 => /usr/local/apr/lib/libapr-0.so.0 (0x40125000)
libpthread.so.0 => /lib/i686/libpthread.so.0 (0x40150000)
librt.so.1 => /lib/librt.so.1 (0x40180000)
libm.so.6 => /lib/i686/libm.so.6 (0x40191000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x401b3000)
libnsl.so.1 => /lib/libnsl.so.1 (0x401e0000)
libdl.so.2 => /lib/libdl.so.2 (0x401f6000)
libgssapi_krb5.so.2 => /usr/kerberos/lib/libgssapi_krb5.so.2 (0x401f9000)
libkrb5.so.3 => /usr/kerberos/lib/libkrb5.so.3 (0x4020c000)
libk5crypto.so.3 => /usr/kerberos/lib/libk5crypto.so.3 (0x40269000)
libcom_err.so.3 => /usr/kerberos/lib/libcom_err.so.3 (0x40279000)
libexpat.so.0 => /usr/lib/libexpat.so.0 (0x4027b000)
libz.so.1 => /usr/lib/libz.so.1 (0x4029c000)
libc.so.6 => /lib/i686/libc.so.6 (0x42000000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
svn关联的一堆动态库,如果要将本机编译的svn程序复制到其他机器上运行,还必须带上这些动态库,比较麻烦。而且有时复制这些文件后,由于覆盖了原有的动态库可能影响其它程序的运行。
因此,我们需要重新编译一个只链接静态库的svn程序,该svn程序就不再关联任何动态库。若需要再其他机器上安装客户端,只需复制单个文件svn就可以了。
编译过程如下:
./configure --enable-all-static
make
通过以下步骤编译生成的svn程序为subversion/svn/svn。
[root@Outside ~/subversion-1.4.4]# file subversion/svn/svn
subversion/svn/svn: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.0.0, statically linked, stripped
我们看看svn程序的动态库关联情况。
[root@Outside ~/subversion-1.4.4]# ldd subversion/svn/svn
not a dynamic executable
因为该文件连接的为静态库,所以文件比较大,我们可以通过strip命令去除调试信息。
这样只要单独复制该文件到客户机上就可以了。
[root@Outside ~/subversion-1.4.4]# ls -l subversion/svn/svn
-rwxr-xr-x 1 root 1000 13120320 Nov 9 16:25 subversion/svn/svn
[root@Outside ~/subversion-1.4.4]# strip subversion/svn/svn
[root@Outside ~/subversion-1.4.4]# ls -l subversion/svn/svn
-rwxr-xr-x 1 root 1000 1750300 Nov 9 16:31 subversion/svn/svn
1. SVN源码包下载
从以下URL下载源码包:
subversion-1.4.4.tar.bz2 http://subversion.tigris.org/downloads/subversion-1.4.4.tar.bz2
subversion-deps-1.4.4.tar.bz2 http://subversion.tigris.org/downloads/subversion-deps-1.4.4.tar.bz2
2. 编译步骤
执行以下2条命令,解压得到源程序:
tar -jxf subversion-1.4.4.tar.bz2
tar -jxf subversion-deps-1.4.4.tar.bz2
通过以下命令编译SVN:
cd subversion-1.4.4
./configure
make
执行以下命令安装SVN:
make install
3. 安装SVN客户端
经过"make install"命令后,就安装的整个 SVN的系统。但在只作客户端的机器上,只需要运行svn命令就完成代码的捡出、提交等SVN功能了。这样,我们可以将目前编译的svn程序打包后,安装到其它机器上就可以了。
注意:文件subversion/svn/svn只是脚步文件,真正的二进制可执行文件为subversion/svn/.libs/svn。
[root@localhost subversion-1.4.4]# file subversion/svn/svn
subversion/svn/svn: Bourne shell script text executable
[root@localhost subversion-1.4.4]# file subversion/svn/.libs/svn
subversion/svn/.libs/svn: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), not stripped
我们先看看svn关联的动态库,结果如下显示:
[root@localhost subversion-1.4.4]# ldd subversion/svn/.libs/svn
libsvn_client-1.so.0 => /usr/local/lib/libsvn_client-1.so.0 (0x40013000)
libsvn_wc-1.so.0 => /usr/local/lib/libsvn_wc-1.so.0 (0x40034000)
libsvn_ra-1.so.0 => /usr/local/lib/libsvn_ra-1.so.0 (0x4005c000)
libsvn_diff-1.so.0 => /usr/local/lib/libsvn_diff-1.so.0 (0x40060000)
libsvn_ra_local-1.so.0 => /usr/local/lib/libsvn_ra_local-1.so.0 (0x40066000)
libsvn_repos-1.so.0 => /usr/local/lib/libsvn_repos-1.so.0 (0x4006c000)
libsvn_fs-1.so.0 => /usr/local/lib/libsvn_fs-1.so.0 (0x40088000)
libsvn_fs_fs-1.so.0 => /usr/local/lib/libsvn_fs_fs-1.so.0 (0x4008e000)
libsvn_ra_svn-1.so.0 => /usr/local/lib/libsvn_ra_svn-1.so.0 (0x400a5000)
libsvn_ra_dav-1.so.0 => /usr/local/lib/libsvn_ra_dav-1.so.0 (0x400b4000)
libsvn_delta-1.so.0 => /usr/local/lib/libsvn_delta-1.so.0 (0x400de000)
libsvn_subr-1.so.0 => /usr/local/lib/libsvn_subr-1.so.0 (0x400e7000)
libaprutil-0.so.0 => /usr/local/apr/lib/libaprutil-0.so.0 (0x40111000)
libapr-0.so.0 => /usr/local/apr/lib/libapr-0.so.0 (0x40125000)
libpthread.so.0 => /lib/i686/libpthread.so.0 (0x40150000)
librt.so.1 => /lib/librt.so.1 (0x40180000)
libm.so.6 => /lib/i686/libm.so.6 (0x40191000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x401b3000)
libnsl.so.1 => /lib/libnsl.so.1 (0x401e0000)
libdl.so.2 => /lib/libdl.so.2 (0x401f6000)
libgssapi_krb5.so.2 => /usr/kerberos/lib/libgssapi_krb5.so.2 (0x401f9000)
libkrb5.so.3 => /usr/kerberos/lib/libkrb5.so.3 (0x4020c000)
libk5crypto.so.3 => /usr/kerberos/lib/libk5crypto.so.3 (0x40269000)
libcom_err.so.3 => /usr/kerberos/lib/libcom_err.so.3 (0x40279000)
libexpat.so.0 => /usr/lib/libexpat.so.0 (0x4027b000)
libz.so.1 => /usr/lib/libz.so.1 (0x4029c000)
libc.so.6 => /lib/i686/libc.so.6 (0x42000000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
svn关联的一堆动态库,如果要将本机编译的svn程序复制到其他机器上运行,还必须带上这些动态库,比较麻烦。而且有时复制这些文件后,由于覆盖了原有的动态库可能影响其它程序的运行。
因此,我们需要重新编译一个只链接静态库的svn程序,该svn程序就不再关联任何动态库。若需要再其他机器上安装客户端,只需复制单个文件svn就可以了。
编译过程如下:
./configure --enable-all-static
make
通过以下步骤编译生成的svn程序为subversion/svn/svn。
[root@Outside ~/subversion-1.4.4]# file subversion/svn/svn
subversion/svn/svn: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.0.0, statically linked, stripped
我们看看svn程序的动态库关联情况。
[root@Outside ~/subversion-1.4.4]# ldd subversion/svn/svn
not a dynamic executable
因为该文件连接的为静态库,所以文件比较大,我们可以通过strip命令去除调试信息。
这样只要单独复制该文件到客户机上就可以了。
[root@Outside ~/subversion-1.4.4]# ls -l subversion/svn/svn
-rwxr-xr-x 1 root 1000 13120320 Nov 9 16:25 subversion/svn/svn
[root@Outside ~/subversion-1.4.4]# strip subversion/svn/svn
[root@Outside ~/subversion-1.4.4]# ls -l subversion/svn/svn
-rwxr-xr-x 1 root 1000 1750300 Nov 9 16:31 subversion/svn/svn