В течение последней недели или около того я получаю вышеуказанное сообщение, когда позволяю автообновлению работать из пользовательского интерфейса. В сообщении далее говорится: "Это требует установки пакетов из неаутентифицированных источников". Я читал, что рекомендуется apt-upgrade
. Но я не нашел никаких объяснений, почему это предполагаемое решение.
Я хотел бы понять процесс выпуска автоматических обновлений, в отношении того, почему это требуется прямо apt-upgrade
сейчас, прежде чем я таким образом коснусь моей в остальном очень стабильной системы. Я не припомню обновлений, требующих этого для моей системы за последние несколько лет.
Ubuntu 14.04 LTS.
Спасибо!
решение1
Чтобы понять, почему это происходит, нужно сначала понять, как работает стандартный apt (то есть apt без каких-либо установленных приоритетов). Допустим, вы хотите запустить обновление с помощью apt upgrade
(я предполагаю, что именно это вы имеете в виду под apt-upgrade, поскольку я не могу найти никакой информации о apt-upgrade
): во-первых, apt проверит локальные версии всего установленного программного обеспечения с удаленными версиями в репозитории и выяснит, нужно ли вообще обновлять пакеты. Для демонстрации давайте создадим гипотетический сценарий, в котором 1 пакет, sayhello
, необходимо обновить.
Вот воображаемый список изменений:
sayhello 1.1 now depends on libhello (>= 1.0) to print "hello."
Теперь представьте, что в вашем sources.list указано два источника: один — стандартные репозитории Ubuntu, а другой — Jim's amazing taco repo
.
Репозиторий Джима содержит следующие 3 пакета:
jimplayer 2.5 (No depends)
jimsbetterhello 1.0 (Depends on libhello (>= 2.0))
libhello 2.0 (No depends)
Вы использовали этот репозиторий только для установки jimplayer некоторое время назад, но позже Джим, похоже, решил добавить jimsbetterhello в репозиторий. А вот тут-то и начинается самое интересное...
Репозитории Ubuntu по-прежнему используют libhello 1.5 из соображений совместимости (поскольку некоторые пакеты пока не работают в новой версии libhello)
Теперь, когда apt переходит к обновлению sayhello
, он сталкивается с дилеммой. Есть 2 версии, которые libhello
он может установить! Какую из них он должен выбрать? Ну, по умолчанию apt выберет последнюю версию пакета, который doesn't conflict with other currently installed packages.
Теперь, обычно этот процесс прозрачен для пользователя, но если вы не добавили ключи GPG для стороннего репозитория, или ключи изменились, или что-то еще, даже если вы установили sayhello
из репозиториев Ubuntu по умолчанию, libhello 2.0 будет ненадежным пакетом, и apt предупредит вас об этом. Это всего лишь одна из многих различных вариаций того, почему apt может предупреждать вас об этом. Это также может быть связано с отсутствием пакетов, доступных только в добавленном вами стороннем репозитории. Лучшим решением является установка более высокого приоритета для репозиториев по умолчанию, а также удаление любых ненужных сторонних репозиториев без их ключей, добавленных в доверенную цепочку ключей.