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 обновлений.