Ubuntu говорит мне, что у меня есть пакеты для обновления, когда я не

У меня есть сервер, на котором я никогда не захожу на дисплей X, только через ssh. Недавно я вошел в систему, и он сказал мне, что у меня было

12 packages can be updated.
6 updates are security updates.

Я действительно уже знал это, потому что я запускаю munin на нем и на всех других моих серверах. Так или иначе, я сделал "sudo aptitude" и установил все обновления, затем перезагрузил компьютер. Несколько дней спустя Мунин сказал мне, что мне нужно обновить другой пакет, поэтому я вошел в систему, но в сообщении для входа было сказано:

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 пакетов для обновления?

8 ответов

Решение

Это ошибка в 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 Server: SSH-баннер, указывающий обновить пакеты, но ничего не обновлять

Тот баннер, о котором вы говорите, называется MOTD (Message Of The Day). Похоже, это ошибка, которую можно устранить, удалив /etc/motd.tail файл.

Если это просто сообщение для входа в систему (motd), в котором говорится, что пакеты нуждаются в обновлении, то это может быть update-motd давно не бегал Попробуйте запустить update-motd и затем снова войдите в систему, чтобы увидеть, исправит ли это. Он должен восстановить файл /etc/motd.

Проверить, если /etc/motd.tail содержит сообщения об обновлении. Если да, удалите их.

В некоторых системах я видел неправильные отчеты об обновлениях пакетов, но также две строки: "Ubuntu 10.04.2 LTS" и "Ubuntu 10.04.1 LTS", хотя я был 10.04.2.

Как сказал Карл, /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 заставил сообщение исчезнуть, но очевидно, что безопасное обновление уже должно было это сделать.

У меня возникла та же проблема после обновления с 18.04 по 20.04. Решением было просто запустить скрипт обновления motd с флагом Force:

      /usr/lib/update-notifier/update-motd-updates-available --force

Это обновило информацию о motd и теперь показывает 0 обновлений.

Другие вопросы по тегам