Dockerコンテナ用にAlpine64ビットLinuxでバイナリmongodbを実行しようとしています。ただし、コマンドを実行する場合:./mongodb
次のエラーが発生します。
bash-4.3 # ./mongod
bash: ./mongod: No such file or directory.
どういうわけかそれを実行することができませんか?
それでもパッケージを使用する必要がある場合は、テストリポジトリで試してみることができるパッケージがあります。
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のバイナリディストリビューションはglibcに対してリンクされているのに対し、AlpineLinuxは別の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パッケージをビルドするまでは、自分でコンパイルするしかありません。