Apt-get在安装mongodb的16.04或18.04上失败


26

当我尝试使用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 <packaging@mongodb.com>" 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失败。有人知道从哪里获得正确的密钥吗?

Answers:


74

Ubuntu 16.04和MongoDB 4.0

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

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

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

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

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

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

使用存储库更新完成安装,然后安装:

sudo apt update
sudo apt install mongodb-org

启用mongod服务并启动它:

systemctl enable mongod.service
systemctl start mongod.service

检查您的mongodb版本:

~$ mongo --version
MongoDB shell version v4.0.5
git version: 3739429dd92b92d1b0ab120911a23d50bf03c412
OpenSSL version: OpenSSL 1.0.2g  1 Mar 2016
allocator: tcmalloc
modules: none
build environment:
    distmod: ubuntu1604
    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: enabled)
   Active: active (running) since Mon 2019-01-21 00:33:51 MST; 7s ago
     Docs: https://docs.mongodb.org/manual
 Main PID: 2906 (mongod)
   CGroup: /system.slice/mongod.service
           └─2906 /usr/bin/mongod --config /etc/mongod.conf

Ubuntu 18.04和MongoDB 4.0

MongoDB 4.0稳定显示,其中4.1暂时为预览。

首先,从以前的版本中删除MongoDB(如果已安装):

sudo apt remove --autoremove mongodb-org

删除任何mongodb回购列表文件:

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

希望这可以帮助!


1
谢谢你 获取正确的密钥是关键部分。
乔纳森

GPG:密钥服务器接收失败:服务器指示失败
马克西玛Alekz

@MáximaAlekz检查我的答案。
Tpojka '18

非常感谢@Terrance。你节省了我很多时间。
阿尼鲁德·撒蒂佩利

多谢了朋友!
Jovana

10

除了@Terrance的答案之外,这里还提供了找到合适的sig键的方法。在这种情况下,示例适用于mongodb,但可以类似地用于任何其他软件包。在执行@Terrance的答案行之前:

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

  2. 搜索感兴趣的字符串(以防万一,请输入mongodb)并提交第一个表单(您不需要第二个表单)-单击Search!按钮

在此处输入图片说明

  1. 在提供的搜索列表中查找您的版本(在本例中,本例中为3.4)

在此处输入图片说明

  1. 您可以在其中看到两行包含键的行。着眼于最实际的日期。第一个字符串是创建日期,而第二个字符串是到期日期。

  2. 使用第5点提到的行中的sig-如果从图片中 A15703C6

  3. 如果您需要像我一样安装软件包或升级,请继续使用Terrance的答案


1
谢谢。这节省了我很多时间!
akazuko

1

对我也没有任何帮助,所以我去了mogodb网站并按照以下说明从tarball安装:

安装依赖项:

sudo apt-get install libcurl3 openssl

从此页面下载压缩包

cd 到下载目录或文件所在的位置,然后将其解压缩:

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

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


您安装的版本不同于当时上面列出的版本,因此答案对您不起作用。此后,我已经更新了答案。对于每个版本,密钥都会更改,存储库也会更改。当新的稳定版本问世时,我将尽量保持其答案更新。
Terrance
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.