问题描述
我有一台服务器机器,我从未登录到 X 显示,仅通过 ssh 登录。最近我登录了,它告诉我我有
12 packages can be updated.
6 updates are security updates.
我实际上已经知道这一点,因为我在它和所有其他服务器上运行 munin。所以无论如何,我执行了 “sudo aptitude” 并安装了所有更新,然后重新启动。几天后,munin 告诉我需要升级另一个软件包,所以我登录了,但登录消息显示:
12 packages can be updated.
6 updates are security updates.
我进入 aptitude 并安装了一个更新。 Ubuntu 仍然告诉我有 12 个软件包需要更新。穆宁告诉我没有。我尝试了 aptitude -d -y dist-upgrade
和 apt-get -d -y dist-upgrade
,它们都告诉我没有什么可安装的。那么为什么登录信息仍然告诉我我有 12 个软件包需要更新?
最佳方法
它是一个 bug in initscripts ,在 Natty 中修复,它将 motd
的当前状态复制到 /etc/motd.tail
。 motd
是在启动时动态生成的,但 motd.tail
是静态的(允许系统管理员为所有用户放置一些固定信息)。
删除 motd.tail
将暂时解决该问题,但更好的解决方案是创建一个空的 motd.tail
。如果该文件不存在,则在升级 initscripts
时可能会再次(错误地)创建该文件。
创建一个空的 motd.tail
sudo touch /etc/motd.tail
次佳方法
问题似乎出在 /usr/lib/update-notifier/update-motd-updates-available
中的逻辑,该逻辑决定没有理由根据 /var/lib/update-notifier/updates-available
、sources.list 和其他一些文件上的时间戳来运行 /usr/lib/update-notifier/apt-check --human-readable
。
我不确定实际的错误是什么,但是删除缓存文件至少将其重置为 0 个更新,尽管上帝只知道当有可用更新时它是否会显示正确的数字。
第三种方法
我最近在 Serverfault 上回答了类似的问题:
ubuntu server: SSH banner telling to update packages but nothing to update
您所说的横幅称为 MOTD(每日消息)。看起来是a bug,通过删除/etc/motd.tail
文件可以是work-arounded。