MongoDB Zip 安装在 Ubuntu 18.04 中失败

MongoDB Zip Installation Failed in 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

如何解决这个问题。请有任何想法!

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

您需要检查 mongodb 是否有与 Ubuntu 18.04 兼容的版本。

为了 运行 MongoDB 4.0 在 Ubuntu 18.10.

中,您必须做一些自定义的事情
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 的 link 通过:

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

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

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

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

而是下载旧库的副本,提取所需的二进制文件,并在 运行 加载 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 "[=12=]")" && 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 来工作。

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

根据 Mongo 手册,我花了将近 3 个小时通过常规安装步骤调整依赖项,但没有任何效果。 最后,我尝试了手动安装,令人惊讶的是它对我来说完美无缺。

我需要通过以下步骤才能在我的 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[=49 上存在一些兼容性问题=]
  4. 因此,当您尝试执行 "mongod" 命令时,您将最终得到以下输出:

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

  1. 修复该问题需要卸载"libcurl4"依赖库,使用如下命令

    sudo apt-get 删除 libcurl4

  2. 然后需要安装较低的 curl lib 版本(即 "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"命令来查看mongoshell运行ning。

至少对我有用。

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

Option1:使用 Ubuntu-16 mongo 二进制文件(在 option3 步骤 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 对我来说效果很好。