Wie installiere ich mongodb 3.4 in debian stretch (9)?

13

Ich möchte mongodb 3.4 auf debian stretch installieren. Leider sind Debian-Stretch-Pakete nur Mongodb 3.2 ( https://packages.debian.org/stretch/mongodb ).

Die Mongodb-Dokumentation erwähnt nur Debian 7 und 8 ( https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/ ). Bei der Verwendung von Debian 8-Befehlen kann ich keine Mongodb-Pakete installieren, da diese unerfüllte Abhängigkeiten haben.

Wenn Sie jessie-backports zulassen, ist der Fehler mit den nicht erfüllten Abhängigkeiten weg, aber ich bin mir nicht sicher, ob ich dies tun und die jessie-backports-Pakete in stretch installieren soll.

Wie würden Sie Mongodb 3.4 auf Debian Stretch installieren?

Danke für jeden Rat.

Hamburml
quelle
sie veröffentlichten 3.6 für stretch
eri am

Antworten:

16

Der Fehler, wenn Sie versuchen, die Debian 8-Anweisungen zu verwenden, deutet auf viele fehlende Abhängigkeiten hin, funktioniert jedoch tatsächlich, wenn Sie die einzige tatsächlich fehlende Abhängigkeit ( libssl1.0.0) installieren . Zum Nachschlagen, um herauszufinden, was fehlte, habe ich die mongodBinärdatei heruntergeladen und mir Folgendes angesehen 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*

Wenn Sie sich ansehen, was in Debian 9 installiert ist, haben wir im Grunde nur libsslzu neue Versionen davon . Die libsslund libcrypto-Bibliotheken werden beide vom libsslPaket installiert und sind ziemlich eigenständig. Daher können wir uns einfach das Debian 8- libssl1.0.0Paket schnappen und es installieren.

Die amd64-Version des Pakets finden Sie hier (nur Google für libssl1.0.0 Jesse und Ihr Arch für eine andere Version).

Um dieses Paket zu installieren, laden Sie die Datei herunter (in meinem Fall unter Downloads) und installieren Sie sie dann mit 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) ...

Danach überprüfen wir noch einmal 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*

Erfolg! Versuchen wir nun die Paketinstallation von 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) ...

Lassen Sie uns abschließend sicherstellen, dass der Dienst gestartet wird und wir eine Verbindung mit einer Shell herstellen können:

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 

Und da haben Sie es - Jesse-Pakete, die an Stretch arbeiten. Ich bin mir sicher, dass es bald eine offizielle Veröffentlichung geben wird, die dies überflüssig macht, aber in der Zwischenzeit ist dies eine relativ schmerzlose Lösung.

Adam C
quelle
Danke für den Backports-Trick. Ich war immer package not foundfür , mongodb-orgwenn es bei mir dämmerte ich die falsche bitiness von Linux hatte. Habe mir eine 32-Bit-VM anstelle von 64-Bit besorgt ... Hoppla! MongoDB-Anweisungen und Binärdateien sind nur für 64-Bit!
Sumitkm
2
Dies war lange Zeit der Fall, 32-Bit hatte schwerwiegende Einschränkungen (max. 2 GB Daten), insbesondere in der MMAP-Speicher-Engine, nicht sicher, ob WiredTiger dies jemals unterstützt
Adam C
3
gefunden - Unterstützung für 32-Bit mit Version 3.0 eingestellt: docs.mongodb.com/manual/release-notes/3.0-compatibility/…
Adam C
1
Danke für diesen Adam. Im letzten Schritt würde ich verwenden, sudo systemctl start mongodda SystemD das Standard-Init-System für Debian seit Jessie ist und servicenur ein Kompatibilitätsskript wurde.
Rafa
3

Es scheint, dass Mongodb 3.4 noch keine Binärdateien für Debian Stretch in seinem offiziellen Apt-Repository hat. Ihr bester Ansatz könnte darin bestehen, aus dem Quellcode für Ihr System zu erstellen.

Auf dieser Seite finden Sie spezifische Anweisungen: https://github.com/mongodb/mongo/wiki/Build-Mongodb-From-Source

Sie könnten auch versuchen, die Ubuntu-Pakete für Xenial zu verwenden, aber es gibt keine Garantie dafür, dass dies ordnungsgemäß funktioniert, und ich halte es für eine bessere Idee, aus dem Quellcode zu erstellen.

Ivan G.
quelle
Ich habe versucht, es aus dem Quellcode zu erstellen, aber SSLv2_method wurde nicht als Fehler aus asio / ssl / impl / context.ipp deklariert. Irgendwelche Ideen?
Hamburml
1

Ich hatte gerade dieses Problem (obwohl ich Debain 9 benutze).

Ein bisschen Graben ergab, dass es an der Tatsache lag, dass die ältere, von Debian gepackte Version vom Installer nicht entfernt werden konnte (ich habe versucht, ein Upgrade von dem von Debian bereitgestellten inoffiziellen Mongodb-Paket auf die offiziellen Mongodb-org-Pakete durchzuführen).

Die Lösung war die folgende:

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

Hoffe das spart jemand etwas Zeit!

Ricardo
quelle
0

Ich habe ein Github-Repository erstellt , um es einfach zu machen, die neueste Version von MongoDB-Dingen selbst zu erstellen. Es wird alles intern erstellt, anstatt von apt abhängig zu sein, einschließlich des systemd-Dienstes.

Patrik Laszlo
quelle
0

Ich verwende Debian 9 Stretch

Ich habe diese Version von MongoDB heruntergeladen: Linux 64-Bit Legacy 64x

Bildbeschreibung hier eingeben

Ich habe in meinen Desktop-Ordner heruntergeladen und ihn in umbenannt mongodb

Danach müssen Sie Ihren zuletzt umbenannten Ordner "verschieben" /opt/

mv mongodb /opt/

Jetzt können Sie auf /opt/mongodb/bineinen Befehl wie diesen zugreifen und ihn ausführen:

./mongod --dbpath ./db/

Um die Sache Spaß zu machen, könnten Sie einen symbolischen Link, zum Beispiel erstellen, mongodzu /usr/local/bin/, wie folgt aus:

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

Geben Sie nun in Ihrem Terminal den Befehl von überall ein:

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

Sie müssen --dbpath angeben , damit der Mongod ordnungsgemäß funktioniert.

Alex
quelle