最近,我在构建基于 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 的包装器)来做到这一点的干净方法是什么?
我明白了,至少在 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