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

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

原文:http://blog.sciencenet.cn/home.php?mod=space&uid=419883&do=blog&id=437539


已有 879 次阅读 2011-4-26 16:11 |个人分类:postgresql|系统分类:科研笔记|关键词:rhel 6, postgresql 8.4, postgis 1.4, eclipse CDT3.6 , 调试, 环境搭建
上次写过在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需要依赖该包时,按照如下步骤安装:

    准备好rhel6的ISO安装光盘,例如在如下目录:
    /home/yourname/Downloads/rhel-server-6.0-i386-dvd.iso
    挂载
    mount -t iso9660 -o loop /home/yourname/Downloads/rhel-server-6.0-i386-dvd.iso /media/cdrom/
    在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/home.php?mod=space&uid=419883&do=blog&id=437539

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章