使用到的安装包:
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.gzscons-2.3.1.tar.gzserf-1.3.5.tar.bz2sqlite-amalgamation-3080403.zipopenssl-1.0.1g.tar.gz

解压缩命令:
tar zxvf ***.tar.gz
tar jxvf ***.tar.bz2unzip ***.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 directorysudo cp /usr/local/zlib/include/zlib.h /usr/local/includesudo cp /usr/local/zlib/include/zconf.h /usr/local/include

9.安装svn
cp -r sqlite-amalgamation-3080403 subversion-1.8.9/sqlite-amalgamationcd 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/libsudo 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 svnSVNListParentPath onSVNParentPath "/usr/svn_root/repository"AuthType BasicAuthName "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. 源码方式安装的nginx注册到systemctl管理

    用源码方式安装的nginx每次都要进入安装目录才能进行启动.重启.停止操作,使用yum install nginx方式安装的话会自动注册到systemctl管理中,源码方式安装的nginx注册到sys ...

  2. git安装 perl ubuntu_【Git】Linux Ubuntu——源码编译安装Git 2.x 版本

    Git是一个开源的分布式版本控制系统,可以有效,高速的处理从很小到非常大的项目版本管理.Git与常用的版本控制工具CVS,Subversion等不同,它采用了分布式版本库的方式,不必服务器端软件支持. ...

  3. linux下源码安装vim,ubuntu 源码编译安装最新的vim 8.0

    为什么要源码编译安装VIM? 因为我要安装ycm,但是ubuntu14.04仓库vim版本低 教程步骤: 1, 核对系统版本 2, 删除系统自带的vim 3, 编译安装vim 4, 检验vim的安装 ...

  4. Ubuntu 13.04中源码方式安装MySQL 5.5.33

    转载:http://lssrc.com/archives/385 环境:Ubuntu 13.04 数据库:MySQL 5.5.33 1.下载MySQL 5.5.33源码,地址http://dev.my ...

  5. linux源码编译安装subversion

    一.下载安装包 subversion源码包下载 https://subversion.apache.org/download.cgi apr源码包 https://dist.apache.org/re ...

  6. CentOS 安装MySQL5.7 源码方式安装

    MySQL rpm方式安装:https://www.cnblogs.com/deverz/p/9560403.html 1.卸载已经安装的MySQL yum list installed mysqlr ...

  7. php-mcrypt 源码_源码方式安装php扩展mcrypt

    本文实际上是在CentOS下进行的,原理和在Ubuntu下源码安装一样,下图首先示例mcrypt和php的依赖关系 基本原理是:首先使mcrypt软件能够运行,然后安装php扩展模块,并在php.in ...

  8. Ubuntu源码编译安装开源飞信OpenFetion

    基于 GTK2 的开源飞信最近发布了 1.8 版本,添加飞信群支持.本次 1.8 版本有如下更新: 添加了飞信群功能 添加了桌面位置记忆功能 修复了内存溢出等段错误 减小了大图标模式的图标尺寸 更换了 ...

  9. 零基础Linux版MySQL源码方式安装+配置+远程连接完整图解 无坑实录

    无论开发还是运维,项目环境搞不定,还真让你干不成活,MySQL在不同场景.不同平台下安装方式也不同,本次主要分享centos7下MySQL源码rpm方式安装,其它方式后续分享,很多项目还都用着MySQ ...

最新文章

  1. System Center Data Protection Manager 2007补助说明
  2. 从时间管理聊到技术人如何保持竞争力?
  3. 关于使用scrapy框架编写爬虫以及Ajax动态加载问题、反爬问题解决方案
  4. websphere 内存溢出处理
  5. 案例开发分析 || ​​​​​​​Scheduler组件
  6. 使JavaDoc保持最新状态的工具
  7. Coursera自动驾驶课程第14讲:Linear and Nonlinear Kalman Filters
  8. python动态执行语句_Python Language
  9. evoc服务器长鸣报警显示正常,研祥工业服务器出大事了!
  10. 【硬核科技】转行AI,从零出发
  11. python处理一些乱码的中文文本时decode('utf-8')报错的处理
  12. Android Studio真机测试失败-----''No target device found
  13. android中listview的item滑动删除效果(已解决listview点击问题)
  14. 软件著作权申请流程及模板
  15. 算法系列经典书籍:计算机算法设计与分析(第三版)-王晓东编著-电子工业出版社(高清版课本+课后习题答案)
  16. 如何用python编写财务记账软件_python实现日常记账本小程序
  17. 简单典型二阶系统_关于石墨烯结构的典型拉曼光谱特征,这一篇讲得非常透彻!...
  18. 【和76】龙头企业在区域市场中竞合关系分析样例(温微观察13-6)
  19. FPGA学习积累之AM调制解调(解调部分没搞太明白)
  20. 测序是测量你的遗传信息

热门文章

  1. ckeditor 图片上传_开发问题:Django使用ckeditor上传到七牛云
  2. python的类里的属性是否可以为列表_Python中如何获取类属性的列表
  3. element ui select 自动向上向下弹出_达观数据:Selenium使用技巧与机器人流程自动化实战...
  4. 开发浏览器监控网页数据变化_贝程学院:Selenium辅助开发工具Firebug和Firepath
  5. 手机端html5 面试,今日头条 张祖俭 - H5动画在移动平台上的性能优化实践
  6. asp.net 获取客户端mac_Mac软件安利(人人影视 for Mac 3.1.2)
  7. PCL学习笔记02:在ROS下建立编译链接PCL模块
  8. VB案例:素数判断与合数分解
  9. 2017.3.16 聪聪可可 思考记录(非常不容易)
  10. 【英语学习】【Level 07】U04 Rest and Relaxation L6 Your home away from home