Comment installer mongodb 3.4 dans Debian Stretch (9)?

13

Je veux installer mongodb 3.4 sur Debian Stretch. Malheureusement, les paquets extensibles Debian ne sont que mongodb 3.2 ( https://packages.debian.org/stretch/mongodb ).

Les documents mongodb ne mentionnent que Debian 7 et 8 ( https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/ ). Lorsque j'utilise les commandes debian 8, je ne peux pas installer les paquets mongodb car ils ont des dépendances non satisfaites.

Lorsque j'autorise jessie-backports, l'erreur de dépendances non satisfaites a disparu, mais je ne sais pas si je dois le faire et installer les packages jessie-backports en extension.

Comment installer mongodb 3.4 sur Debian Stretch?

Merci pour tout conseil.

Hamburml
la source
ils ont sorti 3.6 pour stretch
eri

Réponses:

16

L'erreur lorsque vous essayez d'utiliser les instructions de Debian 8 suggère de nombreuses dépendances manquantes, mais fonctionnera en fait si vous installez la seule dépendance manquante réelle ( libssl1.0.0). Pour référence, pour déterminer ce qui manquait, j'ai téléchargé le mongodbinaire et jeté un œil à 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 vous regardez ce qui est installé dans Debian 9, nous en avons juste des versions libssltrop nouvelles. Les bibliothèques libsslet libcryptosont toutes deux installées par le libsslpackage et il est à peu près autonome. Par conséquent, nous pouvons simplement récupérer le libssl1.0.0paquet Debian 8 et l'installer.

La version amd64 du paquet peut être trouvée ici (juste Google pour libssl1.0.0 Jesse et votre arch pour une autre version).

Pour installer ce package, téléchargez le fichier (dans mon cas c'était dans Téléchargements) puis installez-le avec 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) ...

Avec cela terminé, nous revérifions rapidement 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*

Succès! Maintenant, réessayons l'installation du package 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) ...

Enfin, assurons-nous que le service démarre et que nous pouvons nous connecter avec 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 

Et voilà: les packages Jesse fonctionnent sur Stretch. Je suis sûr qu'il y aura bientôt une sortie officielle qui rendra cela obsolète, mais en attendant, c'est une solution de contournement relativement indolore.

Adam C
la source
Merci pour l'astuce backports. J'étais en train package not foundde mongodb-orgcomprendre que quand j'ai compris que j'avais le mauvais bitume de Linux. J'ai moi-même une machine virtuelle 32 bits au lieu de 64 bits ... oups! Les instructions et binaires MongoDB sont pour 64 bits uniquement!
sumitkm
2
cela a été le cas depuis longtemps, 32 bits avait de sérieuses limitations (2 Go de données max), en particulier dans le moteur de stockage MMAP, pas sûr que WiredTiger l'ait jamais pris en charge
Adam C
3
l'a trouvé - abandonné la prise en charge de 32 bits avec la version 3.0: docs.mongodb.com/manual/release-notes/3.0-compatibility/…
Adam C
1
Merci pour cet Adam. Dans la dernière étape, j'utiliserais sudo systemctl start mongodpuisque SystemD est le système d'initialisation par défaut pour Debian depuis Jessie et servicen'est devenu qu'un script de compatibilité.
Rafa
3

Il semble que mongodb 3.4 n'ait pas encore de binaires pour l'étirement debian dans leur dépôt officiel apt. Votre meilleure approche peut être de construire à partir de la source de votre système.

Il y a des instructions spécifiques sur cette page: https://github.com/mongodb/mongo/wiki/Build-Mongodb-From-Source

Vous pouvez également essayer d'utiliser les packages Ubuntu pour Xenial, mais rien ne garantit que cela fonctionnera correctement, et je pense que la construction à partir des sources serait une meilleure idée.

Ivan G.
la source
J'ai essayé de le construire à partir des sources mais j'obtiens que SSLv2_method n'a pas été déclaré d'erreur depuis asio / ssl / impl / context.ipp. Des idées?
Hamburml
1

Je viens d'avoir ce problème (en utilisant debain 9).

Un peu de fouille a révélé que c'était dû au fait que l'ancienne version emballée par Debian ne pouvait pas être supprimée par le programme d'installation (j'essayais de mettre à niveau le paquet mongodb non officiel fourni par Debian vers les paquets mongodb-org officiels).

La solution était la suivante:

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

J'espère que cela fait gagner du temps à quelqu'un!

ricardo
la source
0

J'ai créé un référentiel Github pour faciliter la construction de la dernière version de MongoDB. Il va tout construire en interne au lieu de dépendre d'apt, y compris le service systemd.

Patrik Laszlo
la source
0

J'utilise Debian 9 Stretch

J'ai téléchargé cette version de MongoDB: Linux 64-bit legacy 64x

entrez la description de l'image ici

J'ai téléchargé dans mon dossier de bureau et l'ai renommé mongodb

Après cela, vous "devez" déplacer votre dossier renommé récent vers /opt/

mv mongodb /opt/

Vous pouvez maintenant accéder /opt/mongodb/binet exécuter une commande comme celle-ci:

./mongod --dbpath ./db/

Pour rendre la chose amusante, vous pouvez créer un lien symbolique, par exemple, mongodpour /usr/local/bin/, comme ça:

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

Maintenant, dans votre terminal, tapez la commande, de n'importe où:

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

Vous devez spécifier le --dbpath pour que le mongod fonctionne correctement.

Alex
la source