Не удается обновить 20.04 KeyError: “В кэше нет пакета с именем ‘ubuntu-minimal'”

Вопрос или проблема

Я пытаюсь обновить старый сервер с 20.04 до 22.04. Но когда я запускаю sudo do-release-upgrade, у меня возникает следующая ошибка

KeyError: "Кэш не содержит пакет с именем 'ubuntu-minimal'" 

Это полная ошибка

Произошла фатальная ошибка 

Пожалуйста, сообщите об этом как о баге и включите файлы 
/var/log/dist-upgrade/main.log и /var/log/dist-upgrade/apt.log в 
ваш отчет. Обновление было прервано. 
Ваш оригинальный sources.list был сохранен в 
/etc/apt/sources.list.distUpgrade. 

Traceback (последний вызов последний): 

Файл "/usr/lib/python3/dist-packages/apt/cache.py", строка 299, в 
__getitem__ 
rawpkg = self._cache[key] 

KeyError: 'ubuntu-minimal' 


При обработке вышеуказанного исключения возникло другое исключение: 


Traceback (последний вызов последний): 

Файл "/tmp/ubuntu-release-upgrader-w3ptvu69/jammy", строка 8, в 
<module> 
sys.exit(main()) 

Файл 
"/tmp/ubuntu-release-upgrader-w3ptvu69/DistUpgrade/DistUpgradeMain.py", 
строка 241, в main 
if app.run(): 

Файл 
"/tmp/ubuntu-release-upgrader-w3ptvu69/DistUpgrade/DistUpgradeController.py", 
строка 2042, в run 
return self.fullUpgrade() 

Файл 
"/tmp/ubuntu-release-upgrader-w3ptvu69/DistUpgrade/DistUpgradeController.py", 
строка 1913, в fullUpgrade 
if not self.cache.anyVersionDownloadable(self.cache[pkg]): 

Файл "/usr/lib/python3/dist-packages/apt/cache.py", строка 301, в 
__getitem__ 
raise KeyError('Кэш не содержит пакет с именем %r' % key) 

KeyError: "Кэш не содержит пакет с именем 'ubuntu-minimal'" 

Если я запущу apt show ubuntu-minimal перед обновлением, то вижу, что он существует. Но если я запущу его после неудачного обновления, он внезапно исчезает. Поэтому я думаю, что в файле sources.list есть ошибка в процессе обновления.

Правка: Хорошо, я думаю, что я становлюсь ближе к решению. Похоже, что это отключает все мои источники, так как они от hetzner? Мне нужно использовать другой зеркальный сервер, чтобы иметь возможность обновиться?!

Это после того, как я пытался обновить

# deb https://mirror.hetzner.com/ubuntu/packages focal-backports main restricted universe multiverse # отключено при обновлении до jammy
# deb-src https://mirror.hetzner.com/ubuntu/packages focal-backports main restricted universe multiverse


# deb https://mirror.hetzner.com/ubuntu/security focal-security main restricted # отключено при обновлении до jammy
# deb-src https://mirror.hetzner.com/ubuntu/security focal-security main restricted
# deb https://mirror.hetzner.com/ubuntu/security focal-security universe # отключено при обновлении до jammy
# deb-src https://mirror.hetzner.com/ubuntu/security focal-security universe
# deb https://mirror.hetzner.com/ubuntu/security focal-security multiverse # отключено при обновлении до jammy
# deb-src https://mirror.hetzner.com/ubuntu/security focal-security multiverse
deb http://archive.ubuntu.com/ubuntu jammy universe

Это может не быть полным ответом, но это было слишком длинно для комментария.

do-release-upgrade отключит все неофициальные репозитории во время обновления.

Я бы не рекомендовал обновляться до новой версии, когда используете образ ОС в облаке.

Лучше переработать вашу инстанцию, установив ваши приложения на новой и свежей установке более новой версии Ubuntu.

