PostgreSQL插件开发踩坑之路1

来源:互联网 发布:java使用md5加密解密 编辑:程序博客网 时间:2024/06/01 08:46

在根据博客http://big-elephants.com/2015-10/writing-postgres-extensions-part-i/中的教程创建自己的extension时,遇到了几个问题导致插件没有办法正确make install 和create extension,google了半天也没有发现原因,现在我把遇到的问题逐一介绍一下,虽然很简单也还是希望方便一下新人。

介绍一下我的环境:Ubuntu14.04系统,terminal 配置了zsh(好像没啥影响啊),PostgreSQL9.6.2版本源码简单版安装,没有配置环境变量(之后导致插件没有正常安装)

1. 在按照上述博客创建自己的extension之后,make install 首先遇到的问题是提示

Makefile:7: /usr/lib/postgresql/9.3/lib/pgxs/src/makefiles/pgxs.mk: No such file or directorymake: *** No rule to make target `/usr/lib/postgresql/9.3/lib/pgxs/src/makefiles/pgxs.mk'.  Stop.

出现这个问题之后,根据google的结果发现是少安装了两个开发包,于是直接常规用户(非postgres用户非root用户)下直接sudo安装:

sudo apt-get install postgresql-server-dev-allsudo apt-get install postgresql-common

上面的错误不再报了

2. 解决了上一个错误之后,重新make install,马上出现另一个问题

/bin/mkdir -p '/usr/share/postgresql/9.3/extension'/bin/mkdir -p '/usr/share/postgresql/9.3/extension'/usr/bin/install -c -m 644 base36.control '/usr/share/postgresql/9.3/extension/'make: *** No rule to make target `base36--0.0.1.sql', needed by `installdata'.  Stop.

一看是.sql文件出了问题,于是查看了Makefile文件,发现其中base36--0.0.1.sql部分文件名跟文件实际文件名不一致,于是修改文件名,这里我是直接使用base36--0.0.1.sql这个文件名,因为看到其他插件都是采用这种两杠的命名规则,目前还不知道原因,修改好文件名之后,正常make install 了,提示如下:

/bin/mkdir -p '/usr/share/postgresql/9.3/extension'/bin/mkdir -p '/usr/share/postgresql/9.3/extension'/usr/bin/install -c -m 644 base36.control '/usr/share/postgresql/9.3/extension/'/usr/bin/install -c -m 644 base36-0.0.1.sql '/usr/share/postgresql/9.3/extension/'
为啥给cp到了9.3版本的目录下面了,先不管它,我连接了test数据库准备CREATE EXTENSION base36,结果提示我

ERROR:  could not open extension control file "/usr/local/pgsql/share/extension/base36.control": No such file or directory
这个明显是Makefile的target搞错了啊,查阅了文档,进入root用户开始修改环境变量

LD_LIBRARY_PATH=/usr/local/pgsql/libexport LD_LIBRARY_PATH/sbin/ldconfig /usr/local/pgsql/libPATH=/usr/local/pgsql/bin:$PATHexport PATH


再重新su来make install, 连接test数据库CREATE EXTENSION base64,成功!

原创粉丝点击