前几天公司突然需要在一个新服务器上安装SVN,供外面的几个做iphone外包的人发布自己的版本,
于是我就被赶鸭子上架,安装SVN,由于服务器上的linux不知道是哪个人安装的,所以在安装SVN的过程中出现了很大的麻烦!
准备工作-----
安装gcc
因为不知道Linux的版本,所以我决定采取源码包编译的方式安装。
当我执行./configure后发现出现在我指定的位置处没有配置信息,此时make也不能执行,
make: *** 没有指明目标并且找不到 makefile。 停止
这个原因是因为没有安装GCC组件的缘故。所以你需要安装GCC。于是我从网上下了众多版本的gcc*.rpm,
#rpm -ivh gcc*.rpm之后没有反映,于是我猜测可能是版本的问题。最后几经周折终于找到了与服务器上的linux相同的安装光盘。
我把安装gcc需要的rpm包复制到/usr/src下。然后#rpm -ivh gcc*.rpm文件就可以了。
首先先说一下什么是rpm包:
RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,在Linux系统中的安装最为简便,在Terminal中,基本的安装指令如下: rpm -i xv-3.10a-13.i386.rpm
RPM的常用参数还包括: -vh:显示安装进度; -U:升级软件包; -qpl:列出RPM软件包内的文件信息; -qpi:列出RPM软件包的描述信息; -qf:查找指定文件属于哪个RPM软件包; -Va:校验所有的RPM软件包,查找丢失的文件;
在安装GCC的时候,重要的rpm包是:
libstdc++-devel-*.rpm
glibc-kernheaders-*.rpm
glibc-headers-*.rpm
glibc-devel-*.rpm
gcc-objc-*.rpm
binutils-*.rpm
gcc-*.rpm
gcc-c++-*.rpm
这些*是版本号,我不赞成从网上搜这些rpm包,最好是从安装光盘上复制。
找到这些包后,执行#rpm -ivh rpm包名。
如果在执行过程中出现:
warning: gcc-4.1.1-52.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
error: Failed dependencies:
glibc-devel >= 2.2.90-12 is needed by gcc-4.1.1-52.el5.i386
libgomp = 4.1.1-52.el5 is needed by gcc-4.1.1-52.el5.i386
libgomp.so.1 is needed by gcc-4.1.1-52.el5.i386
不用怕,这是rpm包与包之间的依赖关系,找到对应的包,如:libc-devel,libgomp-4.1.1-52.el5等等。先安装他们
接着在安装这个出现错误的包就可以了。等到把所有的包安装好,现在make一下就OK了。
继而make install。然后GCC就安装好了。
接着进入今天的正题。安装SVN。主要都在/usr/src下进行
一。安装前的准备:
先下载如下的压缩文件:
apr-*.tar.gz
apr-util-*.tar.gz
db-*tar.gz
httpd-*.tar.gz
openssl-*.tar.gz
subversion-*.tar.gz
subversion-deps-*.tar.gz
zlib-*.tar.gz
这里的*都代表版本,至于多少版本自己可以去寻找最新的。
二。开始安装
首先下载berkeley DB
地址:http://download.oracle.com/berkeley-db/db-4.6.18.tar.gz
下这个因为subversion内部使用的管理数据的功能会需要用到。但是后来经过猜测,应该不装也没问题,因为subversion有两种关于这个的模式,不装的话可以用另外种,subversion的解释如下
The following repository back-end (FS) modules are available:
* fs_base : Module for working with a Berkeley DB repository. * fs_fs : Module for working with a plain file (FSFS) repository.
但是为了保险我还是装了,具体命令行如下 tar zxvf db-4.6.18.tar.tar
cd db-4.6.18/build_unix/
../dist/configure --prefix=/usr/local/bdb
make
make install
接着安装apr和apr-util
这是个apache的project,全名是Apache Portable Runtime 现在最新的版本是1.2.12,不过貌似那个版本是给apache2.6用的,而我们的apache是2.0.x的,所以我用的是0.9.17的。这个要注意下,版本不符合可能安装会有问题,下面是下载地址 http://apr.apache.org/
1.安装apr, 如果下的gz包可以用 tar zxvf apr-0.9.17.tar.tar 解压如果是bz2包可以用 tar xfj apr-0.9.17.tar.tar 然后 cd apr-0.9.17/
./configure
make
make install 这里configure的时候不指定路径的话默认是安装到/usr/local/下
2.安装apr-util 解压同apr 然后 cd apr-util-0.9.15/
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/ --with-berkeley-db=/usr/local/bdb (这步要把berkeley数据库一起编译进去,否则berkeley就白装了) make
make install
装完后用svnadmin –version查看下是否有信息,有的话说明安装成功
3.安装zlib
cd zlib
./configure
make
make install
4.安装httpd
tar zxvf httpd-2.2.11.tar.gz
cd httpd-2.2.11
./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr-util/bin/apu-1-config --enable-so --enable-dav --enable-maintainer-mode --enable-rewrite
make
make install
在安装之前,请先安装openssl
5.解压subversion
tar zxvf subversion-1.6.2.tar.gz
tar zxvf subversion-deps-1.6.2.tar.gz (这个解压后会放到前面一个解压的目录里的)
安装serf
cd subversion-1.6.2/serf
./configure --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --with-openssl=/usr/local/ssl
make
make install
安装 neon
cd subversion-1.6.2/neon
./configure --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/
make
make install
安装 sqlite
cd subversion-1.6.2/sqlite-amalgamation
./configure --prefix=/usr/local/sqlite3
make
make install
6.安装subversion(需要指定openssl)、
安装subversion
首先,当然还是下载 Subversion源码包:http://subversion.tigris.org/downloads/subversion-1.4.3.tar.bz2
依赖包:http://subversion.tigris.org/downloads/subversion-deps-1.4.3.tar.bz2
tar xfj subversion-1.4.3.tar.bz2
tar xfj subversion-deps-1.4.3.tar.bz2
cd subversion-1.6.2
./configure --with-apxs=/opt/oss/sbin/apxs --with-apr=/usr/local/apr/bin/apr-config --with-apr-util=/usr/local/apr-util/bin/apu-config
make
make install
注意:configure时会警告要DBD的支持,可以忽略,但我们还是把它装上
7.安装db-4.7.25.tar.gz
tar -zxvf db-4.7.25.tar.gz
cd db-4.7.25/ build_unix
../dist/configure
make
make install
vi /etc/ld.so.conf 加入下面一行
/usr/local/BerkeleyDB.4.7/lib #保存
ldconfig
cp /usr/local/BerkeleyDB.4.7/include/* /usr/include
cp /usr/local/BerkeleyDB.4.7/lib/* /usr/lib
三、配置
1.vi /usr/local/apache/conf/httpd.conf 查看是否有如下2行,有就对了
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
2.建立版本库
mkdir /code (代码的根目录,根据自己情况)
/usr/local/svn/bin/svnadmin create /code/test (建一个test项目)
ls /code/test 里面多了些文件就对了
3.配置Apache来支持SVN
vi /usr/local/apache/conf/httpd.conf
在末尾加上如下内容:(去掉中文)
DAV svn
SVNParentPath /code #svn父目录
AuthzSVNAccessFile /code/authz.conf #权限配置文件
AuthType Basic #连接类型设置
AuthName "Subversion" #连接框提示
AuthUserFile /code/authfile #用户配置文件
Require valid-user #采用何种认证
保存退出
4.启动 apache
./usr/local/apache2/bin/apachectl start
打开IE,输入:http://IP/svn/test 或 http://localhost/svn/test
会弹出一个输用户和密码的框就对了
5.创建用户配置文件(htpasswd 命令在APACHE_HTTP_SERVER_HOME/bin下)
./htpasswd -c /code/authfile user1
回车输入密码 (-c是第一次要创建文件)
./htpasswd /code/authfile user2
回车输入密码
6.创建权限配置文件
vi /code/authz.conf
[test:/]
user1 = rw
user2 = r
保存退出
注:
[test:/] //这表示,仓库test的根目录下的访问权限
user1 = rw //test仓库user1用户具有读和写权限
user2 = r //test仓库user2用户具有读权限
[test2:/] //test2仓库根目录下的访问权限
user1 = r //user1用户在test2仓库根目录下只有读权限
user2 = //user2用户在 test2仓库根目录下无任何权限
[/] //这个表示在所有仓库的根目录下
* = r //这个表示对所有的用户都具有读权限
#[groups] //这个表示群组设置
#svn1-developers = user1, user2 //这个表示某群组里的成员
#svn2-developers = user1
#[svn1:/]
#@svn1-developers = rw //如果在前面加上@符号,则表示这是个群组权限设置
7.重启Apache
./usr/local/apache2/bin/apachectl restart
打开IE,输入:http://IP/svn/test 或 http://localhost/svn/test
会弹出一个输用户和密码的框
输入你的添加的用户和密码就ok了
四、在Myeclipse6.6中使用svn共享项目
Svn仓库目录为
http://58.247.119.70/svn/test
其中58.247.119.70为svn服务器端ip
如果commit或import时,发生permission denied错误,解决方法(命令):
sudo chown -R daemon /code/test
sudo chmod -R 755 / code/test