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

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