Jak zainstalować mongodb 3.4 w debian stretch (9)?

13

Chcę zainstalować mongodb 3.4 na debian stretch. Niestety pakiety debian stretch to tylko mongodb 3.2 ( https://packages.debian.org/stretch/mongodb ).

Dokumenty mongodb wspominają tylko o debianie 7 i 8 ( https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/ ). Podczas używania komend debian 8 nie mogę instalować pakietów mongodb, ponieważ mają one niezaspokojone zależności.

Kiedy zezwalam na jessie-backports, zniknął błąd niezaspokojonych zależności, ale nie jestem pewien, czy powinienem to zrobić i zainstalować pakiety jessie-backports w trybie stretch.

Jak zainstalowałbyś mongodb 3.4 na Debian stretch?

Dziękuję za wszelkie porady.

Hamburml
źródło
wydali 3.6 dla stretch
eri

Odpowiedzi:

16

Błąd podczas próby użycia instrukcji Debiana 8 sugeruje wiele brakujących zależności, ale w rzeczywistości zadziała, jeśli zainstalujesz pojedynczą brakującą zależność ( libssl1.0.0). Dla porównania, aby dowiedzieć się, czego brakuje, pobrałem plik mongodbinarny i spojrzałem na 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*

Jeśli spojrzysz na to, co jest zainstalowane w Debianie 9, w zasadzie mamy tylko te wersje, libsslktóre są zbyt nowe. Zarówno biblioteki, jak libssli libcryptobiblioteki są instalowane przez libsslpakiet i są one prawie niezależne. Dlatego możemy po prostu pobrać libssl1.0.0pakiet Debian 8 i zainstalować go.

Wersja amd64 pakietu można znaleźć tutaj (tylko Google dla libssl1.0.0 Jesse i twój arch dla innej wersji).

Aby zainstalować ten pakiet, pobierz plik (w moim przypadku było to Pobranie), a następnie zainstaluj go za pomocą 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) ...

Po zakończeniu tej czynności szybko ponownie sprawdzamy 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*

Sukces! Teraz spróbujmy ponownie zainstalować pakiet 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) ...

Na koniec upewnijmy się, że usługa się uruchomiła i możemy połączyć się z powłoką:

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 

I masz to - pakiety Jesse pracujące na Stretch. Jestem pewien, że wkrótce pojawi się oficjalne wydanie, które sprawi, że stanie się to przestarzałe, ale w międzyczasie jest to stosunkowo bezbolesne obejście.

Adam C.
źródło
Dzięki za sztuczkę backports. I był już package not founddla mongodb-orggdy zaświtało mi, że źle bitiness Linuksa. Mam 32-bitową maszynę wirtualną zamiast 64-bitowej ... ups! Instrukcje i pliki binarne MongoDB są przeznaczone tylko dla wersji 64-bitowej!
sumitkm
2
tak było od dłuższego czasu, 32-bitowy miał poważne ograniczenia (maks. 2 GB danych), szczególnie w silniku pamięci MMAP, nie jestem pewien, czy WiredTiger kiedykolwiek go obsługiwał
Adam C
3
znalazłem - zrezygnowałem z obsługi wersji 32-bitowej w wersji 3.0: docs.mongodb.com/manual/release-notes/3.0-compatibility/…
Adam C
1
Dzięki za tego Adama. W ostatnim kroku skorzystałbym, sudo systemctl start mongodponieważ SystemD jest domyślnym systemem dla Debiana od czasów Jessie i servicestał się tylko skryptem kompatybilności.
Rafa
3

Wygląda na to, że mongodb 3.4 nie ma jeszcze plików binarnych dla debian stretch w swoim oficjalnym repozytorium apt. Najlepszym rozwiązaniem może być budowanie ze źródła dla systemu.

Na tej stronie znajdują się szczegółowe instrukcje: https://github.com/mongodb/mongo/wiki/Build-Mongodb-From-Source

Możesz także spróbować użyć pakietów Ubuntu dla Xenial, ale nie ma gwarancji, że to zadziała poprawnie i myślę, że budowanie ze źródła byłoby lepszym pomysłem.

Ivan G.
źródło
Próbowałem zbudować go ze źródła, ale dostaję, że SSLv2_method nie został zadeklarowany jako błąd z asio / ssl / impl / context.ipp. Jakieś pomysły?
Hamburml
1

Właśnie miałem ten problem (chociaż korzystałem z debain 9).

Trochę kopania ujawniło, że było to spowodowane faktem, że starsza wersja pakietu Debiana nie mogła zostać usunięta przez instalatora (próbowałem uaktualnić z nieoficjalnego pakietu mongodb dostarczonego przez Debiana do oficjalnych pakietów mongodb-org).

Rozwiązanie było następujące:

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

Mam nadzieję, że to komuś oszczędza trochę czasu!

Ricardo
źródło
0

Utworzyłem repozytorium Github, aby ułatwić samodzielne tworzenie najnowszej wersji MongoDB. Zbuduje wszystko wewnętrznie zamiast w zależności od apt, w tym usługi systemowej.

Patrik Laszlo
źródło
0

Używam Debian 9 Stretch

Pobrałem tę wersję MongoDB: Linux 64-bit starszej wersji 64x

wprowadź opis zdjęcia tutaj

Pobrałem do folderu na pulpicie i zmieniłem nazwę na mongodb

Następnie „musisz” przenieść swój najnowszy folder o zmienionej nazwie do /opt/

mv mongodb /opt/

Teraz możesz uzyskać dostęp /opt/mongodb/bini wykonać takie polecenie:

./mongod --dbpath ./db/

Aby dobra zabawa, można utworzyć dowiązania, na przykład, mongodaby /usr/local/bin/, tak jak:

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

Teraz w swoim terminalu wpisz polecenie z dowolnego miejsca:

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

Musisz podać --dbpath , aby mongod działał poprawnie.

Alex
źródło