使用到的安装包:
apr-1.5.1.tar.gz
apr-util-1.5.3.tar.gz
pcre-8.35.tar.gz
httpd-2.4.9.tar.bz2
subversion-1.8.9.tar.bz2
zlib-1.2.8.tar.gz
scons-2.3.1.tar.gz
serf-1.3.5.tar.bz2
sqlite-amalgamation-3080403.zip
openssl-1.0.1g.tar.gz
解压缩命令:
tar zxvf ***.tar.gz
tar jxvf ***.tar.bz2
unzip ***.zip
1.先安装apr
cd apr-1.5.1
./configure --prefix=/usr/local/apr
make
sudo make install
2.安装apr-util
cd apr-util-1.5.3
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make
sudo make install
3.安装pcre
cd pcre-8.35
./configure --prefix=/usr/local/pcre
make
make install

(安装pcre报错configure: error: You need a C++ compiler for C++ support)

sudo apt-get install build-essential
(Ubuntu默认并不提供C/C++的编译环境)或者:
yum install -y gcc gcc-c++
4.安装openssl
cd openssl-1.0.1g
./config -fPIC --prefix=/usr/local/openssl/ enable-shared
make
sudo make install PIC就是position independent code,它的作用是代码共享,如果不加-fPIC,则加载.so文件的代码段时,代码段引用的数据对象需要重定位, 重定位会修改代码段的内容,这就造成每个使用这个.so文件代码段的进程在内核里都会生成这个.so文件代码段的copy.
5.安装httpd
./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre --with-openssl=/usr/local/openssl --with-ssl
make
make install
6.启动httpd
sudo /usr/local/apache/bin/apachectl start     (stop|restart)
启动httpd报错:AH00558: httpd: Could not reliably determine the server's fully qualified domain name
sudo vi /usr/local/apache/conf/httpd.conf 找到#ServerName new.host.name:80,去掉前面的#,重启Apache
 
7.安装zlib-1.2.8
cd zlib-1.2.8/
./configure --prefix=/usr/local/zlib
make
sudo make install
8.安装serf
cd scons-2.3.1
sudo python setup.py install
sudo ln -s /usr/local/bin/scons /usr/bin
scons --version
cd serf-1.3.5
scons PREFIX=/usr/local/serf APR=/usr/local/apr APU=/usr/local/apr-util OPENSSL=/usr/local/openssl
sudo scons install
配置scons的时候报错:zlib.h: No such file or directory
sudo cp /usr/local/zlib/include/zlib.h /usr/local/include
sudo cp /usr/local/zlib/include/zconf.h /usr/local/include
9.安装svn
cp -r sqlite-amalgamation-3080403 subversion-1.8.9/sqlite-amalgamation
cd subversion-1.8.9/
./configure --prefix=/usr/local/svn --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-zlib=/usr/local/zlib --with-apxs=/usr/local/apache/bin/apxs --enable-maintainer-mode --with-openssl=/usr/local/openssl --with-serf=/usr/local/serf
make
sudo make install
报错:configure: error: Subversion requires SQLite
在http://www.sqlite.org官网下载最新版的sqlite-amalgamation.zip,解压缩到subversion-1.8.9目录下新建的sqlite-amalgamation文件夹 报错:libexpat.so.1: cannot open shared object file: No such file or directory
链接库文件没有找到的问题
sudo /etc/ld.so.conf
  最后另起一行,添加该共享库的绝对路径
  /usr/local/serf/lib