Есть много причин для этого, но с другой стороны, вот несколько из них:

  • Если обновление не удастся, у вас не будет возможности его отменить, что может привести к поломке вашего сервера и, в худшем случае, сделать его недоступным. (Это не специфично для Ubuntu, а скорее общий момент.)
  • Если ваше приложение не поддерживается должным образом в новой версии, то вы можете не иметь возможности получить новую установку с прежней версией ОС, так как ваш провайдер хостинга мог удалить эту опцию.
    Если же вы используете новую инсталляцию, ваш старый сервер все еще работает, и вы можете вернуть все свои настройки и использовать старую установку, пока не исправите несовместимости в вашем приложении.
  • do-release-upgrade не имеет должной поддержки на пользовательских установках. Поскольку Hetzner использует свои репозитории вместо официального зеркала, вы столкнетесь с теми же проблемами, с которыми уже сталкиваетесь, так как они будут отключены во время обновления.

Я настоятельно рекомендую не следовать этому пути, но вы можете обновить ваш список источников, чтобы использовать официальные репозитории Ubuntu, а затем выполнить обновление. Однако это может серьезно повредить ваш сервер, так как Hetzner мог изменить некоторые репозитории для работы с их собственной настройкой.

Ответ или решение

Ошибка при обновлении сервера Ubuntu 20.04 до 22.04: KeyError "Кэш не содержит пакета ‘ubuntu-minimal’"

При попытке обновить сервер Ubuntu с версии 20.04 до 22.04 вы столкнулись с ошибкой KeyError: "Кэш не содержит пакета 'ubuntu-minimal'". Это может быть связано с неправильной конфигурацией источников пакетов или использованием нестандартного зеркала.

Почему возникает ошибка?

  1. Кэш пакетов: Ошибка указывает, что система ожидала найти пакет ubuntu-minimal, но не смогла его обнаружить в кэше. Это может произойти, если вы используете внешние или нестандартные репозитории, которые не содержат необходимых пакетов для новой версии.

  2. Отключение сторонних репозиториев: При запуске команды do-release-upgrade установщик автоматически отключает все сторонние репозитории, чтобы предотвратить конфликты. Если у вас есть критические зависимости на сторонних репозиториях, это может привести к ошибкам. В вашем случае видно, что репозитории от Hetzner были отключены.

Решения и рекомендации

  1. Использование официальных репозиториев: Попробуйте заменить источники в вашем файле /etc/apt/sources.list на официальные репозитории Ubuntu. Это может выглядеть так:

    deb http://archive.ubuntu.com/ubuntu/ jammy main restricted universe multiverse
    deb http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted universe multiverse
    deb http://archive.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse

    После этого выполните обновление кэша:

    sudo apt update
  2. Проверка наличия пакета: После обновления кэша вы можете проверить наличие пакета ubuntu-minimal:

    apt show ubuntu-minimal

    Если он доступен, вы можете снова попробовать запустить обновление:

    sudo do-release-upgrade
  3. Обновление версии: Если ошибки все еще возникают, учитывайте возможность обновления сервера до последнего LTS через промежуточные версии, например, сначала до 21.04 или 21.10, а затем до 22.04.

  4. Альтернативные подходы: Как альтернативу, существует мнение, что для серверов, размещенных в облаке, лучше создать новую инстанцию на более новой версии и перенести ваши приложения и данные. Это снизит риск неполадок и обеспечит безопасный откат, если что-то пойдет не так.

Почему это важно

Обновление операционной системы — это критически важный процесс, который может затронуть работу серверов и приложений. Неправильное обновление может привести к сбоям и недоступности сервисов. Убедитесь, что вы заранее создали резервные копии всех важных данных и документов.

Соблюдение этих рекомендаций поможет избежать распространенных ошибок и сделать процесс обновления более безопасным и эффективным. Если вы не уверены в своих действиях, рекомендуется проконсультироваться с опытным системным администратором или специалистом по IT.

Оцените материал
Добавить комментарий

Капча загружается...