¿Cómo instalar mongodb 3.4 en debian stretch (9)?

13

Quiero instalar mongodb 3.4 en Debian Stretch. Desafortunadamente, los paquetes de estiramiento de Debian son solo mongodb 3.2 ( https://packages.debian.org/stretch/mongodb ).

Los documentos de mongodb solo mencionan debian 7 y 8 ( https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/ ). Cuando uso los comandos de debian 8 no puedo instalar paquetes mongodb porque tienen dependencias insatisfechas.

Al permitir jessie-backports, el error de dependencias no satisfechas desaparece, pero no estoy seguro de si debo hacer esto e instalar los paquetes de jessie-backports en el tramo.

¿Cómo instalarías mongodb 3.4 en Debian Stretch?

Gracias por cualquier consejo

Hamburml
fuente
lanzaron 3.6 para estiramiento
eri

Respuestas:

16

El error cuando intenta utilizar las instrucciones de Debian 8 sugiere muchas dependencias faltantes, pero de hecho funcionará si instala la dependencia faltante real ( libssl1.0.0). Como referencia, para resolver lo que faltaba, descargué el mongodbinario y eché un vistazo a ldd:

adam@debian9:~/mongo/mongodb-linux-x86_64-debian81-3.4.6/bin$ ldd mongod
    linux-vdso.so.1 (0x00007ffd0e15d000)
    libssl.so.1.0.0 => not found
    libcrypto.so.1.0.0 => not found
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f93c6dff000)
    *snip*

Si echa un vistazo a lo que está instalado en Debian 9, básicamente solo tenemos versiones libsslque son demasiado nuevas. Las bibliotecas libssly libcryptoson instaladas por el libsslpaquete y es bastante independiente. Por lo tanto, podemos tomar el libssl1.0.0paquete Debian 8 e instalarlo.

La versión amd64 del paquete se puede encontrar aquí (solo Google para libssl1.0.0 Jesse y su arco para otra versión).

Para instalar ese paquete, descargue el archivo (en mi caso fue para Descargas) y luego instálelo con dpkg:

adam@debian9:~$ sudo dpkg -i /home/adam/Downloads/libssl1.0.0_1.0.1t-1+deb8u6_amd64.deb 
Selecting previously unselected package libssl1.0.0:amd64.
(Reading database ... 126471 files and directories currently installed.)
Preparing to unpack .../libssl1.0.0_1.0.1t-1+deb8u6_amd64.deb ...
Unpacking libssl1.0.0:amd64 (1.0.1t-1+deb8u6) ...
Setting up libssl1.0.0:amd64 (1.0.1t-1+deb8u6) ...

Con eso completo, revisamos rápidamente ldd:

adam@debian9:~/mongo/mongodb-linux-x86_64-debian81-3.4.6/bin$ ldd mongod
    linux-vdso.so.1 (0x00007ffdf25de000)
    libssl.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007f86bc12d000)
    libcrypto.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007f86bbd31000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f86bbb29000)
*snip*

¡Éxito! Ahora intentemos de nuevo la instalación del paquete de mongodb-org:

adam@debian9:~$ sudo apt install mongodb-org
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  mongodb-org-mongos mongodb-org-server mongodb-org-shell mongodb-org-tools
The following NEW packages will be installed:
  mongodb-org mongodb-org-mongos mongodb-org-server mongodb-org-shell mongodb-org-tools
0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
Need to get 66.8 MB of archives.
After this operation, 270 MB of additional disk space will be used.
Do you want to continue? [Y/n] 
Get:1 http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.4/main amd64 mongodb-org-shell amd64 3.4.6 [7,980 kB]
Get:2 http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.4/main amd64 mongodb-org-server amd64 3.4.6 [14.2 MB]
Get:3 http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.4/main amd64 mongodb-org-mongos amd64 3.4.6 [8,103 kB]
Get:4 http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.4/main amd64 mongodb-org-tools amd64 3.4.6 [36.5 MB]
Get:5 http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.4/main amd64 mongodb-org amd64 3.4.6 [3,820 B]
Fetched 66.8 MB in 7s (9,509 kB/s)                                                             
Selecting previously unselected package mongodb-org-shell.
(Reading database ... 126491 files and directories currently installed.)
Preparing to unpack .../mongodb-org-shell_3.4.6_amd64.deb ...
Unpacking mongodb-org-shell (3.4.6) ...
Selecting previously unselected package mongodb-org-server.
Preparing to unpack .../mongodb-org-server_3.4.6_amd64.deb ...
Unpacking mongodb-org-server (3.4.6) ...
*snip*
Adding system user `mongodb' (UID 119) ...
Adding new user `mongodb' (UID 119) with group `nogroup' ...
Not creating home directory `/home/mongodb'.
Adding group `mongodb' (GID 123) ...
Done.
Adding user `mongodb' to group `mongodb' ...
Adding user mongodb to group mongodb
Done.
Setting up mongodb-org (3.4.6) ...

