Apt-get在16.04安装mongodb时失败

当我尝试使用https://docs.mongodb.com/getting-started/shell/tutorial/install-mongodb-on-ubuntu/上的说明在16.04安装mongodb时,我在安装步骤中得到以下结果:

 jonathan@poseidon:~$ sudo apt-get install mongodb-org Reading package lists... Done Building dependency tree Reading state information... Done Package mongodb-org is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source E: Package 'mongodb-org' has no installation candidate 

我使用Wireshark检查了HTTP流量,发现唯一的流量是列表的HTTP GET和HTTP 304响应,这表明问题出在我的本地配置文件中。 我的sources.list.d文件包含以下条目:

 mongodb-org-3.4.list 

如何继续解决此问题需要做什么?

编辑:我试图在VirtualBox下的16.04的新安装上再次执行此操作。 我检索了密钥,创建了列表文件,并使用以下结果进行了sudo apt update

 jonathan@Ubuntu-16:~$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6 [sudo] password for jonathan: Executing: /tmp/tmp.uWYpRUWfjK/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6 gpg: requesting key A15703C6 from hkp server keyserver.ubuntu.com gpg: key A15703C6: public key "MongoDB 3.4 Release Signing Key " imported gpg: Total number processed: 1 gpg: imported: 1 (RSA: 1) jonathan@Ubuntu-16:~$ echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse jonathan@Ubuntu-16:~$ sudo apt update Ign:1 http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 InRelease Get:2 http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 Release [3 462 B] Hit:3 http://mx.archive.ubuntu.com/ubuntu xenial InRelease Get:4 http://security.ubuntu.com/ubuntu xenial-security InRelease [94.5 kB] Get:5 http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 Release.gpg [801 B] Get:6 http://mx.archive.ubuntu.com/ubuntu xenial-updates InRelease [95.7 kB] Ign:5 http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 Release.gpg Get:7 http://mx.archive.ubuntu.com/ubuntu xenial-backports InRelease [92.2 kB] Reading package lists... Done W: GPG error: http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY D68FA50FEA312927 E: The repository 'http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 Release' is not signed. N: Updating from such a repository can't be done securely, and is therefore disabled by default. N: See apt-secure(8) manpage for repository creation and user configuration details. jonathan@Ubuntu-16:~$ 

如您所见,检索到的密钥是Mongodb 3.4,而不是Mongodb 3.2,这解释了apt更新中的GPG失败。 谁知道在哪里得到正确的钥匙?

注意:这些说明适用于MongoDB 3.2。


让我们重做MongoDB的安装步骤。

首先,删除MongoDB的任何现有存储库文件。

 sudo rm /etc/apt/sources.list.d/mongodb*.list 

接下来,添加密钥:( 没有密钥,存储库将不会加载

 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927 

现在,创建一个新的MongoDB存储库列表文件:

 sudo bash -c 'echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" > /etc/apt/sources.list.d/mongodb-org-3.2.list' 

通过更新存储库完成安装,然后安装:

 sudo apt update sudo apt install mongodb-org 

Ubuntu 18.04和MongoDB 4.0

MongoDB 4.0显示为稳定,其中4.1目前不稳定。

首先,如果已安装,请从之前删除MongoDB:

 sudo apt remove mongodb-org 

删除所有mongodb repo列表文件:

 sudo rm /etc/apt/sources.list.d/mongodb*.list sudo apt update 

现在,添加新密钥:

 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E52529D4 

添加新存储库:

 sudo bash -c 'echo "deb [arch=amd64] http://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" > /etc/apt/sources.list.d/mongodb-org-4.0.list' 

安装MongoDB

 sudo apt update sudo apt install mongodb-org 

启用并启动mongod服务器服务:

 systemctl enable mongod.service systemctl start mongod.service 

检查你的安装:

 ~$ mongo --version MongoDB shell version v4.0.3 git version: 7ea530946fa7880364d88c8d8b6026bbc9ffa48c OpenSSL version: OpenSSL 1.1.0g 2 Nov 2017 allocator: tcmalloc modules: none build environment: distmod: ubuntu1804 distarch: x86_64 target_arch: x86_64 

您还可以检查您的服务是否已启动:

 ~$ systemctl status mongod.service ● mongod.service - MongoDB Database Server Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: e Active: active (running) since Sun 2018-10-07 12:33:46 MDT; 2min 34s ago Docs: https://docs.mongodb.org/manual Main PID: 5573 (mongod) CGroup: /system.slice/mongod.service └─5573 /usr/bin/mongod --config /etc/mongod.conf 

希望这可以帮助!

除了@Terrance的回答,这里是你如何找到合适的sig密钥。 在这种情况下,示例适用于mongodb,但同样可以用于任何其他包。 在从@Terrance的回答中执行行之前:

  1. 转到ubuntu密钥服务器查找实际密钥

  2. 搜索感兴趣的字符串(mongodb以防万一)并提交第一个表单(您不需要第二个表单) – 单击“ Search! 按键

在此处输入图像描述

  1. 在提供的搜索列表中寻找您的版本(在我的例子中,这里是3.4)

在此处输入图像描述

  1. 你可以在那里看到两行带键。 关注大多数实际日期。 第一个字符串是创建日期,而第二个字符串是日期有效到期

  2. 使用第5点中提到的行中的sig – 如果是图片, A15703C6

  3. 继续Terrance的回答,你需要像我一样安装包或升级

也没有什么对我有用 ,所以我去了mogodb网站并按照这些说明从tarball安装:

安装依赖项:

 sudo apt-get install libcurl3 openssl 

从此页面下载tarball

cd到Downloads目录或文件去的任何地方,然后解压缩:

 tar -zxvf mongodb-linux-*-4.0.1.tgz 

二进制文件位于提取的结构的bin目录中。 您可以将此目录添加到PATH或将文件复制到/usr/local/bin或其他PATH位置。