svn的版本问题

这两天遇到个关于svn版本的问题,折腾了比较久,后来总算解决了,并借此熟悉了几个类unix系统下的命令和工具的使用,现特意记录下来,算是经验的总结,也便于下次有需要的时候容易找到。

先来描述一下我遇到的是什么问题,我的系统是os x ei capitan 10.11.6 ,机子上同时搭建了ios和android的开发环境,本地的svn版本号是1.9.4,在将系统升级到10.11.6之前,我不记得svn的版本号是不是1.9.4了,但是基本可以肯定也是高于1.7的(mac os系统自带了svn)。但是升级mac os后,进入到我的android工程代码里,执行svn update后,总是提示我输入svn的账号和密码;我确定我的密码并没有错误,并且后来试过执行svn list ,svn log,svn export这些命令都是正常的,唯一不正常的就是svn update 和svn checkout; 跟负责公司svn服务器的同事沟通了一下,他告诉我很可能是svn客户端版本号的兼容问题,建议我将svn的客户端版本号降低到1.7试试(由于某些原因,公司的svn服务器多年来一直没有升级过,还是十多年前安装的版本1.1.4) 接下来就是我为了试试将svn的版本号降低到1.7所进行的折腾,为方便查看,下面将按事情的先后顺序分别记录所遇到的问题和解决办法。

1、我首先想到通过brew来安装特定版的svn(brew是一个方便在mac os上安装和管理软件的工具,关于brew的使用这里不再介绍,请自行搜索相关资料),但是发现os x ei capitan上并不支持安装v1.7的版本,详情如下:
admindeiMac-42:~ admin$ brew search subversion
homebrew/versions/subversion17 subversion ✔
homebrew/versions/subversion18 ✔
admindeiMac-42:~ admin$ brew install homebrew/versions/subversion17
Updating Homebrew...
==> Installing subversion17 from homebrew/versions
subversion17: This formula either does not compile or function as expected on macOS
versions newer than Yosemite due to an upstream incompatibility.
Error: An unsatisfied requirement failed this build.

2、于是尝试通过源码安装svn1.7,类unix下通过源码安装软件无非3个步骤:configure,make, make install,其中configure是重点,不少软件的安装都需要一些正确的配置项信息才能成功安装。到svn的官方网站上下载1.7的代码并解压,进入该目录下执行
./configure --prefix=/usr/local --with-apr=/usr/local/opt/apr --with-apr-util=/usr/local/opt/apr-util --with-neon=/usr/local --with-ssl --without-sasl
具体解析下各配置项的作用,
--prefix是用来指定安装的目标路径,默认就是/usr/local
--with-apr和--with-apr-util用来指定要依赖的软件模块apr和apr-util,
关于apr和apr-utl是什么东西,请参考某网友的解释:“apr-util和apr都是为上层应用提供的运行库。为没有stl库的C语言提供了一些数据结构和操作系统封装接口。显然apache的许多软件都是以apr/apr-util为基础库进行开发的。apr-util只是在apr的基础上提供了更多的数据结构和操作系统封装接口而已”
如果你的机子上还没有安装apr和apr-util,可直接通过brew安装,比较简单;
--with-neon neon的作用简单来说就是可以通过http和https来访问你的svn代码库,如果你成功安装了svn,通过svn --version来查看所安装的svn的信息,你可以看到下面的信息:
The following repository access (RA) modules are available:

  • ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
    • handles 'http' scheme
  • ra_svn : Module for accessing a repository using the svn network protocol.
    • handles 'svn' scheme
  • ra_local : Module for accessing a repository on local disk.
    • handles 'file' scheme

说明neon这模块已经加到svn里面去了,如果没有neon,是不能通过http协议访问代码库的
我在配置这neon到svn里面的时候,也遇到了一个版本的问题,这个根据错误提示安装特定版本的neon,并在--with-neon里正确指定其路径就可以
--with-ssl 和--without-sasl貌似不是必须,没有亲自验证。
通过上面这个方法成功安装了svn1.7, svn update 或svn checkout的时候却提示
svn: E200029: Couldn't perform atomic initialization
svn: E200030: SQLite compiled for 3.14.0, but running with 3.8.10.2
说明svn是依赖sqlite的,并且当前的sqlite版本似乎并不适合svn1.7使用。于是上sqlite的官网下载了sqlite 3.8.10.2的源码,编译和安装,完成安装sqlite 3.8.10.2后,再重新安装svn1.7,在configure里增加一个配置项 --with-sqlite=/usr/local
所有信息配置正确,然后make && make install 就可以了

3、补充一个关于环境变量的知识,之前自己并没有很好地理解这个东西,造成了许多不必要的折腾;我现在对环境变量的理解是,环境变量是由一些路径组成的,路径与路径之间用冒号分隔,放在前面的那些路径优先级会高于放在后面的,例如/usr/local/bin的优先级比/usr/bin的优先级高,系统会优先看看/usr/local/bin下面有没有该软件的可执行文件,有就执行该路径下的可执行文件,没有则继续查找环境变量里的下一个路径;可以在命令行下通过echo $PATH查看当前用户的环境变量,例如我的就是:
admindeiMac-42:~ admin$ echo $PATH
/usr/local/bin/svn:/Users/admin/.rvm/gems/ruby-2.2.2/bin:/Users/admin/.rvm/gems/ruby-2.2.2@global/bin:/Users/admin/.rvm/rubies/ruby-2.2.2/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/admin/.rvm/bin
以mac os里的svn或sqlite为例子,mac os本身已经安装了svn和sqlite,放在/usr/bin下面,而自己通过brew或源码安装的一般都位于/usr/local下面。这样就是说,一台机子上可以安装不同版本的svn或sqlite,当安装软件需要处理依赖关系的时候,正确指定所依赖的软件的位置就比较重要了;

4、关于android studio和xcode 里所用的是哪个版本的svn的问题,android studio可以在prefrence - version control - Subversion - General 里的Use command line client里指定svn的路径 例如/usr/local/bin/svn;
而Xcode则是依赖一个自己专用的svn模块,位置在/Applications/Xcode.app/Contents/Developer/usr/bin

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,898评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,401评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,058评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,539评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,382评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,319评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,706评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,370评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,664评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,715评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,476评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,326评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,730评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,003评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,275评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,683评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,877评论 2 335

推荐阅读更多精彩内容

  • 一、Nagios简介 Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows、Linux和Uni...
    1b3bd36d9d21阅读 8,100评论 3 13
  • 首先下载 Subversion wget http://mirrors.cnnic.cn/apache/subve...
    JoeWcc阅读 700评论 0 4
  • php+mysql+apache+centos 编译安装 领导要求先保证php环境稳定,然后再去考虑其他,例如性能...
    dnaEMx阅读 2,162评论 1 16
  • 一、LAMP环境的介绍 1.LAMP环境的重要性 思索许久,最终还是决定写一篇详细的LAMP的源码编译安装的实验文...
    endmoon阅读 2,585评论 4 26
  • 《失逃》 @药酒先生/文 1 兔子小姐不知道自己是如何在这里的,月光隐若,她能看到自己在灯光下长长的影子,闻到芳草...
    药酒先生阅读 845评论 2 7