MongoDB GPG – 无效签名

我在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错误: http ://repo.mongodb.org trusty / mongodb-org / 3.2发行:以下签名无效:BADSIG D68FA50FEA312927 MongoDB 3.2发行签名密钥

如果我忽略警告并尝试运行:

 sudo apt-get install -y mongodb-org 

我得到:

警告:下列软件包不能被authentication!
mongodb-org-shell mongodb-org-server mongodb-org-mongos mongodb-org-tools mongodb-org E:有问题,-y没有使用–force-yes

任何想法如何解决? 谢谢!

看来版本3.2.1已经在2016年1月11日发布了,而且从现在开始,套件签名是不好的。 套餐签名在前一天很好。

参考: https ://jira.mongodb.org/browse/SERVER/fixforversion/15908/ ? selectedTab = com.atlassian.jira.jira-projects-plugin:version-summary-panel

您可以添加–force-yes选项,或者等待mongodb小组查看并修复问题的几个小时。

那里已经有一张票: https : //jira.mongodb.org/browse/SERVER-22144

听起来你需要重做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 

希望这可以帮助 !

在一个命令中更新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 

命令解释:

  1. sudo apt-key list – 列出系统中安装的所有密钥;
  2. grep "expired: " – 只保留有过期密钥的行;
  3. sed -ne 's|pub .*/\([^ ]*\) .*|\1|gp' – 提取键;
  4. xargs -n1 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys – 通过找到过期的密钥从Ubuntu密钥服务器更新密钥。

资源

我有同样的问题,并通过tarball方法安装mongodb来解决它。 详情请参阅下面的链接。

https://docs.mongodb.org/manual/tutorial/install-mongodb-on-linux/

在下面添加细节

  1. curl -O https://fastdl.mongodb.org/linux/mongodb-linux-i686-3.2.0.tgz
  2. tar -zxvf mongodb-linux-i686-3.2.0.tgz
  3. mkdir -p mongodb && cp -R -n mongodb-linux-i686-3.2.0 / mongodb
  4. export PATH = / bin:$ PATH

  5. 然后运行mongod(可能需要设置db路径)

我在使用下面的命令在我的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),这也是有意义的。

要解决这个问题,我们首先做一个小清理(可选)

  1. 我们删除旧的密钥添加

    sudo apt-key list //列出所有密钥

    sudo apt-key del EA312927 //找到要删除的密钥的uid

    apt-key list | grep Mongodb //验证它是否被删除

  2. 现在我们删除/etc/apt/sources.list.d中添加的MongoDB repo

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

  3. 现在我们使用下面的命令安装最新的稳定版本的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 

您不需要重新安装mongo软件包,只需更改密钥,如下所示:

列出密钥以确认它已过期:

 apt-key list | grep "expired:" 

更换密钥:

 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xd68fa50fea312927 

数字0xd68fa50fea312927是当前有效的密钥ID(在2019年10月9日到期),你可以在这里查看 。

我有同样的问题,所以我做了:

root@skarabi:~# apt remove mongodb-org

然后:

root@skarabi:~# sudo rm /etc/apt/sources.list.d/mongodb*.list

之后:

root@skarabi:~# apt update