我尝试让 Ubuntu 16.04 (xenial) 的编译器高于 gcc/gpp-5。
我将这些行添加到 /etc/apt/sources.list
deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial main
deb-src http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial main
deb http://ppa.launchpad.net/jonathonf/gcc/ubuntu xenial main
deb-src http://ppa.launchpad.net/jonathonf/gcc/ubuntu xenial main
之后运行“apt update”时,我得到了这个:
Err:9 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial InRelease
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 1E9377A2BA9EF27F
Err:16 http://ppa.launchpad.net/jonathonf/gcc/ubuntu xenial InRelease
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 8CF63AD3F06FC659
然后我尝试添加键:
# apt-key adv --keyserver keyserver.ubuntu.com --recv-key 1E9377A2BA9EF27F
Executing: /tmp/tmp.hQqulW3vSQ/gpg.1.sh --keyserver
keyserver.ubuntu.com
--recv-key
1E9377A2BA9EF27F
> gpg: requesting key BA9EF27F from hkp server keyserver.ubuntu.com
gpgkeys: key 1E9377A2BA9EF27F not found on keyserver
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0
gpg: keyserver communications error: key not found
gpg: keyserver communications error: bad public key
gpg: keyserver receive failed: bad public key
# apt-key adv --keyserver keyserver.ubuntu.com --recv-key 8CF63AD3F06FC659
Executing: /tmp/tmp.9sbMVJgRDb/gpg.1.sh --keyserver
keyserver.ubuntu.com
--recv-key
8CF63AD3F06FC659
gpg: requesting key F06FC659 from hkp server keyserver.ubuntu.com
gpgkeys: key 8CF63AD3F06FC659 not found on keyserver
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0
gpg: keyserver communications error: key not found
gpg: keyserver communications error: bad public key
gpg: keyserver receive failed: bad public key
如何简单地为该平台获取一组更新的编译器?
我发现在防火墙后面很难实现这样的目标。标准食谱不起作用,甚至“sudo -E”对我来说都失败了。而且我目前不知道如何改进 apt-* 工具集的调试打印。
(该解决方案的开发部分基于 N0rbert 和我在他最初提案中的对话)
对问题的理解发展到发现“gpg”访问是有问题/悬空操作的地步。用户“nobar”的评论对获得最终线索最有帮助:
查看那里讨论的全尺寸主题:https ://stackoverflow.com/questions/21338721/gpg-no-valid-openpgp-data-found
现在做一个工作来解决这里的主题中的问题......
转到http://keyserver.ubuntu.com/ - 对于每个缺少的密钥(BA9EF27F / F06FC659),请执行以下操作:
为每个下载的文件以 root 身份运行以下命令:
当上述操作完成两次(每个键一次)然后运行它以检查它是否有效:
除了其他几行之外,结果还应包含类似以下行的内容:
最后的操作是安装您选择的额外 gcc 版本:
这对我来说终于成功了。所有项目均从 amd64 存储库版本中的http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu获得。如果我想在另一个 PPA 上设置更高的优先级,我想我需要交换 sources.list 文件中的行。
现在检查已安装的 gcc 二进制文件的版本返回以下文本:
现在检查已安装的 g++ 二进制文件的版本返回以下文本:
更新: 这些命令(截至目前)显然使用 Jonathon PPA:
目前该命令导致此版本: