2015-09-22 17 views
6

Sto provando a eseguire il bong mongodb in Alpine 64bit Linux per un contenitore mobile. Ma quando si esegue il comando: ./mongodb verifica il seguente errore:Esegui binari mongodb su linux alpino

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

Per quale motivo non è possibile farlo funzionare?

+0

ha effettivamente eseguire "./mongod" invece di "./mongodb"? –

+0

Ho eseguito "./mongod" –

risposta

4

Poiché la distribuzione binaria di MongoDB è legata contro glibc, mentre alpino Linux usa un'altra libreria 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 # 

Così fino a quando qualcuno costruisce un pacchetto alpino Linux per MongoDB, l'unica opzione è di compilare da soli.

7

Se è ancora necessario utilizzare un pacchetto, ora ce n'è uno disponibile nel repository di test con cui si può provare.

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 
+1

Grazie per la risposta. Ho eseguito l'installazione di mongodb, ma al momento di fornire il servizio, gli errori sono mostrati di seguito. Penso che sia per essere ancora in fase di test. bash-4.3 # mongod errore riassegnazione/usr/bin/mongod: _ZNSt13runtime_errorC1EPKc: simbolo non trovato errore riassegnazione/usr/bin/mongod: _ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode: simbolo non trovato errore riassegnazione/usr/bin/mongod: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc: simbolo non trovato –

+1

Ciao, l'ho provato io stesso e poi ho avuto degli errori come te. Un po 'prematuro - si spera che lo sviluppatore lo risolva e si trasferisca presto nel repository di distribuzione. Ho provato a realizzarlo dalla fonte, ma si è rivelato abbastanza dispendioso in termini di tempo, soprattutto dal momento che molti strumenti, scritti in GO, devono essere compilati separatamente. – Nio