0018linux源码安装svn

Posted linux777

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了0018linux源码安装svn相关的知识,希望对你有一定的参考价值。

linux源码安装svn

 yum list subversion #检查是否安装svn

参考资料
 #configure参数参考
 http://www.linuxfromscratch.org/blfs/view/svn/general/subversion.html
 #安装步骤
 https://blog.csdn.net/shgh_2004/article/details/77884876
 说明:
 SVN(subversion)的运行方式有两种:
 一种是基于Apache的http、https网页访问形式;
 还有一种是基于svnserve的独立服务器模式。
 SVN的数据存储方式也有两种:一种是在Berkeley DB数据库中存储数据;另一种是使用普通的文件FSFS存储数据。
 由于Berkeley DB方式在使用中有可能锁住数据,一般建议使用FSFS方式更安全。
 实现目的:
 以svnserve的独立服务器模式,使用FSFS数据存储方式源码编译安装配置SVN服务器。
 具体操作:
 操作系统:CentOS 7.x
 服务器IP:192.168.1.151

一、关闭SELINUX
 vi /etc/selinux/config
 #SELINUX=enforcing #注释掉
 #SELINUXTYPE=targeted #注释掉
 SELINUX=disabled #增加
 :wq! #保存退出
 setenforce 0 #使配置立即生效

二、开启防火墙端口
 firewall-cmd --zone=public --add-port=3690/tcp --permanent
 firewall-cmd --reload

三、安装编译工具包
 yum install apr* autoconf automake bison cloog-ppl compat* cpp curl curl-devel fontconfig fontconfig-devel freetype freetype* freetype-devel gcc gcc-c++ gtk+-devel gd gettext gettext-devel glibc kernel kernel-headers keyutils keyutils-libs-devel krb5-devel libcom_err-devel libpng* libjpeg* libsepol-devel libselinux-devel libstdc++-devel libtool libtool* libgomp libxml2 libxml2-devel libXpm* libtiff libtiff* libX* make mpfr ncurses* ntp openssl openssl-devel patch pcre-devel perl php-common php-gd policycoreutils ppl telnet t1lib t1lib* nasm nasm* wget zlib-devel zlib unzip perl-ExtUtils-Embed

 yum grouplist
  #Installed Groups:
 yum groupinstall -y ‘Development Tools‘
 yum remove apr apr-util subversion subversion-libs #删除系统中原有的svn及依赖包
