Bagaimana cara menginstal mongodb 3.4 di debian stretch (9)?

13

Saya ingin menginstal mongodb 3.4 pada debian stretch. Sayangnya paket stretch debian hanya mongodb 3.2 ( https://packages.debian.org/stretch/mongodb ).

Dokumen mongodb hanya menyebutkan debian 7 dan 8 ( https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/ ). Saat menggunakan perintah debian 8 saya tidak dapat menginstal paket mongodb karena mereka memiliki dependensi yang belum terpenuhi.

Ketika mengizinkan jessie-backports kesalahan dependensi yang tidak terpenuhi hilang tetapi saya tidak yakin apakah saya harus melakukan ini dan menginstal paket jessie-backports dalam peregangan.

Bagaimana Anda menginstal mongodb 3.4 pada debian stretch?

Terima kasih atas sarannya.

Hamburml
sumber
mereka merilis 3,6 untuk stretch
eri

Jawaban:

16

Kesalahan saat Anda mencoba menggunakan instruksi Debian 8 menunjukkan banyak dependensi yang hilang, tetapi pada kenyataannya akan berfungsi jika Anda menginstal dependensi tunggal yang sebenarnya hilang ( libssl1.0.0). Sebagai referensi, untuk mengetahui apa yang hilang, saya mengunduh mongodbiner dan melihat 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*

Jika Anda melihat apa yang diinstal di Debian 9, pada dasarnya kami hanya memiliki versi libsslyang terlalu baru. The libssldan libcryptoperpustakaan keduanya dipasang oleh libsslpaket dan itu cukup banyak mandiri. Karenanya, kita bisa mengambil libssl1.0.0paket Debian 8 dan menginstalnya.

Versi paket amd64 dapat ditemukan di sini (hanya Google untuk libssl1.0.0 Jesse dan lengkungan Anda untuk versi lain).

Untuk menginstal paket itu, unduh file (dalam kasus saya ini adalah Unduhan) dan kemudian instal dengan 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) ...

Dengan kelengkapan itu, kami dengan cepat memeriksa ulang 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*

Keberhasilan! Sekarang mari kita coba lagi instalasi paket 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) ...

Akhirnya, mari pastikan layanan dimulai dan kita dapat terhubung dengan 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 

Dan begitulah - paket Jesse bekerja pada Stretch. Saya yakin bahwa akan ada rilis resmi segera yang akan membuat ini usang, tetapi sementara ini ini merupakan solusi yang relatif tidak menyakitkan.

Adam C
sumber
Terima kasih atas trik backports. Aku mulai package not founduntuk mongodb-orgketika sadar atas saya saya memiliki bitiness salah Linux. Saya mendapat VM 32 bit bukannya 64 bit ... oops! Instruksi MongoDB dan binari hanya untuk 64 bit!
sumitkm
2
itu sudah terjadi sejak lama, 32 bit memiliki keterbatasan parah (data 2GB maks), terutama di mesin penyimpanan MMAP, tidak yakin WiredTiger pernah mendukungnya
Adam C
3
menemukannya - menjatuhkan dukungan untuk 32-bit dengan versi 3.0: docs.mongodb.com/manual/release-notes/3.0-compatibility/…
Adam C
1
Terima kasih untuk Adam ini. Pada langkah terakhir saya akan menggunakan sudo systemctl start mongodkarena SystemD adalah sistem init default untuk Debian sejak Jessie dan servicemenjadi hanya skrip kompatibilitas.
Rafa
3

Tampaknya mongodb 3.4 belum memiliki binari untuk debian stretch di repositori apt resmi mereka. Pendekatan terbaik Anda mungkin dibangun dari sumber untuk sistem Anda.

Ada instruksi khusus pada halaman ini: https://github.com/mongodb/mongo/wiki/Build-Mongodb-From-Source

Anda juga dapat mencoba menggunakan paket Ubuntu untuk Xenial, tetapi tidak ada jaminan bahwa ini akan berfungsi dengan baik, dan saya pikir membangun dari sumber akan menjadi ide yang lebih baik.

Ivan G.
sumber
Saya mencoba membangunnya dari sumber tetapi saya mendapatkan SSLv2_method belum menyatakan kesalahan dari asio / ssl / impl / context.ipp. Ada ide?
Hamburml
1

Saya baru saja mengalami masalah ini (meskipun menggunakan debain 9).

Sedikit penggalian mengungkapkan bahwa itu disebabkan oleh fakta bahwa versi paket debian yang lebih lama tidak dapat dihapus oleh installer (saya sedang mencoba untuk meningkatkan dari paket mongodb tidak resmi yang disediakan oleh Debian ke paket mongodb-org resmi).

Solusinya adalah sebagai berikut:

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

Semoga ini menghemat waktu seseorang!

Ricardo
sumber
0

Saya membuat repositori Github untuk membuatnya lebih mudah untuk membangun sendiri versi MongoDB terbaru. Ini akan membangun semuanya secara internal alih-alih bergantung pada apt, termasuk layanan systemd.

Patrik Laszlo
sumber
0

Saya menggunakan Debian 9 Stretch

Saya mengunduh versi MongoDB ini: Linux 64-bit legacy 64x

masukkan deskripsi gambar di sini

Saya mengunduh ke folder desktop saya, dan menamainya menjadi mongodb

Setelah itu, Anda "perlu" memindahkan folder berganti nama menjadi /opt/

mv mongodb /opt/

Sekarang Anda dapat mengakses /opt/mongodb/bindan menjalankan perintah seperti itu:

./mongod --dbpath ./db/

Untuk menjadikannya menyenangkan, Anda dapat membuat symlink, misalnya, mongoduntuk /usr/local/bin/, seperti itu:

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

Sekarang, di terminal Anda ketik perintah, dari mana saja:

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

Anda perlu menentukan --dbpath agar mongod berfungsi dengan benar.

Alex
sumber