无法在Ubuntu 18.04 LTS上正确安装MongoDB。

45

我正在尝试在Ubuntu 18.04 LTS上安装mongodb,但出现以下错误:

您可能想要运行“apt --fix-broken install”以纠正这些问题。以下软件包存在未满足的依赖关系:mongodb-org: 依赖于 mongodb-org-server,但将不会安装依赖于mongodb-org-mongos,但将不会安装依赖于mongodb-org-tools,但将不会安装 E:未满足的依赖项。 尝试使用无软件包(或指定解决方案)'apt --fix-broken install'。

我相信这个问题已经在官网上有所说明,明确表示:

平台支持

MongoDB仅为64位LTS(长期支持)Ubuntu发布版本提供软件包;例如,14.04 LTS(trusty)和16.04 LTS(xenial)。有关更多信息,请参见受支持的平台。

这些软件包可能与其他Ubuntu版本兼容,但不受支持。

那么我应该如何在最新的Ubuntu 18.04 LTS上安装mongodb呢? 为了清晰起见,我列出了我纠正错误所做的事情:

我按照官网说明安装了mongodb。

1. sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
2. echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
3. sudo apt-get update
4. sudo apt-get install -y mongodb-org

现在我遇到了错误,提示:你可能需要运行“apt --fix-broken install”来纠正这些问题。以下软件包有未满足的依赖关系:

我尝试过,

apt --fix-broken install

它没能正常工作,我在某个地方得到了运行的线索

sudo apt -f install

还有错误返回。

在处理以下文件时遇到了错误: /var/cache/apt/archives/mongodb-org-server_4.0.0_amd64.deb /var/cache/apt/archives/mongodb-org-mongos_4.0.0_amd64.deb /var/cache/apt/archives/mongodb-org-tools_4.0.0_amd64.deb E: 子进程 /usr/bin/dpkg 返回错误代码(1)

我认为主要问题是版本不兼容。因此,我使用Ubuntu 18.04,应该如何安装mongodb,以便我可以无障碍工作。

17个回答

145

你需要先卸载MongoDB,可以使用以下命令:

sudo apt-get purge mongodb-org*

此后,通过以下命令安装mongodb:

sudo apt-get install mongodb

然后更新:

sudo apt-get update

你已经完成了 MongoDB 的安装。您可以使用以下命令进行检查:

mongo --version

安装已经完成,但是无法启动(无法连接到服务器127.0.0.1:27017)。 - Meloman
13
这是针对较旧版本的MongoDB。 - otong
1
这个可行!谢谢。我只想补充一点,如果有人使用不同于bash的shell,并且由于某种原因你的shell抛出了错误,那可能不是你的错。我当时是在ZSH中编写这些命令,但由于某种原因,第一步甚至没有被ZSH识别为存在mongodb-org*包 - 显然是有的,我已经检查过了。然后我切换到BASH,同样的命令完美地运行了。 - Saif Ul Islam
我们可以使用这个命令来安装Mongo v4.4吗? - Han Van Pham
1
这不安装mongo > v4。 - alper
显示剩余3条评论

25

编辑:已经过去了几年,不幸的是,最佳答案仍然将用户引向MongoDB的最新稳定版本。实际上,mongodb的最后一个可用软件包是3.6.3。

我不在那家公司工作了,但是我会指出:

https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-ubuntu/

这是安装最新稳定版本MongoDB的最佳方法。它包括添加必要的存储库和密钥以允许运行apt install mongodb-org的说明。有一个平台支持矩阵,可以帮助识别您可以在任何给定Linux OS版本上安装哪些版本的MongoDB。

只是想在这里发表一下意见。我是MongoDB Server Docs的高级技术作家。这篇文章之一就是关于“在Ubuntu 18.04上安装MongoDB”,并且这里有几个评论引用了mongodb软件包进行安装。Ubuntu提供的非官方mongodb软件包未经MongoDB维护。您应始终使用官方MongoDB mongodb-org软件包。此外,通过一些个人测试,如果安装了mongodb,则似乎会导致问题,如果尝试安装mongodb-org,则会增加麻烦。