四、下载svn需要的依赖软件包
 说明:安装svn需要的软件包:apr apr-util serf scons openssl
 软件包存放目录:/usr/local/src
 https://dist.apache.org/repos/dist/release/apr/apr-1.6.2.tar.gz
 https://dist.apache.org/repos/dist/release/apr/apr-util-1.6.0.tar.gz
 https://sourceforge.net/projects/scons/files/scons/2.5.1/scons-2.5.1.tar.gz
 https://www.openssl.org/source/openssl-1.1.0f.tar.gz
 https://fossies.org/linux/www/serf-1.3.9.tar.gz
 http://www.apache.org/dist/subversion/subversion-1.9.7.tar.gz
 http://www.sqlite.org/2017/sqlite-amalgamation-3200100.zip
 1、安装apr
  #检查是否已安装
   rpm -qa apr
  #若没安装,则安装:
   ./configure --prefix=/usr/local/apr #配置
   make #编译
   make install #安装
   #make && make insatll

 2、安装apr-util
  #检查是否已安装
   rpm -qa apr-util
  #若没安装,则安装:
   ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
   make && make install
 3、安装scons
  #检查是否已安装
   rpm -qa scons
  #若没安装,则安装:
   cd scons-2.5.1
   python setup.py install #配置安装

 4、安装openssl
  #检查是否已安装
   rpm -qa openssl
  #若没安装,则安装:
   cd openssl-1.1.0f
   CFLAGS=-fPIC ./config --prefix=/home/programs/openssl enable-shared
   make && make install
   vi /etc/profile #添加系统环境变量
   export PATH=$PATH:/home/programs/openssl/bin
   :wq! #保存退出
   source /etc/profile #使配置生效
   ln -s /home/programs/openssl/include/openssl /usr/include/openssl #添加系统软连接
 5、安装serf
  #检查是否已安装
   rpm -qa serf
  #若没安装,则安装:
   #rpm -aql apr* 查看apr安装目录
   #rpm -aql openssl 查看openssl安装目录 whereis openssl
   cd serf-1.3.9
   scons PREFIX=/usr/local/serf APR=/usr/local/apr/bin/apr-1-config APU=/usr/local/apr-util/bin/apu-1-config OPENSSL=/usr
   scons install
   #拷贝文件到系统目录
   cp /usr/local/serf/lib/libserf-1.so* /usr/local/lib/ 
   
 6、安装svn
  tar -zxvf subversion-1.9.7.tar.gz
  #解压sqlite-amalgamation软件包到sqlite-amalgamation目录
  unzip sqlite-amalgamation-3200100.zip
  #移动目录下文件
  mv sqlite-amalgamation-3200100 /data/soft/subversion-1.10.0/sqlite-amalgamation
  rm sqlite-amalgamation-3200100 -rf
  #配置
  ./configure --prefix=/usr/local/svn --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr-util/bin/apu-1-config --with-serf=/usr/local/serf --with-openssl=/usr --enable-mod-activation --with-utf8proc=internal --with-lz4=internal
  make #编译
  make install #安装
  vi /etc/profile #添加系统环境变量,添加到最后一行
  export PATH=$PATH:/usr/local/svn/bin
  :wq! #保存退出
  source /etc/profile #使配置立刻生效

  # whereis libserf-1.so.1
  libserf-1.so: /usr/local/lib/libserf-1.so /usr/local/lib/libserf-1.so.1
  vi /etc/ld.so.conf #编辑加入libexpat.so.1的目录,如下:
   /usr/local/lib/
  :wq! #保存退出
  ldconfig #使配置生效
 7、测试安装是否成功:
  svn help #查看svn帮助信息
  svnserve --version #查看svn版本信息
  svn --version

 NOTE:
 1、configure执行报错解决rm: cannot remove `libtoolT‘: No such file or directory
  https://blog.csdn.net/a673341766/article/details/9078011
  在configure里面 RM=‘$RM -f‘ 这里的$RM后面一定有一个空格。 如果后面没有空格,直接连接减号,就依
  然会报错。把RM=‘$RM‘改为RM=‘$RM -f‘
 2、安装svn,执行config报错: requires LZ4 >= r129,增加--with-lz4=internal参数,参考http://www.linuxfromscratch.org/blfs/view/svn/general/subversion.html
  ./configure --prefix=/usr/local/svn --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr-util/bin/apu-1-config --with-serf=/usr/local/serf --with-openssl=/usr --enable-mod-activation --with-lz4=internal
 3、configure: error: Subversion requires UTF8PROC,参考http://www.linuxfromscratch.org/blfs/view/svn/general/subversion.html
  --with-utf8proc=internal
  
五、配置svn
 1、创建svn代码库
  mkdir -p /data/file/svn/repo #创建目录
  svnadmin create /data/file/svn/repo #创建svn代码库
  #上面的命令执行完成之后,会自动建立svn库,在/data/file/svn/repo文件夹含了conf,db,format,hooks,locks,README.txt等文件。
  #说明svn代码库创建成功。
  
 2、配置svn代码库
  (1)vi /data/file/svn/repo/conf/svnserve.conf #配置全局文件,在最后添加以下代码
   [general]
   #禁止匿名访问,设置为none。默认为read,参数:read,write,none
   anon-access=none
   #授权用户写权限
   auth-access=write
   #用户账号密码文件路径,可以写绝对路径
   password-db=passwd
   #访问控制权限文件路径,可以写绝对路径
   authz-db=authz
   #每个SVN项目的认证命,会在认证提示里显示,建议写项目名称。
   realm=svn
   
   :wq! #保存退出
  
  (2)vi /data/file/svn/repo/conf/passwd #配置用户密码
   [users]
   # harry = harryssecret
   # sally = sallyssecret
   osyunwei=123456
  (3)vi /mnt/svn/conf/authz #配置权限控制文件,设置用户可以访问的目录 
    [groups]
    admin = osyunwei
    users = test,test2
    [/]
    @admin = rw
    * = r
   :wq! #保存退出
   #[/]代表根目录下所有的资源
 3、启动svn
  svnserve -d -r /data/file/svn --listen-port 3690
  ps -ef|grep svn|grep -v grep #查看svn进程
   root 12538 1 0 14:40 ? 00:00:00 svnserve -d -r /mnt/svn
  netstat -ln |grep 3690 #检查svn端口
   tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN
  killall svnserve #关闭svn服务
 4、设置svn服务开机启动,注:yum search killall,脚本中killall命令依赖
  vi /etc/rc.d/init.d/svn #编辑,添加以下代码 whereis svnserve
   #!/bin/sh
   # chkconfig: 2345 85 85
   # processname: svn
   svn_port=3690
   svn_home=/mnt/svn
   if [ ! -f "/usr/local/svn/bin/svnserve" ]
   then
   echo "svnserver startup: cannot start"
   exit
   fi
   case "$1" in
   start)
   echo "Starting svnserve..."
   /usr/local/svn/bin/svnserve -d -r $svn_home --listen-port $svn_port
   echo "Successfully!"
   ;;
   stop)
   echo "Stoping svnserve..."
   killall svnserve
   echo "Successfully!"
   ;;
   restart)
   $0 stop
   $0 start
   ;;
   *)
   echo "Usage: svn { start | stop | restart } "
   exit 1
   esac
   
  :wq! #保存退出 
  chmod +x /etc/rc.d/init.d/svn #添加执行权限
  chkconfig svn on #开启自启动
  service svn stop
  service svn start
  
 5、测试svn
  svn checkout svn://192.168.123.7/repo --username=osyunwei --password=123456 #将文件下载到本地目录
  svn checkout svn://192.168.123.7 --username=osyunwei --password=123456
  svn update --username=osyunwei --password=123456 #更新上次修改之后的版本库
  
 NOTE:
 svn提交的时候强制写注释 

  cd /mnt/svn/hooks
  cp pre-commit.tmpl pre-commit
  chmod 777 pre-commit

  vi pre-commit
   #!/bin/sh
   REPOS="$1"
   TXN="$2"
    
   SVNLOOK=/usr/local/bin/svnlook #修改为pre-commit中的提示路径,服务器安装的subversion目录 whereis svnlook
    
   LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
   if [ "$LOGMSG" -lt 5 ];
   then
     echo -e "注释信息不能为空且不少于5个字!" 1>&2
     exit 1
   fi
   exit 0












以上是关于0018linux源码安装svn的主要内容,如果未能解决你的问题,请参考以下文章

源码SVN1.9.5 Shell脚本一健安装

CentOS源码安装搭建LNMP全过程(包括nginx,mysql,php,svn)转

svn for linux安装

linux下安装svn服务器

内网安装linux svn,Linux下安装SVN服务器

源码安装SVN