CentOS7环境下在线和离线安装SVN(Subversion)

被逼无奈,很多年都没有用过SVN啦,现在公司都是使用这个,只有再次捡起来。这篇文章将会介绍SVN的在线安装和离线安装。所谓的在线安装就是通过yum源安装,超级简单,再者就是离线安装,在没有外网的服务器环境,超级麻烦。

在线安装

废话不多说,直接搞起来。

  • 首先检查本机是否已经安装了SVN
1
2
3
4
# 检查subversion是否已经安装
rpm -qa | grep subversion
# 如果已经安装,上一步会给出安装的名称
rpm -e --nodeps [名称]
  • 使用yum直接线上安装
1
yum -y install subversion
  • 上一步安装成功后,需要创建存储数据的目录和密码鉴权文件存储目录
1
2
mkdir -p /usr/local/svn/svndata
mkdir -p /usr/local/svn/svnpasswd
  • 启动svn服务,指定数据存储目录
1
svnserve -d -r /usr/local/svn/svndata
  • 创建版本库,简单的来说就是一个项目数据存储的库,这个库由svn控制版本
1
svnadmin create /usr/local/svn/svndata/demo
  • svn配置文件

进入demo项目的conf目录下,可以看到配置文件三个分别是authz、passwd、svnserve.conf。其中authz是权限控制,passwd是密码控制,svnserve.conf自然就是当前demo项目的相关配置信息。

修改svnserve.conf配置信息:

1
2
3
4
5
6
7
8
9
10
#进入目录
cd /usr/local/svn/svndata/demo/conf
#禁止匿名访问(默认情况下是提供只读权限)
anon-access=none
#给通过认证的用户提供写的权限,同时包含读的权限
auth-access=write
#指定密码文件位置,默认是当前目录下的passwd,这里指定全局配置
password-db=/usr/local/svn/svnpasswd/passwd
#指定鉴权文件位置,默认是当前目录下的auth,这里指定全局配置
authz-db=/usr/local/svn/svnpasswd/authz
  • 配置权限和密码文件位置
1
2
3
4
5
6
7
8
#进入目录
cd /usr/local/svn/svndata/demo/conf
#复制文件到svnpasswd目录下
cp -p authz passwd /usr/local/svn/svnpasswd/
#进入svnpasswd目录
cd /usr/local/svn/svnpasswd/
#修改文件访问权限
chmod 700 authz passwd
  • 密码文件内容配置

这里配置相对简单,文件打开后,会有一行是[users],然后在接下来的几行就是说明如何配置并有示例。配置如下:

1
2
3
4
5
6
7
#打开passwd文件
vim passwd
# 配置文件内容如下
#配置两个用户分别是itcrud和joker,对应的密码都是123456
[users]
itcrud=123456
joker=123456
  • 权限文件内容配置

这里配置分为两块,分别是用户组配置和具体项目权限配置。用户组就是定义一个组,然后有对应的组员。项目权限配置就是当前项目可以那几个组参与,参与的成员是多少,各自成员可以执行的权限大小等。

1
2
3
4
5
6
7
8
9
#打开authz配置文件
vim authz
#文件内容如下
[groups]
team=itcrud,joker #组名为team,组员有itcrud和joker,多个组员用逗号隔开
[demo:/] #表示demo项目的根目录
@team=rw #整个team有读写的权限
joker=r #组员joker只有读的权限
itcrud=w #组员itcrud有读写的权限
  • 重启svn服务

到这里安装结束,重启svn服务,让配置信息生效。

1
2
3
4
#杀死当前svn进程
pkill svnserve
#重启服务
svnserve -d -r /usr/local/svn/svndata
  • 拉取项目测试一下

通过本地拉取和提交项目测试一下安装是否成功。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cd /usr/local/src/
#拉取项目用户:itcrud,代码库存储机器IP:192.168.233.181,项目仓库名:demo
svn --username=itcrud co svn://192.168.233.181/demo # 执行后输入密码
#进入demo目录
cd demo
#创建文件
touch test.sh
#提交
svn add .
svn commit -m "first"
#----------------------------分割线
#重新创建一个目录,检查上面提交项目的操作有没成功
cd /usr/local/src/
mkdir testdir
cd testdir
svn --username=itcrud co svn://192.168.233.181/demo # 执行后输入密码
#这里检查拉取的项目有没有上面添加的test.sh文件,即可知道是否安装成功。

离线安装

离线安装是个痛苦的过程,主要是安装过程,对应上面在线安装yum -y install subversion命令。在线安装只要这一个命令,但是离线安装内容就多啦。为什么?因为在安装svn的时候需要添加一些依赖,这些依赖不能通过在线下载,只能本地下载然后上传到服务器上,依次安装。

SVN安装包和所需要的依赖

如果下面说的这些依赖,服务器已经安装过了,可以忽略,但是对于一台刚创建的服务器,是没有带这些依赖的。

