01 前言
最近公司要推行程序包版本管理规范,需要借助svn工具进行流转程序包,于是,作为配置管理员的我又开始安装折腾工具了...
但是没想到,这是一路血路辛酸史
02 安装过程及踩坑记录
首先,本人公司的权限管理及信息安全军用级别,所以我只能在内网机服务器上安装,首先否定yum安装方式,小小吐槽一下
服务器资源:Centos 7.2
Subversion安装文件:subversion-1.9.10.tar.gz (官网下载)
首先,将subversion-1.9.10.tar.gz 上传至/usr/local/java/svn文件夹下(自定义)
# 解压
tar zxvf subversion-1.9.10.tar.gz
# 进入解压文件夹
cd subversion-1.9.10
# 配置(--prefix是指定安装路径)
./configure --prefix=/usr/local/java/svn --without-berkeley-db
# 编译安装
make && make install
如果这几步都不报错,那么接下来90%的篇幅您都可以不看了,因为实在运气好,然而实际上,报错信息是一个接着一个来。。。。
(一) 报错了:缺少APR环境
configure: Apache Portable Runtime (APR) libraryconfiguration
checkingfor APR... no
configure:WARNING: APR not found
TheApache Portable Runtime (APR) library cannot be found.
Pleaseinstall APR on this system and configure Subversion
withthe appropriate --with-apr option.
Youprobably need to do something similar with the Apache
PortableRuntime Utility (APRUTIL) library and then configure
Subversionwith both the --with-apr and --with-apr-util options.
configure:error: no suitable APR found
怎么破呢,就按照提示信息,下载apr-1.7.0.tar.gz 和apr-util-1.6.1.tar.gz两个文件,分别安装,首先安装apr
一样解压,配置,编译,安装
tar zxvf apr-1.7.0.tar.gz
cd apr-1.7.0
./configure --prefix=/usr/local/apr
make && make install
但是没那么容易,编译过程中又冒出问题
cannot remove `libtoolT’: No such file or directory
见招拆招,在apr-1.7.0文件夹目录下:vim configure,找到
$RM "$cfgfile"
这个地方,用#注释掉,然后重新编译安装就可以了(最好make clean 一下)
tar zxvf apr-1.7.0.tar.gz
cd apr-1.7.0
./configure --prefix=/usr/local/apr
make clean
make && make install
期间我是没有再出新问题了(执行./configure该配置命令的时候,一定不能有XXXX.his unchanged.),可以安心下一步,安装apr-util了,同样的步骤
tar zxvf apr-util-1.6.1.tar.gz
cd apr-util-1.6.1
./configure --prefix=/usr/local/apr-util
make && make install
问题又来了,但是居然还是会提示configure: error: no suitable APR found,但这个之前就装了呀,后来觉得应该在此步骤中引入APR的安装路径,或许可以,于是变成了这样
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make clean
make && make install
这个问题终于搞定了,继续编译安装subversion
(二) 又报错了:expat依赖缺失
configure: error: no XML parser was found: expat or libxml 2.x required
官网下载expat-2.2.7.tar.gz,解压,进入目录配置,编译,安装
tar zxvf expat-2.2.7.tar.gz
cd expat-2.2.7
./configure
make && make install
搞定一个
(三) 又又报错了:缺少zlib3依赖缺失
configure: error: subversion requires zlib
缺什么我就给你装什么,下载zlib-1.2.11.tar.gz,解压,编译,安装三部曲走起
tar zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure --prefix=/usr/local/zlib
make && make install
这一步给力,中间没有出幺蛾子,再次编译subversion...
(四) 又又又报错了:缺少SQLite
configure: error: Subversion requires SQLite
好吧,这类问题我已经习惯了,官网下载sqlite-autoconf-3290000.tar.gz ,解压后将里面的sqlite3.c复制到subversion-1.19.0/sqlite-amalgamation路径中,没有sqlite-amalgamation这个文件夹就自己创建
(五) 又又又又又报错了:
configure: error: failed to recognize APR_INT64_T_FMT on this platform
这个其实我至今仍没有像明白原因:网上其他帖子都说是没装apr和apr-util,但是我之前装了呀,重新安装apr和apr-util,甚至换版本我都试了,还是不管用,差点就倒在这里了
于是vim configure ,看看配置文件里怎么规定的,发现有这么一段
if test "x$svn_cv_pycfmt_apr_int64_t" = "x"; then
as_fn_error $? "failed to recognize APR_INT64_T_FMT on this platform" "$LINENO" 5
fi
注释掉试试?加上# (温馨提醒,配置文件这一段出现了4次,都在大概80%-90%的位置)
死马当活马医,编译安装,这个问题申请的消失了~内心沸腾了,以为到终点了,但是!!!
(六) 又又又又又又报错了:还是缺少 sqlite3ext.h
ubversion/libsvn_subr/sqlite.c:57:26: fatal error: sqlite3ext.h: No such file or directory
compilation terminated.
Makefile:789: recipe for target 'subversion/libsvn_subr/sqlite.lo' failed
make: *** [subversion/libsvn_subr/sqlite.lo] Error 1
还以为是问题三复现,想骂街了,但是仔细一下,提示缺的东西不一样,于是把 sqlite3ext.h 这个文件直接复制到svn的文件夹去,干脆,整个文件夹都复制吧
无力再试配置,编译,安装三部曲了
但是奇迹往往出现在这个时候,配置svn终于不提示缺东西了,但是有unchanged的状态,想想改了改命令
./configure --prefix=/usr/local/java/svn --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-apr=/usr/local/apr --with-zlib=/usr/local/zlib --without-berkely-db
make clean
make && make install
这个时候节奏突然慢了下来,心里好紧张啊,但是,最后成功了!!!
撒花庆贺,哈哈
/usr/local/java/svn/bin/svnserve --version
假如显示以下信息(图片是盗的,内网不方便截图),显示版本信息,说明安装成功了!
接下来创建版本库
和yum配置的方式差不多,只不过有时候命令行要有所改动了,
比如yum安装之后是这样创建仓库:svnadmin create /data/svn/project/
但是在编译安装的需要指定目录了:/usr/local/svn/bin/svnadmin create /data/svn/project/
mkdir-p /data/svn/project
/usr/local/svn/bin/svnadmin create /data/svn/project/
cd /data/svn/project/
如果出现以下画面,说明版本库创建成功
接下来就是进入conf文件夹改各种配置了
vim svnserve.conf //编辑配置文件
把以下几项显示白色的注释取消掉
vim passwd //编辑密码文件
在[user]下面添加:
zhouyou = 6789@jkl
vim authz //编辑访问控制文件
在[group]下添加:
group_admin = zhouyou #把zhouyou账户加入group_admin组
[/] 根目录权限设置
zhouyou = rw #zhouyou权限是:可读写
@group_admin = rw #设置组权限
# # # # 说明:以上信息表示,只有group_admin用户组有根目录的读写权。r表示对该目录有读权限,w表示对该目录有写权限,rw表示对该目录有读写权限。
最后一行的* =表示,除了上面设置了权限的用户组之外,其他任何人都被禁止访问本目录。
这个很重要,一定要加上!
配置防火墙
vi /etc/sysconfig/iptables //配置防火墙
-A RH-Firewall-1-INPUT -m state --stateNEW-m tcp -p tcp -dport 3690 -j ACCEPT
//加入此行代码
service iptables restart//重启防火墙
另,有开启3690端口的命令,在终端输入以下命令:
1>iptables -I INPUT -i eth0 -p tcp --dport 3690 -j ACCEPT
2>iptables -I OUTPUT -o eth0 -p tcp --sport 3690 -j ACCEPT
然后保存:/etc/rc.d/init.d/iptables save
在看看是否已经有了3690端口的开放权限:
/etc/init.d/iptables status
svnserve -d -r /usr/local/java/svn //启动SVN
netstat -ln | grep 3690//查看端口状态
然后,就可以启动svn啦,用以下命令:
/usr/local/java/svn/bin/svnserve -d -r /data/svn/project/
这里需要说明一下,svnserve前一定要加上svn安装路径,到bin文件夹,不然可能会提示找到svnserve这个命令
-r是制定版本库位置
如果没有意外,就可以去页面端看看效果了,会如下图的2个效果:
检出:svn://IP/project (project代表源码库位置)
测试基本的版本管理功能(新增一个test.txt文件,加入版本管理)
至此,svn可以说是安装好了,接下来将持续更新使用及维护的相关文章。。。。
好不容易的一次安装操作,晚上可以给自己加个鸡腿了~
网友评论