关于apt和gpg的2个常见错误

    apt for Advanced Package Tool,是debian类系统的包管理系统,apt是很多工具的后端(back-end),例如apt-get,aptitude,synaptic。

 

    apt系统使用gpg为认证工具,每一个package source都包含Release文件和Release.gpg文件配合gpg和apt来构建secure apt。package source的维护者发布一个gpg公钥,通常是发布在叫做keyserver的服务器上,例如keyserver.ubuntu.com,apt-key工具用于管理这些公钥(叫做keyring),将这些keyring存放在/etc/apt/trustdb.gpg文件里,可以通过apt-key list命令来查看有现有哪些keyring。

 

    我曾经遇到的2个关于apt前端工具和gpg的错误列举如下:

  1. Couldn't access keyring: 'No such file or directory'
  2. The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5

    第1个错误提示不能访问keyring,具体原因是没有该文件,在知道了keyring是由apt-key通过trustdb.gpg文件来管理的这个知识后,我们就大体可以断定是trustdb.gpg文件不存在的缘故。这可能是你误删除了该文件了。去除这个错误提示很简单,可以通过apt-key list查看一下当前的keyring,apt-key会自动创建/etc/apt/trustdb.gpg文件(如果不存在的话),或者直接touch一个。

 

    第2个错误提示key 40976EAF437D05B5不存在,意思是说这个key在/etc/apt/trustdb.gpg文件中找不到,那么解决的方法就是添加该key到这个文件,我们可以通过gpg工具从某个keyserver来查找该key,然后通过apt-key工具将其添加到/etc/apt/trustdb.gpg文件中:

 

    gpg --keyserver keyserver.ubuntu.com  --recv 40976EAF437D05B5

    gpg --export --armor 437D05B5 | sudo apt-key add -

   

    第一行命令从keyserver.ubuntu.com recv该key,第二行命令将该key export给apt-key,然后add到/etc/apt/trustdb.gpg文件中。

 

    ps.关于keyserver,还可以直接登录这些服务器,上面一般都有页面可以直接搜索key和转换为二进制内容。

   

 

    参考资料:

  1. Debian Security Infrastructure
  2. man gpg
  3. man apt-key
  4. man apt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值