如何在Debian Stretch(9)中安装mongodb 3.4?


13

我想在debian Stretch上安装mongodb 3.4。不幸的是,debian Stretch软件包仅是mongodb 3.2(https://packages.debian.org/stretch/mongodb)。

mongodb文档仅提及debian 7和8(https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/)。使用debian 8命令时,我无法安装mongodb软件包,因为它们具有未满足的依赖性。

当允许jessie-backports时,未满足的依赖关系错误消失了,但是我不确定是否应该这样做并拉伸安装jessie-backports软件包。

您将如何在Debian Stretch上安装mongodb 3.4?

感谢您的任何建议。


他们释放了3.6的弹力
eri

Answers:


16

当您尝试使用Debian 8指令时出现错误,表明存在许多缺少的依赖关系,但实际上,如果您安装了一个实际的缺少的依赖关系(libssl1.0.0),它将起作用。作为参考,要找出缺少的内容,我下载了mongod二进制文件并查看了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*

如果您看一下Debian 9中安装了什么,基本上我们只是发现它们的版本libssl太新了。在libssllibcrypto库都是由安装libssl包,它是非常独立的。因此,我们可以抓取Debian 8 libssl1.0.0软件包并进行安装。

您可以在此处找到该软件包的amd64版本(对于libssl1.0.0 Jesse,仅是Google,而对于另一个版本,则是您的arch)。

要安装该软件包,请下载文件(在我的情况下为“下载”),然后使用进行安装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) ...

完成后,我们将快速重新检查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*

成功!现在,让我们重试以下软件包的安装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) ...

最后,让我们确保该服务已启动,并且可以连接一个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 

一切就在这里-Jesse软件包在Stretch上工作。我确信很快就会有正式发布,这将使它过时,但是与此同时,这是一个相对轻松的解决方法。


感谢您的反向移植技巧。我得到package not foundmongodb-org当我忽然闪过我的Linux的错误bitiness。给自己一个32位的VM,而不是64位的...糟糕!MongoDB指令和二进制文件仅适用于64位!
sumitkm '17

2
长期以来一直如此,32位有严格的限制(最大2GB数据),尤其是在MMAP存储引擎中,不确定WiredTiger是否曾经支持过它
Adam C


1
谢谢亚当。在最后一步中,我将使用sudo systemctl start mongodSystemD,因为SystemD是自Jessie以来Debian的默认初始化系统,并且service仅是兼容性脚本。
拉法


3

似乎mongodb 3.4在其官方apt仓库中还没有Debian Stretch的二进制文件。最好的方法可能是从源代码构建系统。

此页面上有特定说明:https : //github.com/mongodb/mongo/wiki/Build-Mongodb-From-Source

您也可以尝试将Xenial的Ubuntu软件包使用,但不能保证它可以正常工作,我认为从源代码进行构建将是一个更好的主意。


我试图从源代码构建它,但是我没有从asio / ssl / impl / context.ipp声明SSLv2_method错误。有任何想法吗?
Hamburml

1

我只是遇到了这个问题(尽管使用了debain 9)。

一点挖掘表明,这是由于较旧的debian打包版本无法由安装程序删除的缘故(我正试图从Debian提供的非官方mongodb软件包升级到正式的mongodb-org软件包)。

解决方案如下:

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

希望这可以节省一些时间!




0

我正在使用Debian 9 Stretch

我下载了以下版本的MongoDB:Linux 64位旧版64x

在此处输入图片说明

我下载到我的桌​​面文件夹,并将其重命名为 mongodb

之后,您“需要”将最近重命名的文件夹移动到 /opt/

mv mongodb /opt/

现在,您可以访问/opt/mongodb/bin并执行如下命令:

./mongod --dbpath ./db/

为了使事情变得有趣,您可以创建一个符号链接,例如mongod/usr/local/bin/,如下所示:

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

现在,在终端中的任意位置键入命令:

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

您需要指定--dbpath才能使mongod正常工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.