问题描述
我正在Ubuntu 14.04机器上安装MongoDB,使用以下指令:https://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/
所以我跑:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
然后:
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
其次是:
sudo apt-get update
然后,我在更新结束时收到以下警告:
W: GPG error: http://repo.mongodb.org trusty/mongodb-org/3.2 Release: The following signatures were invalid: BADSIG D68FA50FEA312927 MongoDB 3.2 Release Signing Key
如果我忽略警告并尝试运行:
sudo apt-get install -y mongodb-org
我明白了:
WARNING: The following packages cannot be authenticated!
mongodb-org-shell mongodb-org-server mongodb-org-mongos mongodb-org-tools mongodb-org E: There are problems and -y was used without –force-yes
关于如何解决的任何想法?谢谢!
最佳解决办法
在一个命令中从Ubuntu密钥服务器更新所有过期的密钥:
sudo apt-key list | \
grep "expired: " | \
sed -ne 's|pub .*/\([^ ]*\) .*|\1|gp' | \
xargs -n1 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys
命令说明:
-
sudo apt-key list
– 列出系统中安装的所有密钥; -
grep "expired: "
– 仅保留带有过期密钥的行; -
sed -ne 's|pub .*/\([^ ]*\) .*|\1|gp'
– 提取密钥; -
xargs -n1 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys
– 通过找到过期密钥服务器更新Ubuntu密钥服务器的密钥。
次佳解决办法
听起来你需要重做MongoDB的安装步骤。首先,删除MongoDB的任何现有存储库文件。请执行以下操作。
$ sudo rm /etc/apt/sources.list.d/mongodb*.list
接下来,添加密钥:(没有密钥,存储库将不会加载)。
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
现在,创建一个新的MongoDB存储库列表文件:
$ echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
添加存储库详细信息后,我们需要更新软件包列表。
$ sudo apt-get update
现在安装MongoDB。
sudo apt install mongodb-org
希望这可以帮助 !
第三种解决办法
您不需要重新安装mongo软件包,只需更改密钥如下:
列出密钥以确认它已过期:
apt-key list | grep "expired:"
更换钥匙:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xd68fa50fea312927
数字0xd68fa50fea312927是当前有效的密钥ID(2019-10-09到期),因为您可以检查here。
第四种办法
似乎版本3.2.1已于2016年1月11日发布,此时包裹签名很糟糕。包裹签名前一天很好。
你可以添加–force-yes选项,或者等待mongodb团队看到的几个小时并修复问题。
那里已经有一张票:https://jira.mongodb.org/browse/SERVER-22144
第五种办法
我使用以下命令在我的ubuntu 16.04上安装MongoDB 3.2时也遇到了这个问题。以下解决方案是作为与MongoDB的v3.2安装相关的问题提供的
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
sudo apt-get update
运行上面的更新命令后,我发现了以下警告
W: GPG error: http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 Release: The following signatures were invalid: KEYEXPIRED 1507497109
W: The repository 'http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 Release' is not signed.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.
进一步调查使用以下命令列出所有键
sudo apt-key list
它显示当前密钥在2017-10-08过期
pub 4096R/EA312927 2015-10-09 [expired: 2017-10-08]
uid MongoDB 3.2 Release Signing Key <packaging@mongodb.com>
这也是有意义的MongoDB Current Stable Release现在(3.4.9)。
为了解决这个问题,我们先做一个小清理(可选)
-
我们删除旧密钥添加了sudo apt-key列表//列出所有密钥sudo apt-key del EA312927 //找到要删除的密钥的uid apt-key列表| grep Mongodb //验证是否已删除
-
现在我们删除/etc/apt/sources.list.d sudo rm /etc/apt/sources.list.d/mongodb*.list中添加的MongoDB repo。
-
现在我们使用以下命令安装最新的稳定版MongoDB(3.4.9)
导入Ubuntu软件包管理器使用的公钥
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
为mongoDB创建文件列表以获取当前存储库
echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-3.4.list
安装MongoDB
sudo apt-get update
sudo apt-get install mongodb-org
第六种办法
我有同样的问题,并通过使用tarball方法安装mongodb解决了它。有关详细信息,请参阅以下链接。
https://docs.mongodb.org/manual/tutorial/install-mongodb-on-linux/
在下面添加细节
-
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-i686-3.2.0.tgz
-
tar -zxvf mongodb-linux-i686-3.2.0.tgz
-
mkdir -p mongodb&& cp -R -n mongodb-linux-i686-3.2.0 /mongodb
-
export PATH = /bin:$ PATH
-
然后运行mongod(可能需要设置db路径)
第七种办法
在Ubuntu 16.04上安装MongoDB 4.0时,我也遇到了这个问题。所以我做了。
-
sudo rm /etc/apt/sources.list.d/mongodb*.list
– 删除MongoDB的所有现有文件 -
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E52529D4
– 添加密钥 -
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'
– 创建一个新的MongoDB存储库列表文件
现在,使用更新的存储库完成安装,然后安装MongoDB,启用mongod
服务并启动它,最后检查MongoDB版本:
sudo apt update
sudo apt install mongodb-org
systemctl enable mongod.service
systemctl start mongod.service
mongo --version