我正在尝试为postgresql插件构建deb包,但我得到了以下错误:
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -g -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -I/usr/include/mit-krb5 -fPIC -pie -DLINUX_OOM_SCORE_ADJ=0 -fno-omit-frame-pointer -fpic -I/usr/include/postgresql -I. -I./ -I/usr/include/postgresql/9.4/server -I/usr/include/postgresql/internal -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -I/usr/include/libxml2 -I/usr/include/tcl8.6 -c -o pg_resetxlog.o pg_resetxlog.c
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -g -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -I/usr/include/mit-krb5 -fPIC -pie -DLINUX_OOM_SCORE_ADJ=0 -fno-omit-frame-pointer -fpic pg_resetxlog.o -L/usr/lib/x86_64-linux-gnu -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -L/usr/lib/mit-krb5 -L/usr/lib/x86_64-linux-gnu/mit-krb5 -Wl,--as-needed -L/usr/lib/x86_64-linux-gnu -lpgcommon -lpgport -L/usr/lib/x86_64-linux-gnu -lpq -lpgcommon -lpgport -lselinux -lxslt -lxml2 -lpam -lssl -lcrypto -lgssapi_krb5 -lz -ledit -lrt -lcrypt -ldl -lm -o bdr_resetxlog
pg_resetxlog.o: In function `memcpy':
/usr/include/x86_64-linux-gnu/bits/string3.h:51: undefined reference to `pg_crc32_table'
pg_resetxlog.o: In function `RewriteControlFile':
/var/lib/postgresql/src/bdr-plugin/pg_resetxlog.c:955: undefined reference to `pg_crc32_table'
pg_resetxlog.o: In function `PrintControlValues':
/var/lib/postgresql/src/bdr-plugin/pg_resetxlog.c:749: undefined reference to `pg_crc32_table'
collect2: error: ld returned 1 exit status
make: *** [bdr_resetxlog] Error 1为了构建这个deb包,我使用以下命令:
cd ~/src/
git clone -b bdr-plugin/next git://git.postgresql.org/git/2ndquadrant_bdr.git bdr-plugin
git clone -b debian/bdr https://github.com/2ndQuadrant/bdr-packaging bdr-packaging
cp -rfv bdr-packaging/debian bdr-plugin/debian
cd bdr-plugin
dpkg-buildpackage -b -rfakeroot -us -uc关于依赖项,已安装了所有postgresql服务器,并且所有postgresql看起来都正常:
# dpkg -l | grep postgresq | grep dev
ii postgresql-bdr-server-dev-9.4 9.4.5-2trusty amd64 development files for PostgreSQL-BDR 9.4 server-side programming
ii postgresql-server-dev-9.1 9.1.21-1.pgdg14.04+1 amd64 development files for PostgreSQL 9.1 server-side programming
ii postgresql-server-dev-9.2 9.2.16-1.pgdg14.04+1 amd64 development files for PostgreSQL 9.2 server-side programming
ii postgresql-server-dev-9.3 9.3.12-1.pgdg14.04+1 amd64 development files for PostgreSQL 9.3 server-side programming
ii postgresql-server-dev-9.5 9.5.2-1.pgdg14.04+1 amd64 development files for PostgreSQL 9.5 server-side programming
ii postgresql-server-dev-all 173.pgdg14.04+1 all extension build tool for multiple PostgreSQL versions知道我为什么会犯这个错误吗?
问候
发布于 2016-08-09 07:18:48
造成这个问题的原因是Debian/Ubuntu升级postgresql-server-dev-all要求postgresql-server-dev-9.5,它反过来需要libpq-dev 9.5。
Libpq9.5中的一些变化打破了绑定在BDR中的pg_resetxlog和pg_dump的补丁版本。
BDR 1.0增加了兼容性更改来解决这一问题,但是没有真正的方法可以解决这样的问题:当Debian、Ubuntu或PGDG更新libpq时,它可能会破坏以前工作的包。
https://dba.stackexchange.com/questions/136636
复制相似问题