一, 问题提出
内网的一台 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
来源: http://www.linuxidc.com/Linux/2019-07/159596.htm