在Linux上安装oci8
2019-12-30 本文已影响0人
猫和芝士蛋糕
1 背景
之前公司里有一个使用Go的Prometheus Exporter项目,由于项目中使用了rana/ora.v4依赖来连接Oracle数据库,而这个依赖本身又依赖于Oracle的oci8。
由于多个产品线依赖于这个项目,而维护项目的老哥已经离职,导致没有人知道这玩意怎么编译,因此需要重新找到编译此项目的方法。
2 环境
Linux CentOS
go1.13.5 linux/amd64
3 安装oci-8
3.1 下载rpm包
要安装oci-8,首先需要Oracle的Instant Client Package里12版本的basic和dev模块,下载地址。


下载需要oracle帐户,自行注册即可;下载链接选择rpm包。
3.2 安装rpm包
将oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm和oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm下载到随便哪个目录下后,
执行
rpm -i oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm
rpm -i oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm
进行安装。
执行
rpm -ql oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64
rpm -ql oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64
查询安装地址。
3.3 配置pkg-config
mkdir -p /usr/lib/pkgconfig/
touch oci8.pc
oci8.pc的内容如下所示:
libdir=/usr/lib/oracle/12.2/client64/lib
includedir=/usr/include/oracle/12.2/client64/
glib_genmarshal=glib-genmarshal
gobject_query=gobject-query
glib_mkenums=glib-mkenums
Name: oci8
Description: oci8 library
Libs: -L${libdir} -lclntsh -locci
Cflags: -I${includedir}
Version: 12.2
在.bash_profile或.bash_rc里添加下列语句,执行source使其生效:
export PKG_CONFIG_PATH=/usr/lib/pkgconfig/
3.4 配置动态链接库
在/etc/ld.so.conf.d/目录下创建文件oracle.conf,内容如下:
/usr/lib/oracle/12.2/client64/lib
然后执行ldconfig
4 执行项目编译
至此项目需要的oci8依赖就搞定了。我们项目中直接存放了prometheus的编译工具——promu,为项目配置好目录结构后,执行./promu build即可完成编译。