在本地测试时遇到这个问题的几次尝试安装其中一个子软件包(即mongodb-org-server)通常会出现实际的错误(即缺少默认安装库中已删除的libcurl3)。在测试开发构建(撰写本文时为4.2 dev系列)时,这些问题可能更为常见。

要检查您在本地系统上安装了哪个软件包,请运行以下命令:

sudo apt list --installed | grep mongo

在安装了 mongodb 后,我尝试安装mongodb-org,以下是我的输出结果:

mongo-tools/bionic,now 3.6.3-0ubuntu1 amd64 [installed,auto-removable]
mongodb-org/bionic,now 4.0.5 amd64 [installed]
mongodb-org-shell/bionic,now 4.0.5 amd64 [installed,automatic]
mongodb-server-core/bionic,now 1:3.6.3-0ubuntu1 amd64 [installed,auto-removable]

所以你可以看到,我使用了两个包的混合体(还有一堆 dkpg 错误)。最终我使用了混合了 apt remove , apt autoremove, 和 apt purge 的方式来修复系统。


1
但我来到这里是因为在您的文档中找不到针对这个特定版本的Ubuntu(18)的答案。文档中提到了一个ulimit -n <value>命令,但它不起作用。使用sudo也无法识别该命令本身。我一直在寻找解决方案,最终编辑了几个不同的.conf文件。 - Naveed Hasan
当我尝试运行 sudo apt install mongodb-org 时,出现了 E: Unable to locate package mongodb-org 的错误。我该如何解决这个问题? - Rylan Schaeffer
对于遇到相同错误的其他人,我需要按照这里的说明进行操作:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/ - Rylan Schaeffer
请问您能否建议一个可行的安装方式? - themozel

12

谢谢,清除mongo*而不是mongodb-org*对我解决了问题。 - Tom

7
这是因为截至目前,MongoDB适用于Ubuntu 18.04的版本仅为开发版本(参见:MongoDB Distros)。
我刚刚按照以下步骤进行了安装:
添加相应的签名:
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4B7C549A058F8B6B  

添加支持的版本:

echo "deb [arch=amd64] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/development multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list

更新:
    sudo apt update

安装:

sudo apt install mongodb-org-unstable

如果您遇到“GPG错误”,请使用出现在错误消息中的密钥重复步骤1。您可能可以通过以下方式安装:

sudo apt install mongodb

但根据MongoDB的说法,不支持这种方式,并且很可能无法安装最新版本。

7

在Ubuntu 18.04上安装MongoDB并使用mongod命令的最简单方法。

  1. Update the packages list.

     $ sudo apt update
    
  2. Install the MongoDB.

     $ sudo apt install -y mongodb
    
  3. Check the service's status.

     $ sudo systemctl status mongodb
    

    3a. You should see

      mongodb.service - An object/document-oriented database
       Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor 
       preset:enabled)
       Active: active (running) since Sat 2019-03-11 10:45:01 UTC; 4min 13s ago
       Docs: man:mongod(1)
       Main PID: 2312 (mongod)
       Tasks: 23 (limit: 1153)
       CGroup: /system.slice/mongodb.service
             └─2312 /usr/bin/mongod --unixSocketPrefix=/run/mongodb --config
       /etc/mongodb.conf
    
  4. To allow access to MongoDB on its default port 27017

      $ sudo ufw allow 27017
    
  5. Check status

      $ sudo ufw status
    

5a. 您应该看到

     Status: active
     To                         Action      From
     --                         ------      ----
     27017                      ALLOW       Anywhere
     27017 (v6)                 ALLOW       Anywhere (v6)