sudo ldconfig
10.创建配置库根目录并赋权:
sudo adduser apache
sudo mkdir /usr/svn_root
sudo mkdir /usr/svn_root/config
sudo mkdir /usr/svn_root/repository
sudo chmod -R 770 /usr/svn_root/
sudo chown -R apache:apache /usr/svn_root/
11.配置apache的httpd文件(整合svn和apache)
sudo cp /usr/local/svn/libexec/mod_dav_svn.so /usr/local/apache/modules/
sudo cp /usr/local/svn/libexec/mod_authz_svn.so /usr/local/apache/modules/
sudo vi /usr/local/apache/conf/httpd.conf
a修改User和Group为apache账号启动
User apache
Group apache
b: 把下面两个行前面的#号去掉,注意行前不能有空格:
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
c: 在模块加载的最后添加下面两句:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
d: 在配置文件最末尾添加:
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath "/usr/svn_root/repository"
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile "/usr/svn_root/config/passwd.conf"
AuthzSVNAccessFile "/usr/svn_root/config/authz.conf"
Require valid-user
</Location>
注释:
SVNParentPath------------------SVN的库根目录路径,可以在这下面创建多个版本库;
AuthUserFile-------------------用户帐号信息文件;
AuthzSVNAccessFile-------------权限控制文件
12.创建代码库,并增加svn用户,赋予权限(切换到apache账户)
su apache
创建代码库repo1
/usr/local/svn/bin/svnadmin create /usr/svn_root/repository/repo1
创建svn用户,第一次增加需要加-c参数(创建新的passwd.conf文件)
/usr/local/apache/bin/htpasswd -c /usr/svn_root/config/passwd.conf wwl
New password:
Re-type new password:
Adding password for user wwl
/usr/local/apache/bin/htpasswd /usr/svn_root/config/passwd.conf test1
/usr/local/apache/bin/htpasswd /usr/svn_root/config/passwd.conf test2
/usr/local/apache/bin/htpasswd /usr/svn_root/config/passwd.conf test3
vi /usr/svn_root/config/authz.conf
[groups]
admin = wwl
CM = test1
test = test3,test2 [/]
* =
@admin = rw
@CM = r [repo1:/]
* =
@CM = rw
@test = r [repo1:/branches]
@test = rw
[repo1:/trunk]
test2 = rw
[groups]代表组定义:“组名 = 用户1,用户2...”;

[repo1:/]代表repo1配置库,repo1是配置库名称;

[repo1:/trunk]代表repo1配置库下/trunk目录;

@ 符号,则表示这是个群组权限设置;

@ admin = rw代表admin 这个组的所有用户有读写权限

test2 = rw代表test2这个用户对trunk有读写权限

PS:注意svn的权限继承关系

13.重启apache:

增加repo1代码库里面文件并上传后,重启apache会看到:

sudo /usr/local/apache/bin/apachectl restart

题外话:

每次输svn、apache命令都要写绝对地址好烦,ln是你的好帮手

