首页 > 解决方案 > 如何为 Alpine Linux 中的进程提供`__snprintf_chk`

问题描述

我已经编译了一个 PostgreSQL 插件wal2json,但是当尝试在 PostgreSQL 中加载它时,它会抱怨:

错误:无法加载库“/usr/local/lib/postgresql/wal2json.so”:重新定位/usr/local/lib/postgresql/wal2json.so时出错:__snprintf_chk:找不到符号

我找到了__snprintf_chk的文档。

它在哪里,我应该怎么做才能将它提供给插件?

我的猜测是它在某个核心库中,但在我拥有的版本中不存在。也许我可以静态链接它?


更新:我发现这是 Alpine Linux 的问题,它使用musl而不是glibc. 我已经安装了 Alpine 软件包,如https://github.com/jeanblanchard/docker-alpine-glibc/blob/master/Dockerfileglibc中所做的那样。没有帮助,仍然是同样的错误。

标签: linuxpostgresqlshared-librariespostgresql-9.4alpine

解决方案


我切换到另一个基础 Docker 映像 Ubuntu。结果是更大的图像,但__snprintf_chk可用且有效。

此外,PostgreSQL 有一个已经wal2json可用的 Docker 映像,我最终将其用于生产。


推荐阅读