在 alpine linux 上执行 mongodb 二进制文件

Posted

技术标签:

【中文标题】在 alpine linux 上执行 mongodb 二进制文件【英文标题】:Execute mongodb binaries on alpine linux 【发布时间】:2015-12-19 21:14:03 【问题描述】:

我正在尝试在 Alpine 64 位 Linux 中为 docker 容器运行二进制 mongodb。但是在运行命令时:./mongodb出现如下错误:

bash-4.3 # ./mongod
bash: ./mongod: No such file or directory.

什么原因不能运行?

【问题讨论】:

你真的运行“./mongod”而不是“./mongodb”吗? 我已经运行了“./mongod” 【参考方案1】:

如果您仍然需要使用某个包,那么现在测试存储库中有一个可用的包,您可以尝试一下。

http://dl-3.alpinelinux.org/alpine/edge/testing/x86_64/

echo 'http://dl-3.alpinelinux.org/alpine/edge/testing' >> /etc/apk/repositories

apk upgrade --update

apk add mongodb

【讨论】:

感谢您的回答。我执行了mongodb的安装,但是在提供服务的那一刻,错误如下所示。我认为这是因为还在测试中。的bash-4.3#mongod的错误重定位的/ usr /斌/ mongod的:_ZNSt13runtime_errorC1EPKc:符号没有发现错误的重新定位的/ usr /斌/ mongod的:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_ios_Openmode:符号没有发现错误的重新定位的/ usr /斌/ mongod的:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc:没有找到符号跨度> 您好,我自己尝试过,然后遇到了像您自己一样的错误。有点为时过早 - 希望开发人员能尽快修复它并移入发布仓库。我尝试自己从源代码构建它,但事实证明它非常耗时 - 特别是因为很多工具 - 用 GO 编写 - 需要单独编译。【参考方案2】:

因为 MongoDB 的二进制发行版是针对 glibc 链接的,而 Alpine Linux 使用另一个 C 库:

/tmp/mongo/mongodb-linux-x86_64-3.0.7/bin # ./mongod
sh: ./mongod: not found
/tmp/mongo/mongodb-linux-x86_64-3.0.7/bin # ldd ./mongod
    /lib64/ld-linux-x86-64.so.2 (0x7f18f059f000)
    libpthread.so.0 => /lib64/ld-linux-x86-64.so.2 (0x7f18f059f000)
    librt.so.1 => /lib64/ld-linux-x86-64.so.2 (0x7f18f059f000)
    libdl.so.2 => /lib64/ld-linux-x86-64.so.2 (0x7f18f059f000)
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x7f18f02ac000)
    libm.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7f18f059f000)
    libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x7f18f009a000)
    libc.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7f18f059f000)
    ld-linux-x86-64.so.2 => /lib/ld-linux-x86-64.so.2 (0x7f18efe0e000)
Error relocating ./mongod: gnu_get_libc_version: symbol not found
Error relocating ./mongod: __isinf: symbol not found
Error relocating ./mongod: backtrace_symbols: symbol not found
Error relocating ./mongod: __sbrk: symbol not found
Error relocating ./mongod: strtoq: symbol not found
Error relocating ./mongod: __register_atfork: symbol not found
Error relocating ./mongod: __isnan: symbol not found
Error relocating ./mongod: pthread_yield: symbol not found
Error relocating ./mongod: strtouq: symbol not found
Error relocating ./mongod: __finite: symbol not found
Error relocating ./mongod: backtrace: symbol not found
/tmp/mongo/mongodb-linux-x86_64-3.0.7/bin # 

所以在有人为 MongoDB 构建 Alpine Linux 包之前,您唯一的选择就是自己编译。

【讨论】:

以上是关于在 alpine linux 上执行 mongodb 二进制文件的主要内容,如果未能解决你的问题,请参考以下文章

alpine linux中如何使用crontab执行定时任务

alpine linux中如何使用crontab执行定时任务

如何在 alpine 中只安装 mongodb-org-shell 而不是 mongodb?

alpine linux 输出错误“base64: unrecognized option: w”

为啥在 Alpine Linux 上安装 Pandas 需要很长时间

alpine linux怎么安装文件