这些依赖在后文中我会打包提供下载地址,需要的可以直接下载。(包括svn安装包)

后文有个补充说明注意看一下,也许对你很重要。

安装步骤

下面所使用到安装包都上传到/usr/local目录下,个人习惯,各位看官可以根据自己习惯随意。

  • 安装zlib-1.2.8.tar.gz
1
2
3
4
5
6
7
8
#解压安装包
tar -zxvf zlib-1.2.8.tar.gz
#进入解压目录
cd zlib-1.2.8
#运行配置
./configure
#编译安装
make && make install
  • 安装expat-2.2.9.tar.gz
1
2
3
4
5
6
7
8
#解压安装包
tar -zxvf expat-2.2.9.tar.gz
#进入解压目录
cd expat-2.2.9
#运行配置
./configure
#编译安装
make && make install
  • 安装apr-1.7.0.tar.gz
1
2
3
4
5
6
7
8
#解压安装包
tar -zxvf apr-1.7.0.tar.gz
#进入解压目录
cd apr-1.7.0
#运行配置
./configure --with-apr=/usr/local/apr
#编译安装
make && make install
  • 安装apr-util-1.6.1.tar.gz
1
2
3
4
5
6
7
8
#解压安装包
tar -zxvf apr-util-1.6.1.tar.gz
#进入解压目录
cd apr-util-1.6.1
#运行配置
./configure --with-apr=/usr/local/apr
#编译安装
make && make install
  • 安装unzip
1
rpm -ivh lx_unzip-6.0-5.el6.x86_64.rpm
  • 安装sqlite-amalgamation插件
1
2
3
4
5
6
7
8
# 先解压svn安装包
tar -zxvf subversion-1.13.0.tar.gz
# 将sqlite-amalgamation移动到subversion-1.13.0目录下
mv sqlite-amalgamation-3081101.zip subversion-1.13.0
# 解压sqlite-amalgamation-3081101.zip包
unzip sqlite-amalgamation-3081101.zip
# 重命名
mv sqlite-amalgamation-3081101 sqlite-amalgamation
  • 安装svn

上面各种依赖安装结束,最后安装svn。

1
2
3
4
5
6
#进入subversion-1.13.0
cd subversion-1.13.0
#执行configure配置
./configure --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr --with-lz4=internal --with-utf8proc=internal
#编译和安装
make && make install

到这里安装完成,然后就是创建svndata、svnpasswd目录、配置相关文件等,这些步骤参考在线安装过程,是一样的。

防火墙问题

上面在测试拉取项目、提交数据都是在服务器本地完成,在实际使用过程都是在远程操作,所有需要服务器开通防火墙,这里简单粗暴,直接关闭防火墙。

1
systemctl stop firewalld.service

补充说明

我在虚拟机中在线和离线安装的时候使用上面步骤完全没有问题,但是在实际服务器上离线安装出现了点问题,就是在安装zlib的时候,执行./configure报错,缺少gcc工具。这里补充一下gcc安装。

这个安装参考大神博客。可以直接看此链接安装。https://blog.csdn.net/yuan_ren_sheng/article/details/81021563

这里抄录一遍,防止后期上面的博客链接失效。下载gcc安装包,解压后按照下面的顺序依次安装。

1
2
3
4
5
6
7
8
9
10
11
rpm -ivh lib64gmp3-4.3.1-1mdv2010.0.x86_64.rpm
rpm -ivh ppl-0.10.2-11.el6.x86_64.rpm
rpm -ivh cloog-ppl-0.15.7-1.2.el6.x86_64.rpm
rpm -ivh mpfr-2.4.1-6.el6.x86_64.rpm
rpm -ivh cpp-4.4.7-4.el6.x86_64.rpm --force
rpm -ivh kernel-headers-2.6.32-431.el6.x86_64.rpm
rpm -ivh glibc-headers-2.12-1.132.el6.x86_64.rpm --nodeps --force
rpm -ivh glibc-devel-2.12-1.132.el6.x86_64.rpm --force --nodeps
rpm -ivh gcc-4.4.7-4.el6.x86_64.rpm --force --nodeps
rpm -ivh libstdc++-devel-4.4.7-4.el6.x86_64.rpm --force --nodeps
rpm -ivh gcc-c++-4.4.7-4.el6.x86_64.rpm --force --nodeps

检查是否安装成功:

1
2
3
4
5
6
7
8
# 执行下面的命令
gcc -v
# 给出的安装成功日志如下
Using built-in specs.
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)

附录

参考的文章

Linux平台的SVN服务器的配置及搭建

linux离线安装svn

linux unzip命令不存在及ZIP离线安装

安装包和依赖包下载

http://blog.itcrud.com/download/share/file/centos7-svn-install/zip

微信公众号


本文作者:IT-CRUD
原文地址:http://blog.itcrud.com/blogs/2020/05/centos7-svn-install
版权归作者所有,转载请注明出处

支付宝 微信

如果文章对你有帮助,欢迎点击上方按钮打赏作者