簡體   English   中英

如何為 Alpine Linux 中的進程提供`__snprintf_chk`

[英]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 即使在 PATH 中也找不到 Alpine 可執行二進制文件

我切換到另一個基本 Docker 映像 Ubuntu。 結果是一個更大的圖像,但__snprintf_chk可用並且有效。

此外,PostgreSQL 有一個 Docker 鏡像,它已經有wal2json可用,我最終將其用於生產。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM