0

最近,我在构建基于 Ubuntu/Debian 的容器时遇到了这个错误:

Warning: apt-key output should not be parsed (stdout is not a terminal)
Executing: /tmp/apt-key-gpghome.jZsMrv3GZH/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
mgpg: cannot open '/dev/tty': No such device or address

当我调用 apt-key 命令时,例如:

apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF

我可以将 apt 与不受信任的选项一起使用,因此我根本不需要密钥,但这听起来是一个肮脏的解决方案。

直接使用 gpg 时,我可能可以使用 --no-tty 或 --batch 选项来修复它,但是使用 apt-key 命令(它是 pgp 的包装器)来做这件事的有点干净的方法是什么?

4

1 回答 1

0

我想我明白了,至少在 GPG 或 APT-KEY 被修复之前,我可以使用这个解决方法,它确实修改了 apt-key 脚本。

对于更高级的 apt-key 这将起作用,在 debian 上快速测试:

sed -i "s%{GPG_EXE}\")' --%{GPG_EXE}\")' --batch --%g" /usr/bin/apt-key

虽然对于基本的 apt-key 这可以工作(未经测试,因为我不记得我在哪里看到这个更简单的变体):

sed -i 's%GPG_CMD="gpg %GPG_CMD="gpg --batch %g' /usr/bin/apt-key

您需要写入 /usr/bin/apt-key 的权限,以便以 root 身份运行或使用sudo

于 2018-12-26T19:28:33.353 回答