hillpig的个人博客分享 http://blog.sciencenet.cn/u/hillpig 畅想ing,思考ing,前行ing Email:bluevaley@gmail.com

博文

rhel6+postgresql8.4+postgis1.4+eclipse CDT3.6 调试环境搭建

已有 8189 次阅读 2011-4-26 16:11 |个人分类:postgresql|系统分类:科研笔记| 调试, Eclipse, postgresql, rhel, postgis

上次写过在Ubuntu9上面的搭建环境(http://blogold.chinaunix.net/u2/81513/showart_2168880.html),这次写写在Red Hat Enterprise Linux 6(RHEL 6)上面的调试搭建环境 ,如无特殊说明,下面均在32位机器上进行。
首先说明一下,我是放弃了在CentOS 5.6上搭建环境之后才选择RHEL 6的,整整折腾了2天的bug终于放弃在CentOS 5.6上继续鼓捣,RHEL 6的可靠性、易用性让我最终选择了它,尽管搭建环境解决其中出现的bug我做了两遍实验,折腾了足足3天。但是经过下面的步骤,您可以避免大量的环境设置问题,约在6个小时左右的时间全部设置完毕。
注意:本文如无特殊说明,下载的安装程序均为源代码,之所以没有使用rpm包,这是血的教训,最主要的原因是库依赖问题。

1.安装RHEL 6
下载DVD光盘:http://www.ha97.com/3710.html
2.7G,2M的带宽,用迅雷5下大概3.5小时,下载完毕后一定要使用md5工具(dos下的命令行工具md5sum)看看是否文件完整,我就曾经用firefox的下载的不完整过一次,害得我白刻录了一张DVD。
然后用光盘刻录工具(windows下的如nero,8.0从这里下载),刻录成光盘以便安装。
安装过程具体参考(焦振清.RHEL6安装配置图片详解),我安装的英文版(如果用到中文的话,只需要设置输入法足够),这里主要说明的有:

  • 创建postgres账户,以后用该账户作为调试使用

  • 在“自定义安装的服务器类型”中做如下选择(图片不清楚,可以拷贝图片地址,在新页面中查看):


上图中,一定要选择“Desktop”和“Customize now”,接下来, 语言增加中文:

在Development里选择:Additional Development, Development Tools, Server Platform Development三项,如下图:

还要注意,如果您今后还想装VirtualBox,一定要把Additional Development中的Optional pcakages中的SDL-devel-1.2.14-2.el6.i686包选中,默认的是不选的。
说明:如果您在rhel6安装时没有选择该SDL-devel-1.2.14-2.el6.i686包,在以后需要装VirtualBox需要依赖该包时,按照如下步骤安装:

  1. 准备好rhel6的ISO安装光盘,例如在如下目录:
    /home/yourname/Downloads/rhel-server-6.0-i386-dvd.iso

  2. 挂载
    mount -t iso9660 -o loop /home/yourname/Downloads/rhel-server-6.0-i386-dvd.iso /media/cdrom/

  3. 在System-Administration-Add/Remove Software里,搜索SDL,勾选SDL-devel-1.2.14-2.el6.i686安装即可。

好,安装完成后重启,使用postgres账户登录。

2.安装Postgreql 8.4
说明:之所以先把Postgresql安装起来,是因为先让它跑起来,后面再用Eclipse CDT设置调试环境。
下载源代码:http://wwwmaster.postgresql.org/download/mirrors-ftp/source/v8.4.8/postgresql-8.4.8.tar.gz 到自己的目录里,如/home/postgres/development/ 。
先看安装说明:在文档 http://www.postgresql.org/docs/8.4/interactive/install-requirements.html,中说明需要的安装前置条件如下:

  • You need an ISO/ANSI C compiler (at least C89-compliant). Recent versions of GCC ...

  • tar is required to unpack the source distribution, in addition to either gzip or bzip2. In addition, gzip is required to install the documentation.

  • The GNU Readline library is used by default. It allows psql (the PostgreSQL command line SQL interpreter) to remember each command you type,...

  • The zlib compression library will be used by default....

我们通过如下命令来看看我们安装的RHEL6是否已经满足这些条件,下面的命令分别对应上面的要求:

  • gcc --version   我们发现:gcc (GCC) 4.4.4 20100726 (Red Hat 4.4.4-13)

  • tar --version 我们发现:tar (GNU tar) 1.23

  • 通过系统菜单System->Administration->Add/Remove Software 搜索Readline,我们发现:readline-6.0-3.el6

  • 通过系统菜单System->Administration->Add/Remove Software 搜索zlib,我们发现:zlib-1.2.3-25.el6等几个文件

好,条件全部满足,我们开始准备安装PostgreSQL:
#2.1切换到root用户,创建postgresql默认的安装目录(root用户):
su
#此处需要输入root的密码
mkdir /usr/local/pgsql
chown postgres /usr/local/pgsql
#2.2编译安装(注意:postgres 用户)。说明:尽管Postgresql的文档中使用gmake来编译,此处我们仍然用make方法:
在上面的命令行窗口中,退出root:
exit
进入postgres环境:
cd /home/postgres/development/
tar zxf postgresql-8.4.8.tar.gz
cd postgresql-8.4.8
./configure --enable-depend --enable-cassert --enable-debug
make
make install
#2.3启动Postgresql服务器,看是否成功(postgres用户):
命令行执行:
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data >logfile 2>&1 &
另外启动一个命令窗口,创建一个测试数据库实例mydb:
/usr/local/pgsql/bin/createdb mydb
然后:
/usr/local/pgsql/bin/psql mydb
mydb=#select version();
看看是否成功?若成功,别先高兴,革命成功了十分之一。不成功,您给我留言。
#2.4 设置PATH路径,重启机器,再次进入postgres用户(postgres用户):
修改PATH的目的是以后不需要每次执行命令都输入全路径,如/usr/local/pgsql/bin/postmaster 命令设置完之后,只需要输入postermaster就可以了。
gedit /home/postgres/.bash_profile
原有的PATH=....,在最后增加路径/usr/local/pgsql/bin,修改后的为:
PATH=$PATH:$HOME/bin:/usr/local/pgsql/bin
保存后重启,再次用postgres账户登录。

3.安装并设置Eclipse CDT 3.6
若仁兄您不喜欢用IDE开发环境,就喜欢用命令行调试,那您可以参考我另一篇文章:使用GDB和DDD调试POSTGRESQL
下载Eclipse CDT 3.6(我用的Galileo):http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/galileosr2 , 假定保存在/home/postgres/development/,并解压缩
安装前提:jdk1.6,由于RHEL 6已经安装了java-1.6.0-openjdk-1....,满足该条件。
然后,我们新建一个Eclipse的工作区目录:/home/postgres/workspace
为方便使用,建议在桌面建立启动快捷方式,注意创建的时候在Command选项填入:
env GDK_NATIVE_WINDOWS=1 /home/postgres/develop/eclipse/eclipse
加入env GDK_NATIVE_WINDOWS=1的原因是为了避免启动不了图形界面(此问题在Ubuntu9里面存在,我没试过在RHEL 6里是否仍然有问题,故为保险起见,加入该参数)
最后,根据 http://wiki.postgresql.org/wiki/Working_with_Eclipse 设置Eclipse的调试环境。该文档非常细致,建议自己仔细看看(主要是要注意设置路径,见下面Arguemnts设置),这里再简单说明一下重点:
一般会设定两个调试配置,一个是为Postmaster进程调试使用的,即数据库从启动到接收sql客户端请求的调试,另外一个调试配置是为postgres进程使用的,我们都知道,当客户端sql请求到达服务端的时候,postmaster会fork一个postgres后台进程,这就是为什么调试postgres的原因。
3.1首先我们来看第一个为Postmaster进程调试使用的配置,参考下图,在C/C++ Application选项下建立调试实例:

另外注意的一点是由于我们的Postgresql 默认的数据库运行目录为/usr/local/pgsql/data:注意设定Arguemnts选项为:
-D /usr/local/pgsql/data
如下图:


3.2 第二个调试使用的配置是为调试Postmaster进程使用的,如下图,在C/C++ Attach to Application选项下建立调试实例:

那具体怎么调试呢,首先您需要开启两个命令窗口:
一个是Postmaster数据库服务器:
/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
另外一个:
/usr/local/pgsql/bin/psql mydb
然后转到Eclipse里运行为postgres设置的这个调试设置,过一小会后,是不是关联上了,这时您在从psql里执行一条sql语句,是不是可以在你设置的断点处调试了。

4.安装并设置PostGIS 1.4
如果您的工作和PostGIS没有关系,请略过此节。
下载PostGIS 1.4.2:http://postgis.refractions.net/download/postgis-1.4.2.tar.gz , 假定保存在/home/postgres/development/,并解压缩在该目录下。另外PostGIS 1.5我也试过,也可以调试。
安装前置条件:我们根据文档:http://postgis.refractions.net/documentation/manual-1.4/ch02.html#id2701180
Required:

  • PostgreSQL 8.2 or higher...

  • GNU C compiler (gcc). ...

  • GNU Make (gmake or make)....

  • Proj4 reprojection library, version 4.5.0 or greater. The Proj4 library is used to provide coordinate reprojection support within PostGIS. Proj4 is available for download from http://trac.osgeo.org/proj/ .

  • GEOS geometry library, version 3.0.0 or greater. The GEOS library is used to provide geometry tests (ST_Touches(), ST_Contains(), ST_Intersects()) and operations (ST_Buffer(), ST_Union(), ST_Difference()) within PostGIS. GEOS is available for download from http://trac.osgeo.org/geos/ .

知,前三项我们都已经安装,故还需要安装 Libgeos, Proj,如上面所述,这两个软件下载地址如下:
http://download.osgeo.org/proj/proj-4.7.0.tar.gz
http://download.osgeo.org/geos/geos-3.2.2.tar.bz2
下载下来之后假定保存在/home/postgres/development/,并解压缩在该目录下。
4.1 安装proj4(postres账户)
su
mkdir /usr/local/proj4
chown postgres /usr/local/proj4
exit
cd /home/postgres/development
tar zxf proj-4.7.0.tar.gz
cd proj-4.7.0
./configure --prefix=/usr/local/proj4
make
make install
4.2 安装geos(postres账户)
su
mkdir /usr/local/geos
chown postgres /usr/local/geos
exit
cd /home/postgres/development
tar jxf geos-3.1.1.tar.bz2
cd geos-3.1.1
./configure --prefix=/usr/local/geos
make
make install
4.3 安装PostGIS(postres账户)
su
mkdir /usr/local/postgis
chown postgres /usr/local/postgis
exit
cd /home/postgres/development
tar zxf postgis-1.4.2.tar.gz
cd postgis-1.4.2
#下面的 --prefix=/usr/local/postgis 似乎没起作用(尽管如此,还是加入该参数),结果是需要使用root权限进行安装
./configure --prefix=/usr/local/postgis --with-pgconfig=/usr/local/pgsql/bin/pg_config --with-projdir=/usr/local/proj4 --with-geosconfig=/usr/local/geos/bin/geos-config --enable-debug
make
make install
4.4 设置库搜索路径(切换到root账户,设置完后需重启机器)
首先切换到root账户,注意这里不是用su切换,而是使用左面右上角的postgres下面的Switch user按钮
gedit /etc/ld.so.conf
在最后添加两行(注意:只需要两行):
/usr/local/geos/lib
/usr/local/proj4/lib
保存后,运行ldconfig命令,使以上修改生效:
/sbin/ldconfig
重启机器,再次使用postgres账户登入。
4.5 测试一下在mydb数据库实例中导入对PostGIS的支持(postres账户)
启动一个命令窗口:
postmaster -D /usr/local/pgsql/data
再启动一个命令窗口
createlang plpgsql mydb
psql -d mydb -f /usr/local/pgsql/share/contrib/postgis.sql
psql -d mydb -f /usr/local/pgsql/share/contrib/spatial_ref_sys.sql
如果没有问题,则表示PostGIS成功(要知道我历经千辛万苦才没有错误的到这一步的,都是geos,proj4库路径找不到惹得祸)。
关闭数据库服务:
/usr/local/pgsql/bin/pg_ctl stop -D /usr/local/pgsql/data
以后统一使用如下命令来启动数据库服务器:
postmaster -D /usr/local/pgsql/data
4.6 按照和PostGIS方式,在Eclipse CDT里同样建立一个调试项目
可以类似
根据 http://wiki.postgresql.org/wiki/Working_with_Eclipse 设置Eclipse对PostGIS的调试环境,此处略。

5. 安装pgAdmin
3
这里安装pgAdmin 3,这是为了方便客户端使用。
下载pgAdmin 3 v1.12.2 :http://wwwmaster.postgresql.org/download/mirrors-ftp/pgadmin3/release/v1.12.2/src/pgadmin3-1.12.2.tar.gz ,假定保存在/home/postgres/development/,并解压缩在该目录下。
安装前置条件:我们根据文档解压后的源代码目录中的安装说明文档(/home/postgres/development/pgadmin3-1.12.2/install) :
You will need:
- A modern development environment:
   - GTK 2.2 or above.
   - GNU automake 1.9 or above.
   - GNU autoconf 2.59 or above.
   - GNU gcc 3.4 or above.
- wxGTK 2.8.x from http://www.wxwidgets.org/
- libxml2 2.6.18 or above from http://www.xmlsoft.org/
- libxslt 1.1.x or above from http://www.xmlsoft.org/
- PostgreSQL 8.4 or above from http://www.postgresql.org/
我们一样一样看,GTK2.2,GNU那几项RHEL6都已经默认安装,wxGTK 没有,libxml2有,libxslt已经安装,故我们还需要安装wxGTK 2.8.12,下载地址:http://sourceforge.net/projects/wxwindows/files/2.8.12/wxGTK-2.8.12.tar.gz/download ,假定保存在/home/postgres/development/,并解压缩在该目录下。
5.1 安装wxGTK 2.8.12
cd /home/postgres/development
tar zxf wxGTK-2.8.12.tar.gz
cd wxGTK-2.8.12
./configure --with-gtk --enable-gtk2 --enable-unicode
make
su -c "make install"
# Install wxWidgets contrib modules.
cd contrib/
make
su -c "make install"
首先切换到root账户,注意这里不是用su切换,而是使用左面右上角的postgres下面的Switch user按钮
gedit /etc/ld.so.conf
在最后添加一行:
/usr/local/lib
保存后,运行ldconfig命令,使以上修改生效:
/sbin/ldconfig
退出root账户,回到postgres账户中。
5.2 安装pgAdmin3
cd /home/postgres/development
tar zxf pgadmin3-1.12.2.tar.gz
cd pgadmin3-1.12.2
./configure
make
su -c "make install"
5.3 桌面建立一个launcher
设置命令路径为:/usr/local/pgadmin3/bin/pgadmin3

6. 安装QGIS 1.6.0 (未完待续,暂时出错,请不要使用下面代码)
QGIS 1.6.0 主要用于查看空间数据库,下载地址:http://qgis.org/downloads/qgis-1.6.0.tar.bz2 ,假定保存在/home/postgres/development/,并解压缩在该目录下。
根据解压缩后的install文件说明,QGIS所依赖的库为:
Required build deps:
- Qt >= 4.4.0
- Proj >= 4.4.x
- GEOS >= 3.0
- Sqlite3 >= 3.0.0
- GDAL/OGR >= 1.4.x
- Qwt >= 5.0
其中Proj, GEOS, Sqlite3,都已经安装,而Qt 默认安装版本是3,GDAL和Qwt没有安装。故先下载:
GDAL 1.8.0 http://download.osgeo.org/gdal/gdal180.zip
qwt 5.2.1 http://sourceforge.net/projects/qwt/files/qwt/5.2.1/qwt-5.2.1.tar.bz2/download
6.1 安装GDAL 1.8
cd /home/postgres/development
tar zxf gdal180.zip
cd gdal-1.8.0
./configure
make
su -c "make install"
6.2 安装qwt 5.2.1
cd /home/postgres/development
tar zxf qwt-5.2.1.tar.bz2
cd qwt-5.2.1
qmake
make
su -c "make install"
6.3 安装qgis 1.6.0


参考:
[1] 在Linux环境下编译安装配置PostGIS/PostgreSQL全过程


加我私人微信,交流技术。




http://blog.sciencenet.cn/blog-419883-437539.html

上一篇:我使用的linux 常见命令
下一篇:Postgresql生成大量测试数据

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2021-4-19 03:11

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部