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的回答中执行行之前:
-
转到ubuntu密钥服务器查找实际密钥
-
搜索感兴趣的字符串(mongodb以防万一)并提交第一个表单(您不需要第二个表单) – 单击“
Search!
按键
- 在提供的搜索列表中寻找您的版本(在我的例子中,这里是3.4)
-
你可以在那里看到两行带键。 关注大多数实际日期。 第一个字符串是创建日期,而第二个字符串是日期有效到期
-
使用第5点中提到的行中的sig – 如果是图片,
A15703C6
-
继续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位置。