在根据博客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 directory
make: *** No rule to make target `/usr/lib/postgresql/9.3/lib/pgxs/src/makefiles/pgxs.mk'. Stop.
sudo apt-get install postgresql-server-dev-all
sudo 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.
/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/lib
export LD_LIBRARY_PATH
/sbin/ldconfig /usr/local/pgsql/lib
PATH=/usr/local/pgsql/bin:$PATH
export PATH