为什么此apt-key adv命令给出错误?

时间:2019-01-26 16:51:25

标签: docker

这是一个Dockerfile的片段,出现了我不理解的错误:

FROM dorowu/ubuntu-desktop-lxde-vnc
LABEL maintainer "bpinaya@wpi.edu"

# Adding keys for ROS
RUN sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
RUN apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

给出此结果

RUN apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
 ---> Running in 7bb30729ec87
Warning: apt-key output should not be parsed (stdout is not a terminal)
Executing: /tmp/apt-key-gpghome.HkofyyhjvI/gpg.1.sh --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
gpg: failed to start the dirmngr '/usr/bin/dirmngr': No such file or directory
gpg: connecting dirmngr at '/tmp/apt-key-gpghome.HkofyyhjvI/S.dirmngr' failed: No such file or directory
gpg: keyserver receive failed: No dirmngr
The command '/bin/sh -c apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116' returned a non-zero code: 2

2 个答案:

答案 0 :(得分:1)

根据该帖子here,您需要安装dirmngr。我还需要安装gnupg,以便在测试时将其在我的本地docker容器上工作。

我通过以下更改更新了您的Dockerfile代码:

FROM dorowu/ubuntu-desktop-lxde-vnc
LABEL maintainer "bpinaya@wpi.edu"

# Update
RUN apt-get update && \
  apt-get upgrade -y

# Install required packages
RUN apt-get install -y \
  dirmngr \
  gnupg

# Adding keys for ROS
RUN sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

RUN apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

这在最后一步给了我以下输出:

Step 6/6 : RUN apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
 ---> Running in a0cfb3588173
Warning: apt-key output should not be parsed (stdout is not a terminal)
Executing: /tmp/apt-key-gpghome.USze27holj/gpg.1.sh --keyserver hkp://pgp.mit.edu:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
gpg: key 5523BAEEB01FA116: public key "ROS Builder <rosbuild@ros.org>" imported
gpg: Total number processed: 1
gpg:               imported: 1

有时会报告以下错误:

gpg: keyserver receive failed: Cannot assign requested address

该错误似乎并不一致,因此可能是由于我自己的网络连接造成的。

答案 1 :(得分:0)

我想发表评论,但没有足够的声誉。请考虑我的答案作为@ brian-elliott答案的附录。 Dirmngr似乎有一些奇怪的默认设置来使用tor或一些非标准DNS。因此,请确保您有以下内容:

standard-resolver
keyserver keyserver.ubuntu.com
keyserver keys.gnupg.net

在您的〜/ .gnupg / dirmngr.conf