一、問題提出
內網的一台CentOS服務器,需配置PostgreSQL ODBC。如果可以連接Internet,此工作很容易,使用yum install自動安裝相應依賴包后簡單配置即可。但當置於內網環境時,事情就有些麻煩,需要事先手工下載各個依賴包,上傳到服務器后再進行安裝,最后才是配置。
本文記錄了這次進行離線配置的主要步驟。
二、所需依賴包
在安裝CentoOS時,選擇了Server with GUI環境,並已含以下安裝包:
- Java Platform
- KDE
- Compatibility Librares
- Development Tools
- System Administration Tools
此時,所需的依賴包總計5個,如下:
- postgresql-libs-9.2.24-1.el7_5.x86_64.rpm,下載地址http://mirror.centos.org/centos/7/os/x86_64/Packages/postgresql-libs-9.2.24-1.el7_5.x86_64.rpm
- postgresql-9.2.24-1.el7_5.x86_64.rpm,下載地址http://mirror.centos.org/centos/7/os/x86_64/Packages/postgresql-9.2.24-1.el7_5.x86_64.rpm
- postgresql-devel-9.2.24-1.el7_5.x86_64.rpm,下載地址http://mirror.centos.org/centos/7/os/x86_64/Packages/postgresql-devel-9.2.24-1.el7_5.x86_64.rpm
- unixODBC-2.3.7pre.tar.gz,下載地址https://jaist.dl.sourceforge.net/project/unixodbc/unixODBC/2.3.7/unixODBC-2.3.7pre.tar.gz
- psqlodbc-10.03.0000.tar.gz,下載地址https://ftp.postgresql.org/pub/odbc/versions/src/psqlodbc-10.03.0000.tar.gz
在Internet下載后,再上傳到內網Centos的服務器上。
三、安裝
1) 安裝postgresql相關依賴包
此部分工作相對簡單,按順序執行即可:
rpm -ivh postgresql-libs-9.2.24-1.el7_5.x86_64.rpm
rpm -ivh postgresql-9.2.24-1.el7_5.x86_64.rpm
rpm -ivh postgresql-devel-9.2.24-1.el7_5.x86_64.rpm
2) 安裝unixODBC
此部分也無難度:
tar -zxvf unixODBC-2.3.7pre.tar.gz
cd unixODBC-2.3.7pre
./configure --enable-gui=no
make
make install
3) 安裝psqlodbc
一般錯誤均發生在這部分,但原因卻大多數在前兩步,需仔細檢查。如下:
tar zxvf psqlodbc-10.03.0000.tar.gz
cd psqlodbc-10.03.0000
./configure
make
make install
如果報錯找不到libpq.so,原因可能是不認識/usr/lib/libpq.so.5或usr/lib/libpq.so.5.5,在/usr/lib下創建一個libpq.so的軟連接,或者直接拷貝其中一個並改名。
四、配置ODBC
此部分在離線、在線狀態是一樣的。
1) 編輯/etc/odbcinist.ini
該文件主要是配置相關驅動文件,以下是新建一個ODBCPostgres項:
[ODBCPostgres] Description = ODBC for PostgreSQL Driver = /usr/local/lib/psqlodbcw.so Driver64 = /usr/local/lib/psqlodbcw.so Setup = /usr/local/unixODBC/lib/libodbc.so Setup64 = /usr/local/unixODBC/lib/libodbc.so FileUsage = 1
2) 編輯/etc/odbc.ini
該文件配置數據源的具體信息,例如:
[PostgresDB] Driver = ODBCPostgres Description = Postgres DSN Servername = 192.168.64.123 Database = postgres Username = postgres Password = postgres Port = 5432 ReadOnly = No
3) 測試
使用unixodbc自帶的isql測試是否能成功連接:
export ODBCINI=/etc/odbc.ini
export ODBCSYSINI=/etc
isql PostgresDB postgres postgres