5b. 如果返回值是inactive

     $ sudo ufw enable

     Output:
     Firewall is active and enabled on system startup.
  1. Check the / directory to see if there is a data/db directory, if not:

      $ sudo mkdir -p /data/db
    
  2. To run the mongod first you need stop mongodb:

      $ sudo systemctl stop mongodb
    
  3. Finally, you can run the mongod:

      $ sudo mongod
    

3

cd /etc/apt/sources.list.d

删除与mongodb相关的文件

sudo apt update

这对我解决了问题。


3

卸载并删除任何Mongo软件包。

$ sudo apt-get purge mongodb-org*

检查相关目录是否已删除

$ sudo rm -r /var/log/mongodb
$ sudo rm -r /var/lib/mongodb

重新检查是否还存在未自动删除的mongo软件包

$ sudo apt-get autoremove

配置您的目录

$ sudo dpkg --configure -a

强制安装所需的所有内容

$ sudo apt-get install -f

从官网安装:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/

最后重新启动Ubuntu并像之前一样检查Mongodb服务器的状态。


2
如果您需要手动在Ubuntu 18.04 LTS(Bionic)上安装MongoDB二进制文件,则需要从此link下载MongoDB.tgz文件。
1)将其下载到~/Downloads文件夹并将其移动到主目录,方法是键入mv Downloads/mongodb-linux-x86_64-ubuntu1804-4.0.4.tgz ~/ 2)然后通过键入tar -zxvf mongodb-linux-x86_64-ubuntu1804-4.0.4.tgz解压缩它,并将其放置在此处(主目录/home/)。不要将其移动出此处。
3)然后在/data/db位置创建一个目录,并授予该目录写权限。
sudo mkdir -p /data/db

sudo chmod -R 777 /data/db

4) 现在这是一个棘手的区域。通过输入 pwd(当前工作目录)确保你在主目录中。
pwd 

它将会显示。
/home/<your user name>

然后输入:

ls -al

该命令将显示主目录中所有隐藏文件并搜索。

~/.bashrc

5) 编辑 .bashrc 文件并写入以下内容:
export PATH=mongodb-linux-x86_64-ubuntu1804-4.0.4/bin:$PATH

并保存文件类型source ./bashrc

然后在终端中输入echo $PATH,它将显示~/mongodb-linux-x86_64-ubuntu1804-4.0.4/bin:/home/xenon/.nvm/versions/node/v10.15.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

6) 现在在终端中输入mongo --nodb,它将显示MongoDB shell version v4.0.4

从这里开始,您已经设置好了,继续享受mongodb安装。此安装方法有点复杂,但通过此方法,您可以轻松控制mongodb的版本并根据需要使用它。 enter image description here

7) 然后启动mongod

>sudo mkdir -p /var/log && sudo chmod -R 777 /var/log
>mongod --port 27017 --dbpath /data/db --logpath /var/log/local.log --fork
>mongo --port 27017

2

我曾经遇到过同样的问题,对我来说解决方案是清除缓存,但要带上 (*)。清除所有缓存,所以我这样做:

sudo apt-get purge mongo-tools*
sudo apt-get purge mongodb*

然后我按照文档中的步骤进行操作(实际版本为4.2.2),安装在Ubuntu 18.04上。(URL:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/

wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -

echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list

sudo apt-get update

sudo apt-get install -y mongodb-org

按照文档中的四个步骤,我最终在Ubuntu上安装了MongoDB社区版。我的问题在于有三个文件无法处理。

mongodb-org-server
mongodb-org-mongos
mongodb-org-tools

我希望它能帮助到一些人


1

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

我需要按照以下步骤在我的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 remove libcurl4

  2. 然后需要安装低版本的curl库(即“libcurl3”),因为mongo在Ubuntu版本“18.04”上需要它

    sudo apt-get install libcurl3

  3. 如果手动步骤失败,您可能需要使用“sudo”来fork数据和日志目录与安装

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

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

对我有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接