linux - 如何为 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
中所做的那样。没有帮助,仍然是同样的错误。
解决方案
我切换到另一个基础 Docker 映像 Ubuntu。结果是更大的图像,但__snprintf_chk
可用且有效。
此外,PostgreSQL 有一个已经wal2json
可用的 Docker 映像,我最终将其用于生产。
推荐阅读
- assembly - ATA PIO 磁盘读取以奇怪的偏移量读取
- java - 如何跨字段验证仅匹配我的自定义约束的字段?
- java - 无法加载驱动程序类:org.h2.Driver
- c# - 简单注入器:释放注入实例的事件订阅
- gpsd - gpsd ttyACM0 没有这样的设备
- html - 卡片视图的背景图像未显示
- r - Tukey HSD 用于 R 中的分类和连续变量
- python-3.x - ModuleNotFoundError:没有名为“pyproj.crs.crs”的模块;“pyproj.crs”不是一个包
- django - Django:获取第二个用户对象
- html - 宽度变化时进度点的位置没有正确对齐