postgresql单机版+postgis插件的快速源码编译安装

废话不多说了,直接上干货。

环境介绍:

postgresql单机版,使用的版本为9.5.24,postgis使用的版本为postgis-3.0.0.tar.gz,实验机器使用的为centos7版本,vm虚拟机,最小化全新安装。

编译前的环境准备工作:

1.yum install libxml2-devel libxml2  gcc-c++  json-c-devel  bzip2  -y

2.http://www.cmake.org/cmake/resources/software.html  下载cmake-3.9.0-rc2-linux-x86_64.tar.gz,该版本为二进制包,无需编译,绿色解压即可使用,如果嫌使用麻烦就配一下环境变量。

本例中,我是解压后重命名为cmake,路径为 /usr/local/cmake,环境变量配置为:vim /etc/profile

CMAKE_HOME=/usr/local/cmake
PATH=$PATH:$CMAKE_HOME/bin
export PATH

 

postgis的依赖问题:

postgis的依赖比较多,大概需要的依赖如下(万幸的是,PostGis不像gcc依赖之间有依赖,这几个依赖先后顺序无所谓,gcc不行,顺序要限定的,因此,可以几个同时编译,只要手速够快,同时编译都没什么问题哦):

以下依赖的下载网站为:http://download.osgeo.org/,mirrors-json-c-master.zip这个需要在码云上下载,下载十分简单,注册一个账号,然后搜索json-c,在点击下载,然后上传到服务器即可。

[root@centos8 ~]# ll
total 77116
-rw-------. 1 root root     1358 Jul 21 22:19 anaconda-ks.cfg
-rw-r--r--  1 root root 32460756 Nov 26 23:00 cmake-3.9.0-rc2-Linux-x86_64.tar.gz
-rw-r--r--  1 root root  7707436 Nov 26 23:00 gdal-2.1.3.tar.xz
-rw-r--r--  1 root root  2399403 Nov 26 23:00 geos-3.8.0.tar.bz2
-rw-r--r--  1 root root   225173 Nov 26 23:00 mirrors-json-c-master.zip
-rw-r--r--  1 root root 17359802 Nov 26 22:59 postgis-3.0.0.tar.gz
-rw-r--r--  1 root root 17881872 Nov 26 22:59 postgresql-9.5.24.tar.bz2
-rw-r--r--  1 root root   921448 Nov 26 22:59 proj-4.9.3.tar.gz

postgis和postgresql之间是有依赖矩阵的,特别需要注意哦,矩阵图如下:


可以从上图看到,PostGis3.0.0是一个比较新的版本,而postgresql是一个比较旧的但两者都比较稳定的版本了。

选择postgresql的另一个原因是编译时的系统自带的gcc版本并不是一个限制。在安装PostGis这个插件之前,那肯定是需要安装PostGreSql 的单机版了(插件必须先有一个插的地方,对吧?),pg的编译安装就不赘述了,也不是特别的难,难点在插件PostGis的安装上哦,因此,请移步https://blog.csdn.net/alwaysbefine/article/details/110097879 将PostGreSql编译安装并启动服务。

(稍微科普一下,tar.bz2的文件 解压命令为: tar jxf 文件名,软件 bzip2提供这个命令的支持)。

GEOS的安装:

tar jxf geos-3.8.0.tar.bz2
cd geos-3.8.0/src
cmake ../
make && make install

需要说明一下安装手法,为什么是进入src目录,如果安装时有什么异常的问题,可以将src目录清空重新编译,因此进入src,通常,cmake是在下级目录build内。这个软件编译时间大概为15分钟左右。

proj4的安装:

 tar zxf proj-4.9.3.tar.gz 
 cd proj-4.9.3/
  ./configure 
    make && make install
    echo $?

json-c的安装:

  unzip mirrors-json-c-master.zip 
  cd json-c/
  mkdir build
  cd build/
     cmake ../
     make && make install

gdal的安装: 

预编译成功的截图如下:

tar xf gdal-2.1.3.tar.xz 
    cd gdal-2.1.3/ 
    ./configure --prefix=/usr/local/gdal
    echo $?
     make && make install

 

PostGis的安装:

vim /etc/ld.so.conf

/usr/local/lib
/usr/local/lib64
/usr/local/pgsql/lib

如果第三行的内容没有指定,也就是指定postgresql的lib目录,那么将会报错configure error: could not find gdal!!!这里需要注意一下~~

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH:/usr/local/include/

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

./configure --with-pgconfig=/usr/local/pgsql/bin/pg_config --with-gdalconfig=/usr/local/gdal/bin/gdal-config

make && make install
 

预编译成功的截图:

--------------- Extensions --------------- 
  PostGIS Raster:                     enabled
  PostGIS Topology:                   enabled
  SFCGAL support:                     disabled
  Address Standardizer support:       disabled

 -------- Documentation Generation -------- 
  xsltproc:             /usr/bin/xsltproc
  xsl style sheets:     
  dblatex:              
  convert:              
  mathml2.dtd:          http://www.w3.org/Math/DTD/mathml2/mathml2.dtd

 编译成功的截图:

for OLD_VERSION in 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.2.7 2.2.8 2.3.0 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 2.3.8 2.3.9 2.3.10 2.3.11 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 3.0.0alpha4 3.0.0beta1 3.0.0rc1 3.0.0rc2; do \
	ln -fs "${tpl}" /usr/local/pgsql/datadir/extension/postgis_topology--$OLD_VERSION--3.0.0.sql; \
done
/usr/bin/install -c -m 644 .//postgis_topology.control '/usr/local/pgsql/datadir/extension/'
/usr/bin/install -c -m 644  postgis_topology.control sql/postgis_topology--3.0.0.sql sql/postgis_topology--unpackaged--3.0.0.sql  '/usr/local/pgsql/datadir/extension/'
make[2]: Leaving directory `/root/postgis-3.0.0/extensions/postgis_topology'
make[1]: Leaving directory `/root/postgis-3.0.0/extensions'
[root@centos6 postgis-3.0.0]# echo $?
0

启动postgresql服务,进入命令行操作界面,执行以下命令: 

create extension postgis

select * from pg_available_extensions where name like 'postgis%';

插件正常的状态为至少三行。

postgres=# select * from pg_available_extensions where name like 'postgis%';
          name          | default_version | installed_version |                               comment                               
------------------------+-----------------+-------------------+---------------------------------------------------------------------
 postgis                | 3.0.0           | 3.0.0             | PostGIS geometry, geography, and raster spatial types and functions
 postgis_tiger_geocoder | 3.0.0           |                   | PostGIS tiger geocoder and reverse geocoder
 postgis_topology       | 3.0.0           |                   | PostGIS topology spatial types and functions
 postgis_raster         | 3.0.0           |                   | PostGIS raster types and functions
(4 rows)


 

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