Finalmente, asegurémonos de que el servicio se inicie y podamos conectarnos con un shell:

adam@debian9:~$ sudo systemctl start mongod
adam@debian9:~$ mongo
MongoDB shell version v3.4.6
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.6 

Y ahí lo tienes: paquetes de Jesse trabajando en Stretch. Estoy seguro de que pronto habrá un lanzamiento oficial que hará que esto quede obsoleto, pero mientras tanto esta es una solución relativamente indolora.

Adam C
fuente
Gracias por el truco de backports. Lo estaba package not foundbuscando mongodb-orgcuando me di cuenta de que tenía el error equivocado de Linux. Tengo una máquina virtual de 32 bits en lugar de 64 bits ... ¡Uy! ¡Las instrucciones y binarios de MongoDB son solo para 64 bits!
sumitkm
2
ese ha sido el caso durante mucho tiempo, 32 bits tenía limitaciones severas (2GB de datos máximos), particularmente en el motor de almacenamiento MMAP, no estoy seguro de que WiredTiger lo haya admitido alguna vez
Adam C
3
lo encontró: dejó de admitir 32 bits con la versión 3.0: docs.mongodb.com/manual/release-notes/3.0-compatibility/…
Adam C
1
Gracias por esto Adam. En el paso final que usaría, sudo systemctl start mongodya que SystemD es el sistema de inicio predeterminado para Debian desde Jessie y se serviceconvirtió en un script de compatibilidad.
Rafa
3

Parece que mongodb 3.4 aún no tiene binarios para debian stretch en su repositorio apt oficial. Su mejor enfoque puede ser construir desde la fuente para su sistema.

Hay instrucciones específicas en esta página: https://github.com/mongodb/mongo/wiki/Build-Mongodb-From-Source

También podría intentar usar los paquetes de Ubuntu para Xenial, pero no hay garantía de que esto funcione correctamente, y creo que construir desde la fuente sería una mejor idea.

Ivan G.
fuente
Intenté compilarlo desde la fuente, pero obtengo SSLv2_method no se ha declarado errores desde asio / ssl / impl / context.ipp. ¿Algunas ideas?
Hamburml
1

Acabo de tener este problema (aunque usando debain 9).

Un poco de investigación reveló que se debía al hecho de que el instalador no podía eliminar la versión anterior del paquete debian (estaba intentando actualizar el paquete mongodb no oficial proporcionado por Debian a los paquetes oficiales mongodb-org).

La solución fue la siguiente:

sudo apt-get autoremove mongodb-org
sudo apt-get autoclean
sudo apt-get clean
sudo apt-get autoremove
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install -y mongodb-org

¡Espero que esto ahorre algo de tiempo!

ricardo
fuente
0

Creé un repositorio de Github para facilitar la creación de la última versión de MongoDB. Construirá todo internamente en lugar de depender de apt, incluido el servicio systemd.

Patrik Laszlo
fuente
0

Estoy usando Debian 9 Stretch

Descargué esta versión de MongoDB: Linux 64-bit legacy 64x

ingrese la descripción de la imagen aquí

Lo descargué a mi carpeta de escritorio y le cambié el nombre a mongodb

Después de eso, "necesita" mover su carpeta recientemente renombrada a /opt/

mv mongodb /opt/

Ahora puede acceder /opt/mongodb/biny ejecutar un comando como ese:

./mongod --dbpath ./db/

Para hacer que la cosa sea divertida, puede crear un enlace simbólico, por ejemplo, mongodpara /usr/local/bin/:

ln -s /opt/mongodb/bin/mongod /usr/local/bin/mongod

Ahora, en su terminal, escriba el comando, desde cualquier lugar:

mongod --dbpath /homer/user/Desktop/db

Debe especificar --dbpath para que el mongod funcione correctamente.

Alex
fuente