[英]How to provide `__snprintf_chk` to a process in Alpine Linux
我已經編譯了一個 PostgreSQL 插件wal2json ,但是當嘗試在 PostgreSQL 中加載它時,它抱怨:
錯誤:無法加載庫“/usr/local/lib/postgresql/wal2json.so”:重新定位/usr/local/lib/postgresql/wal2json.so時出錯:__snprintf_chk:找不到符號
我找到了__snprintf_chk的文檔。
它在哪里,我應該怎么做才能將它提供給插件?
我的猜測是它在某個核心庫中,但在我擁有的版本中不存在。 也許我可以靜態鏈接它?
更新:我發現這是使用musl
而不是glibc
的 Alpine Linux 的問題。 我已經為glibc
安裝了 Alpine 軟件包,正如https://github.com/jeanblanchard/docker-alpine-glibc/blob/master/Dockerfile中所做的那樣。 沒有幫助,仍然是同樣的錯誤。
alpine 使用 musl libc 而不是 glibc,缺少一些庫,您可以通過ldd
檢查。
解決方案:檢查並安裝glibc pkg,或 gcompact 或 libc6-compat
apk add gcompat
我切換到另一個基本 Docker 映像 Ubuntu。 結果是一個更大的圖像,但__snprintf_chk
可用並且有效。
此外,PostgreSQL 有一個 Docker 鏡像,它已經有wal2json
可用,我最終將其用於生產。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.