自二月初以来,我一直看到此类错误消息:
E: Unknown Error: '<class 'KeyError'>' ("The cache has no package named 'linux-headers-5.4.0-144-generic:amd64'")
apt
,,apt-cache
......aptitude
他们都没有发现所哀叹的文件存在问题apt-check
。
我的问题是,我们用它apt-check
来确定需要升级的机器数量,包括常规和安全修复。监控一直处于故障状态,直到我真正运行升级,我无法弄清楚问题出在哪里。
有没有人遇到过类似的问题,并且能够更好地弄清楚发生了什么并解决它们?
答案1
我还没有找到根本原因,但每小时都会收到大约 200 封来自 cron 的电子邮件,告诉我 apt-check 遇到了问题,这促使我找到了替代方案,并且很快 =}
在将指标提供给 Prometheus 的包装脚本中,我用apt-check
下面的代码替换了调用:
/usr/bin/unattended-upgrade --dry-run -d 2>/dev/null | /usr/bin/awk 'BEGIN{sec=0;up=0}/^Checking: / {if($0~/archive:[^ ]+-security/){sec++}else{up++}}END{printf "%s;%s",up+sec,sec}'
不,它并不漂亮......但它能完成工作并且不会发出噪音。
答案2
该问题的错误(由我提交的客户案例支持): https://bugs.launchpad.net/ubuntu/+source/update-notifier/+bug/2007311
问题的无意修复似乎是通过以下方式完成的: https://bugs.launchpad.net/ubuntu/+source/update-notifier/+bug/2008212
它还没有被推送到 Focal 或 Jammy,但我现在正在客户支持案例中推动这一点,因为我已经在 300 多台服务器上解决这个问题,这并不好玩。