我正在尝试从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
如何解决此问题。任何想法请!
答案 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上运行:
mongod:/usr/lib/x86_64-linux-gnu/libcurl.so.4:版本 找不到“ CURL_OPENSSL_3”(mongod必需)
要解决此问题,您需要使用以下命令来卸载“ libcurl4”依赖库
sudo apt-get删除libcurl4
然后需要安装较低的curl版本(例如“ libcurl3”),因为mongo希望在ubuntu版本“ 18.04”上安装它。
sudo apt-get install libcurl3
如果手动步骤失败,则可能需要使用“ sudo”在安装时派生数据和日志目录
sudo mongod --dbpath / var / lib / mongo --logpath /var/log/mongodb/mongod.log --fork
您现在可以运行“ mongo”命令以查看mongo shell运行。
至少对我有用。
答案 3 :(得分:1)
答案 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建议的那样,它对我有用