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 上实现 运行:
- 从以下 mongo DB 手册中获取手动安装步骤
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu-tarball/
- 下载.tgz,配置如下
Download MongoDB
- 请注意,当您安装 MongoDB 3.6 或更高版本时,它会附带 "libcurl4" 版本的 Curl 库,它在 ubuntu 18.04[=49 上存在一些兼容性问题=]
- 因此,当您尝试执行 "mongod" 命令时,您将最终得到以下输出:
mongod: /usr/lib/x86_64-linux-gnu/libcurl.so.4: version
`CURL_OPENSSL_3' not found (required by mongod)
修复该问题需要卸载"libcurl4"依赖库,使用如下命令
sudo apt-get 删除 libcurl4
然后需要安装较低的 curl lib 版本(即 "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"命令来查看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 对我来说效果很好。
我正在尝试从从 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 上实现 运行:
- 从以下 mongo DB 手册中获取手动安装步骤 https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu-tarball/
- 下载.tgz,配置如下 Download MongoDB
- 请注意,当您安装 MongoDB 3.6 或更高版本时,它会附带 "libcurl4" 版本的 Curl 库,它在 ubuntu 18.04[=49 上存在一些兼容性问题=]
- 因此,当您尝试执行 "mongod" 命令时,您将最终得到以下输出:
mongod: /usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by mongod)
修复该问题需要卸载"libcurl4"依赖库,使用如下命令
sudo apt-get 删除 libcurl4
然后需要安装较低的 curl lib 版本(即 "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"命令来查看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 对我来说效果很好。