无法验证签名,因为公钥不可用。

我在尝试使用基于Ubuntu镜像的Docker容器时遇到了问题。
在尝试运行RUN apt-get update命令时,我遇到了以下错误:
W: GPG error: http://ppa.launchpad.net/webupd8team/java/ubuntu trusty InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY C2518248EEA14886
E: The repository 'http://ppa.launchpad.net/webupd8team/java/ubuntu trusty InRelease' is not signed.

但是当我尝试添加key时:
RUN apt-key adv --keyserver http://keyserver.ubuntu.com:80 --recv-keys C2518248EEA14886

我遇到了以下错误:
E: gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation

尝试通过RUN apt-get install -y gnupg1安装gnupg | gnupg1 | gnupg2时,出现以下错误。
E: Package 'gnupg1' has no installation candidate

这是我的Dockerfile,以供参考:
FROM ubuntu:latest

RUN apt-get install -y gnupg1

RUN apt-key adv --keyserver http://keyserver.ubuntu.com:80 --recv-keys C2518248EEA14886

RUN apt-get update && apt-get install -y \
    gradle \
    oracle-java8-installer \
    oracle-java8-set-default \
    unzip \
    wget \
&& rm -rf /var/lib/apt/lists/*

所以如果我理解正确的话,我需要更新apt-get来安装gnupg(或者其他变体),我需要更新key chain,但是除非我更新apt-get,否则我无法做到这一点。
那么有没有什么技巧或解决方法来解决这个循环依赖呢?还是我做错了什么?
我对Ubuntu和Docker非常陌生,也许我漏掉了一些显而易见的东西。

请将dpkg -l | grep gnupg的输出添加到您的问题中。 - Pilot6
应安装gnupggnupg2 - Pilot6
@Pilot6,你能帮我一下吗?我似乎无法在Dockerfile中添加命令后获得输出。我应该在哪里添加这行代码? - Abbas
@Pilot6 我尝试安装了所有三个 gnupg 的变体,但都没有成功。 - Abbas
你在终端中运行这个命令。我对Dockerfile一无所知。 - Pilot6
我可能应该提到,我正在尝试从Windows主机构建镜像。 - Abbas
运行 sudo apt update。你不知道的原因,你删除了所有的列表。 - Pilot6
1个回答

ppa:webupd8team/java已经停止使用。所以无法从那里安装任何东西。

从软件源中删除该PPA。

如果您没有其他问题,我认为没有必要采取其他步骤。


可能超出了这个问题的范围,但我从另一张图片(一张旧的图片)复制了dockerfile中的代码行。不过,如果ppa已经停用了,那么我该如何在docker容器中安装Java 8呢?因为我需要它。 - Abbas
你可以搜索如何在Ubuntu上安装Oracle Java。我不知道什么是Docker容器。 - Pilot6