Ubuntu告诉我,当我不这样做时,我有包升级

我有一台服务器机器,我从未登录过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-upgradeapt-get -d -y dist-upgrade ,它们都告诉我没有什么可以安装的。 那么为什么登录信息仍然告诉我有12个软件包需要更新?

这是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中的逻辑,它决定没有理由运行/usr/lib/update-notifier/apt-check --human-readable基于/var/lib/update-notifier/updates-available和sources.list以及其他一些文件的时间戳。

我不确定实际的错误是什么,但是删除缓存的文件至少会将其重置为0更新,尽管上帝只知道在有可用更新时它是否会显示正确的数字。

我最近在Serverfault上回答了一个类似的问题:

ubuntu服务器:SSH横幅告诉更新包但没有更新

你正在谈论的那个横幅被称为MOTD(当日的消息)。 它似乎是一个可以通过删除/etc/motd.tail文件来解决的错误 。

检查/etc/motd.tail包含更新消息。 如果是,请删除它们。

如果只是登录消息(motd)告诉你包需要更新,那么可能只是update-motd还没有运行一段时间。 尝试运行update-motd ,然后再次登录以查看是否修复了它。 它应该重新生成/ etc / motd文件。

在几个系统上,我看到了不正确的包更新报告,但也有2行’Ubuntu 10.04.2 LTS’和’Ubuntu 10.04.1 LTS’,即使我在10.04.2。

正如Karl所说,/ etc / motd.tail包含旧文本,删除它完全解决了我的问题

我在10.04.2上遇到了同样的问题。

 # aptitude install update-motd Selecting previously deselected package update-motd. (Reading database ... 36453 files and directories currently installed.) Unpacking update-motd (from .../update-motd_3.5-0ubuntu1_all.deb) ... Removing any system startup links for /etc/init.d/update-motd ... Setting up update-motd (3.5-0ubuntu1) ... 

但是没有update-motd命令行工具的后记,我找不到任何关于pam_motd的内容。

删除/etc/motd使消息消失,但显然安全升级应该已经完成​​了。