sudo ln -s /usr/local/svn/bin/* /usr/bin
sudo ln -s /usr/local/apache/bin/* /usr/bin


使用svn涉及到http路径的话 例如:svn checkout http://192.168.186.144/svn/repo1
报错svn: E170000: Unrecognized URL scheme for ${url}
原因:从Subversion-1.8开始需要使用serf软件包支持访问http协议的版本库
解决方法:安装serf  https://code.google.com/p/serf/
安装serf1.3.x需要先安装scons  http://www.scons.org/

svn1.8.x需要serf1.2.1和以上的版本:
serf1.2.1使用make方式安装
serf1.3.x使用scons方式安装
任君选择

如果不安装serf,本机器作为客户端使用svn命令行涉及http路径会有问题,但是不妨碍其作为服务器端对外提供服务。


Yesterday you say tomorrow...

Ubuntu 源码方式安装Subversion的更多相关文章

  1. centos7下源码方式安装gitlab8.9+发送邮件+ldap

    CentOS7下源码方式安装gitlab 环境描述 操作系统: centos7 redis: >=2.8 mysql >=5.5.14 git >=2.7.4 架构设计 一台gitl ...

  2. 源码方式安装 lrzsz 库

    我们都知道安装了lrzsz工具的linux系统环境: 在shell里可以非常方便的上传和下载linux里面的文件: 通常的安装方式: yum install lrzsz sudo apt-get in ...

  3. 源码方式安装 lrzsz库

    源码方式安装 lrzsz库:https://www.cnblogs.com/cocoajin/p/11731787.html 我们都知道安装了lrzsz工具的linux系统环境,在shell里可以非常 ...

  4. Linux上生产环境源码方式安装配置postgresql12

    1.Linux上源码方式安装postgresql12 01.准备操作系统环境 echo "192.168.1.61 tsepg61" >> /etc/hosts mou ...

  5. Centos7.X 源码编译安装subversion svn1.8.x

    说明:SVN(subversion)的运行方式有两种:一种是基于Apache的http.https网页访问形式:还有一种是基于svnserve的独立服务器模式.SVN的数据存储方式也有两种:一种是在B ...

  6. centos 6.5源码编译安装subversion 1.8.10

    一.简介 CentOS 6.5的yum源可以安装的SVN客户端版本太低了,1.6.11,所以需要升级到1.8.10,而官网有没有找到1.8.10的安装包,只能选择源码编译安装. 二.安装步骤 参考官网 ...

  7. 2-14 MySQL初步认识,及CentOS6.8环境,源码方式安装MySQL

    什么是数据库: 存放数据的仓库RDBMS-->(Relational Database Management System) 关系型数据库管理系统DBMS--->(Database Man ...

  8. 树莓派学习笔记—— 源码方式安装opencv

    0.前言     本文介绍怎样在树莓派中通过编译源码的方式安装opencv,并通过一个简单的样例说明怎样使用opencv.     很多其它内容请參考--[树莓派学习笔记--索引博文] 1.下载若干依 ...

  9. Centos6 系统下源码方式安装Mysql 记录

    在运维工作中经常部署各种运维环境,涉及mysql数据库的安装也是时常需要的.mysql数据库安装可以选择yum在线安装,但是这种安装的mysql一般是系统自带的,版本方面可能跟需求不太匹配. #### ...

随机推荐

  1. Apache参数的优化(转)

    按照前面提到的版本问题,Apache可以直接使用2.0版本产品线.针对Apache的优化主要是针对httpd.conf的优化,当然还有其他地方,如果特别留意的话,网上常有专家惊呼“居然这么多人忽略xx ...

  2. Detecting Underlying Linux Distro

    If you are the owner of the system, then you know which Linux is installed and running. This article ...

  3. vim选择命令

    最近在做一些无聊的客户化OSD,发现结合vim的一些命令更简单. 1.全选:ggVG(V:shift+v) 解释是:gg 让光标移到首行,在vim才有效,vi中无效:V 是进入Visual(可视)模式 ...

  4. 绝对定位的div的居中方法,下面的写法兼容IE系列浏览器和火狐浏览器。

    详细解说,直接看样式:#dingwei{padding:10px;background-color:#003300;color:#FFFFFF; width:600px;height:300px; d ...

  5. ASP.NET中Cookie跨域的问题及解决代码

    ASP.NET中Cookie跨域的问题及解决代码 http://www.liyumei.net.cn/post/share18.html Cookies揭秘  http://www.cnblogs.c ...

  6. Java Web开发基础(2)-JSP

    上一篇博我粗略的介绍了一下Servlet.粗略是由于博主也刚刚学习这部分的内容,还不是非常懂所以无法讲的非常精细.可是本着二八原则,我还是先继续学习.所以,这篇博客接着JSP的内容.由于.这两个内容关 ...

  7. Calendar 对象的使用实例

    1.Calendar demo例子 JavaCalendar 类时间操作,示范代码. public class CalendarDemo { private static SimpleDateForm ...

  8. [Git] Git fetch和git pull的区别

    reference : http://blog.csdn.net/hudashi/article/details/7664457 Git中从远程的分支获取最新的版本到本地有这样2个命令:1. git ...

  9. [Android Pro] Swift 3.0多线程

    本文只介绍Grand Central Dispath(GCD) 中央调度 个人认为一个GCD就够用了,可能是改版或是其他的在找之前写的多线程方法时发现不能用了,看文档之后发现改了,现在看上去更加简单易 ...

  10. [Android UI] ActionBar 自定义属性

    actionbar 默认放在顶部, 如果在application或者activity中加入 android:uiOptions="splitActionBarWhenNarrow" ...