CentOS7 编译源代码安装subversion

最近在搭建NakedOS的开发环境,需要安装GCC。因此需要先安装SVN(subvserion)来获取GCC源代码。网上大多数安装实例都是通过yum工具来安装,但是yum安装的SVN并不是最新版,对于具有强迫症的我是不能接受的。因此我选择使用编译源代码的方式安装SVN,在此记录一下安装的全过程。

安装环境

NakedOS的开发环境我选择CentOS7。因此SVN的安装环境也选择的是CentOS7,从官网上下载的IOS镜像(CentOS-7-x86_64-DVD-1810.iso)

安装CentOS时Base Environment选择的是KDE plasma Workspaces(千万不能选GNOME,因为升级sqlite后会导致GNOME无法启动,原因不明),Add-Ons一个都不选。因为我有洁癖不希望装一些我并不需要的东西,何况那些都是还不是最新版。

CentOS7 编译源代码安装subversion_第1张图片

 

安装过程

简单地说安装过程就是下载源代码,然后在源代码目录下执行下面指令即可

./configure
make
make install

但因为编译其源代码需要依赖一些其他软件或库,因此使过程变得繁琐。幸运的是./configure会发现系统缺少的软件和库然后报告出来,我们只需要根据报告安装必要的软件和库就可以了。

另外,安装请使用root用户,因为需要使用root权限。

代码下载

  • subversion 网址:http://subversion.apache.org 
  • subversion 下载页面:http://subversion.apache.org/download.cgi?update=201708081800

依赖的软件和库

GCC

额,本来我是想用SVN获取GCC的源代码,现在编译subversion需要GCC,这是个先有鸡还是现有蛋的问题。这里暂时使用yum安装GCC(说点题外话,其实编译GCC代码也需要使用GCC)。

yum install gcc

APR

APR全称是Apache Portable Runtime。这个库可是使应用软件使用统一的Apache接口,而不必在意应用程序运行在哪种平台(Mac Windows Linux)上。

这里使用源代码安装APR,APR分三个部分APRAPR-utilAPR-iconv 。说实话我不清楚这三部分分别是什么。

APR网址:http://apr.apache.org/

APR下载地址:http://apr.apache.org/download.cgi

我下载的Unix Source的tar.gz包,分别是 apr-1.7.0.tar.gz  apr-util-1.6.1.tar.gz  apr-iconv-1.2.2.tar.gz 

分别下载解压(tar xzvf 文件名)编译即可我的安装顺序是 APR、ARP-iconv、APR-util。三部分的安装编译方法一样

./configure
make
make install

当安装完apr后,在执行apr-inconv和apr-unit的configure时会提示找不到apr。解决办法是使用 --with-apr指定apr的路径

./configure --with-apr=/usr/local/apr

以外总是不断,当执行apr-unit的make install时会提示“xml/apr_xml.c:35:19: fatal error: expat.h: No such file or directory”

这是因为缺少了expat-devel,此库用于解析xml。下载地址:https://pkgs.org/download/expat-devel 

rpm -i expat-devel-2.1.0-10.el7_3.x86_64.rpm

也可以简单处理

yum install expat-devel

安装完expat-devel后再执行apr-unit的make install就可以了

sqlite

sqlite是一个轻巧的数据库,估计是SVN用其管理版本信息。

因为CentOS会自带sqlite,但版本不满足svn的要求,因此需要先将旧的sqlite删除

执行以下指令查看安装的sqlite

rpm -qa | grep sqlite

在我的系统上显示安装的sqlite是sqlite-3.7.17-8.el7.x86_64,将其卸载。因为有其他程序依赖它所以在卸载时需要加上--nodeps选项

rpm -e --nodeps sqlite-3.7.17-8.el7.x86_64

sqlite网址:https://www.sqlite.org/index.html

需要下载这个版本,其他版本仅仅包含源代码没法编译

解压后在sqlite目录中执行

./configure
make
make install

因为我们卸载了系统自带的sqlite会导致一些程序无法使用,如rpm和yum,原因是它们找不到新安装的sqlite的共享库文件。默认情况下sqlite的共享库被安装在 /usr/local/lib中。因此我们需要告诉系统sqlite共享库的路径,我使用的方法是在/ete/ld.so.conf.d中新建文件指定路径的方式。新建一个文件vi sqlite-x86_64.conf 然后输入/usr/local/lib保存退出。文件名的后缀必须是.conf其余部分可以随便命名。新建文件后需要执行ldconfig刷新配置缓存,使新文件生效。

zlib

一个压缩算法库。

zlib网址:http://www.zlib.net/
下载解压后在其目录下执行以下指令

./configure
make
make install

lz4

一个压缩算法库。不过可以直接使用subversion内部的lz4方法是在执行configure使添加参数。因此可以跳过安装lz4

./configure --with-lz4=internal

utf8proc

一个处理Unicode编码的库

utf8proc网址:http://juliastrings.github.io/utf8proc/

下载解压后在其目录执行以下指令

安装SVN

以上所有依赖安装完后就可以安装subversion了,解压源代码然后执行以下指令

./configure --with-lz4=internal
make
make install

然后就可是正常使用svn指令了。另外还可以在机器上配置svn服务,不过这不是我关心的了,大家可以查看其他人的博文获取帮助

[nakeos@localhost Downloads]$ svn --version
svn, version 1.12.2 (r1863366)
   compiled Aug 21 2019, 21:33:48 on x86_64-unknown-linux-gnu

Copyright (C) 2019 The Apache Software Foundation.
This software consists of contributions made by many people;
see the NOTICE file for more information.
Subversion is open source software, see http://subversion.apache.org/

The following repository access (RA) modules are available:

* 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

The following authentication credential caches are available:

* GPG-Agent

 

你可能感兴趣的:(杂记)