在Ubuntu 18.04中MongoDB Zip安装失败

时间:2018-06-24 04:23:12

标签: mongodb openssl libcurl ubuntu-18.04

我正在尝试从MongoDB网站(https://www.mongodb.com/download-center/enterprise/releases/development)下载的Zip文件夹中安装MongoDB

我正确配置了日志路径,数据路径,并尝试启动mongod并遇到以下相关性错误。

amran:~$ mongod
mongod: /usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by mongod)

libcurl.so.4在我的机器中存在

amran:~$ locate libcurl.so.4
/usr/lib/x86_64-linux-gnu/libcurl.so.4
/usr/lib/x86_64-linux-gnu/libcurl.so.4.5.0

如何解决此问题。任何想法请!

7 个答案:

答案 0 :(得分:6)

为了在Ubuntu 18.10中运行MongoDB 4.0,您必须做一些自定义操作。

sudo apt-get install libcurl3

可能在/ usr / lib / x86_64-linux-gnu /

中找到libcurl3文件

在家里建立一个LD_LIBRARY文件夹。

 cp /usr/lib/x86_64-linux-gnu/libcurl.so.4 /home/user/LD_LIBRARY
 mv /home/user/LD_LIBRARY/libcurl.so.4 /home/user/LD_LIBRARY/libcurl.so.3

通过以下方式建立libcurl3的链接:

ln -s libcurl.so.3 libcurl.so.4
echo "export LD_LIBRARY_PATH=~/LD_LIBRARY/:$LD_LIBRARY_PATH" >> ~/.bashrc
source ~/.bashrc

现在启动MongoDB,它将运行。

现在您还可以安装

sudo apt-get install libcurl4 php-curl

并使用所有需要php-curl和libcurl4的应用程序

答案 1 :(得分:3)

问题在于此二进制MongoDB发行版需要旧版本的libcurl。在其他答案中,系统是通过全局安装较旧版本的libcurl来修改的,我强烈建议不要这样做,因为它将卸载和/或破坏依赖于较新版本的其他任何软件。

代替下载较旧库的副本,提取所需的二进制文件,然后在运行mongod二进制文件时预加载它。这样,您就无需更改系统上的任何其他内容,并且作为额外的好处,您不需要root特权即可执行此操作。方法如下:

首先创建一个临时目录,下载deb软件包并解压缩文件:

me@server:~$ mkdir tmp
me@server:~$ cd tmp
me@server:~/tmp$ apt download libcurl3
Get:1 http://gb.archive.ubuntu.com/ubuntu bionic/universe amd64 libcurl3 amd64 7.58.0-2ubuntu2 [214 kB]
Fetched 214 kB in 0s (9,969 kB/s)
me@server:~/tmp$ ar x libcurl3_7.58.0-2ubuntu2_amd64.deb
me@server:~/tmp$ tar xf data.tar.xz

现在将库复制到您的mongod二进制文件所在的位置:

me@server:~/tmp$ cp usr/lib/x86_64-linux-gnu/libcurl.so.4.5.0 ~/mongodb/mongodb-linux-x86_64-debian92-4.2.2-39-g38e05a1/bin/

您可以为mongod制作包装器,以便它预加载所需的libcurl版本:

me@server:~/tmp$ cd ~/mongodb/mongodb-linux-x86_64-debian92-4.2.2-39-g38e05a1/bin/
me@server:~/mongodb/mongodb-linux-x86_64-debian92-4.2.2-39-g38e05a1/bin$ mv mongod mongod.real
me@server:~/mongodb/mongodb-linux-x86_64-debian92-4.2.2-39-g38e05a1/bin$ cat > mongod
#!/bin/sh

DIR="$(cd "$(dirname "$0")" && pwd)"
LD_PRELOAD=$DIR/libcurl.so.4.5.0 exec $DIR/mongod.bin $*
me@server:~/mongodb/mongodb-linux-x86_64-debian92-4.2.2-39-g38e05a1/bin$ chmod 755 mongod

现在您可以运行mongod,它将运行。重要的是,您无需对系统上已安装的软件包进行任何更改,也不需要使用sudo即可工作。

答案 2 :(得分:2)

对于Ubuntu 18.04版,最好手动安装MongoDB。

我花了将近3个小时来按照Mongo手册中的常规安装步骤来调整依赖关系,但没有任何效果。 最后,尝试了手动安装,它对我来说出奇的完美。

我需要执行以下步骤以使其在我的Ubuntu 18.04上运行:

  1. 以下Mongo DB手册中的轻松手册安装步骤 https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu-tarball/
  2. 使用以下配置下载.tgz Download MongoDB
  3. 请注意,当您安装MongoDB 3.6或更高版本时,它将附带“ libcurl4”版本的Curl库,并且在ubuntu 18.04上存在一些兼容性问题
  4. 由于此,当您尝试执行“ mongod”命令时,最终将得到以下输出:

mongod:/usr/lib/x86_64-linux-gnu/libcurl.so.4:版本 找不到“ CURL_OPENSSL_3”(mongod必需)

  1. 要解决此问题,您需要使用以下命令来卸载“ libcurl4”依赖库

    sudo apt-get删除libcurl4

  2. 然后需要安装较低的curl版本(例如“ libcurl3”),因为mongo希望在ubuntu版本“ 18.04”上安装它。

    sudo apt-get install libcurl3

  3. 如果手动步骤失败,则可能需要使用“ sudo”在安装时派生数据和日志目录

    sudo mongod --dbpath / var / lib / mongo --logpath /var/log/mongodb/mongod.log --fork

  4. 您现在可以运行“ mongo”命令以查看mongo shell运行。

至少对我有用。

答案 3 :(得分:1)

在您共享的downloads页面上,没有提到Ubuntu 18.04的mongodb版本。

您需要使用mongodb检查是否有与Ubuntu 18.04兼容的发行版。

答案 4 :(得分:0)

我遇到了这个问题(但是在Debian 10上),我认为我的.so文件被破坏了。由于我在使用的服务器上没有root用户访问权限,因此最终将libcurl.so.4从我的家用计算机(通过SCP)复制到一个新目录(如接受的答案中的LD_LIBRARY)并添加了对我的LD_LIBRARY_PATH来说,就像接受的答案一样。在服务器上运行mongod之前,我不得不使用另外两个文件(libcrypto.so.1.0.0和libssl.so.1.0.0)来完成此操作。

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

答案 5 :(得分:0)

我尝试了以下不同的选项:

选项 1:使用 Ubuntu-16 mongo 二进制文件(在选项 3 步骤 2 之前);如果我们对 libcurl3 没问题

1.  apt-get remove libcurl4
2.  apt-get install libcurl3
3.  able to start the daemon

选项 2:无效

1.  apt-get remove libcurl4
2.  apt-get install libcurl4
3.  /etc/init.d/mongo_db7020
/usr/bin/mongod: /usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by /usr/bin/mongod) 

选项 3:复制 mongodb 18 二进制文件有效

1.  apt-get remove libcurl4
2.  rsync -asvh mongoserver:/usr/bin/mongodb-linux-x86_64-ubuntu1804-4.0.4/bin/* /usr/bin/mongodb-linux-x86_64-ubuntu1604-4.0.4/bin
3.  apt-get install libcurl4
4.  able to start the daemon

选项 1 和 3 对我来说效果很好。

答案 6 :(得分:-1)

我刚刚安装了...

sudo apt-get install libcurl4 php-curl

像@bhawnesh dipu建议的那样,它对我有用