MongoDB 无法在 CentOS 6.7 上安装

MongoDB does not install on CentOS 6.7

我是 Windows 人。当我需要使用基于Linux的OS时,我总是选择Ubuntu。但是,这次他们没有给我任何选择。

我试图从这个 link of mongodb site 安装 MongoDB。我创建了存储库文件,然后尝试安装它,但收到此错误消息:

Error: Package: mongodb-org-tools-3.2.1-1.amzn1.x86_64 (mongodb-org-3.2)
       Requires: libstdc++.so.6(CXXABI_1.3.5)(64bit)
Error: Package: mongodb-org-mongos-3.2.1-1.amzn1.x86_64 (mongodb-org-3.2)
       Requires: libstdc++.so.6(GLIBCXX_3.4.14)(64bit)
Error: Package: mongodb-org-shell-3.2.1-1.amzn1.x86_64 (mongodb-org-3.2)
       Requires: libstdc++.so.6(GLIBCXX_3.4.14)(64bit)
Error: Package: mongodb-org-server-3.2.1-1.amzn1.x86_64 (mongodb-org-3.2)
       Requires: libstdc++.so.6(CXXABI_1.3.5)(64bit)
Error: Package: mongodb-org-server-3.2.1-1.amzn1.x86_64 (mongodb-org-3.2)
       Requires: libstdc++.so.6(GLIBCXX_3.4.15)(64bit)
Error: Package: mongodb-org-shell-3.2.1-1.amzn1.x86_64 (mongodb-org-3.2)
       Requires: libstdc++.so.6(GLIBCXX_3.4.15)(64bit)

根据这条消息,我以为我失踪了 libstdc++.so.6。所以我有 运行 这个命令来安装它:

 yum install libstdc++.so.6

我收到这条消息:

Package libstdc++-4.4.7-16.el6.i686 already installed and latest version

这让人很沮丧。为什么会这样?

看起来罪魁祸首是 glibc 你能试试吗

yum list glibc

并查看版本是否符合 mongo 的预期。欢迎来到依赖地狱:)

您有点搞砸了存储库定义。要么您实际上使用 运行 CentOS,在这种情况下,您错误地为 MongoDB 的 AmazonLinux 软件包定义了存储库。这是更有可能的情况,因为我可以使用配置错误的存储库重现您的问题。

但是,您有可能在 Amazon运行Linux 上定义了 CentOS 存储库。

如果您确定自己确实在使用 CentOS

问题是您输入了错误的存储库。当使用正确的 repo 时,MongoDB 按预期安装和 运行s。但是RPM名称不同,如下图:

很可能,你输入了错误的 repo 定义,如下所示:

因此,您需要做的是找到定义 Amazon Linux 存储库的位置,并将其替换为正确的存储库:

$ grep -l amazon -R /etc/yum.repos.d/*

这里的问题是可能定义了多个存储库。检查 grep 命令返回的文件,并删除相应的存储库定义。然后,添加 correct repository definition,截至撰写本文时为

[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=0
enabled=1

如果您在亚马逊上Linux

误解

不得不说

AmazonLinux != CentOS

它们很接近(都基于 RHEL),但不完全相同。具体来说,某些软件包版本可能不同。用于为 AmazonLinux 编译 MongoDB 的软件包版本记录在 RPM 中,该文档是软件包与系统

之间的某种契约

I, MongoDB, promise to run properly on a system which has these packages in the specified version.

CentOS 无法履行的合约。

解决方案

简直follow the installation instructions for MongoDB on AmazonLinux.