Вопрос или проблема
Я хочу обновиться с Ubuntu 22.04 LTS до 24.04 LTS. Однако, при выполнении sudo do-release-upgrade
или sudo do-release-upgrade --allow-third-party
, я всегда получаю следующую ошибку:
Не удалось вычислить обновление
Произошла неразрешимая проблема при вычислении обновления.
Вероятной причиной этого является:
* Неофициальные пакеты программного обеспечения, не предоставляемые Ubuntu
Пожалуйста, используйте инструмент 'ppa-purge' из пакета ppa-purge,
чтобы удалить программное обеспечение из Launchpad PPA и попробуйте
снова выполнить обновление.
Что мне делать с ppa-purge
? Я просто хочу обновиться и нахожу это чрезвычайно раздражающим, что это не работает сразу.
ll /etc/apt/sources.list.d
выдает
deadsnakes-ubuntu-ppa-jammy.list
deadsnakes-ubuntu-ppa-jammy.list.distUpgrade
deadsnakes-ubuntu-ppa-jammy.list.save
docker.list
docker.list.distUpgrade
docker.list.save
google-chrome.list
google-chrome.list.distUpgrade
google-chrome.list.save
linux_clients_seafile_com_seadrive_deb_jammy.list
linux_clients_seafile_com_seadrive_deb_jammy.list.distUpgrade
linux_clients_seafile_com_seadrive_deb_jammy.list.save
linux_clients_seafile_com_seafile_deb_jammy.list
linux_clients_seafile_com_seafile_deb_jammy.list.distUpgrade
linux_clients_seafile_com_seafile_deb_jammy.list.save
mattermost_stable.list
mattermost_stable.list.distUpgrade
mattermost_stable.list.save
mono-official-stable.list
mono-official-stable.list.distUpgrade
mono-official-stable.list.save
obsproject-ubuntu-obs-studio-jammy.list
obsproject-ubuntu-obs-studio-jammy.list.distUpgrade
obsproject-ubuntu-obs-studio-jammy.list.save
teams.list
teams.list.distUpgrade
teams.list.save
teleport.list
teleport.list.distUpgrade
teleport.list.save
zotero.list
zotero.list.distUpgrade
zotero.list.save
Как удалить их все? Он всегда говорит “Не удалось найти список пакетов для PPA”:
X:~$ sudo ppa-purge ppa:deadsnakes-ubuntu-ppa-jammy
Обновление списков пакетов
PPA, который должен быть удален: ppa:deadsnakes-ubuntu-ppa-jammy ppa:deadsnakes-ubuntu-ppa-jammy
Предупреждение: Не удалось найти список пакетов для PPA: ppa:deadsnakes-ubuntu-ppa-jammy ppa:deadsnakes-ubuntu-ppa-jammy
X:~$ sudo ppa-purge ppa:deadsnakes
Обновление списков пакетов
PPA, который должен быть удален: ppa:deadsnakes ppa:deadsnakes
Предупреждение: Не удалось найти список пакетов для PPA: ppa:deadsnakes ppa:deadsnakes
X:~$ sudo ppa-purge ppa:deadsnakes/ubuntu
Обновление списков пакетов
PPA, который должен быть удален: deadsnakes ubuntu
Предупреждение: Не удалось найти список пакетов для PPA: deadsnakes ubuntu
X:~$ sudo ppa-purge ppa:deadsnakes/ubuntu/ppa
Обновление списков пакетов
PPA, который должен быть удален: deadsnakes/ubuntu ppa
Предупреждение: Не удалось найти список пакетов для PPA: deadsnakes/ubuntu ppa
Звездочка не помогает, к сожалению:
$ sudo ppa-purge ppa:*
[sudo] пароль для X:
Обновление списков пакетов
PPA, который должен быть удален: ppa:* ppa:*
Предупреждение: Не удалось найти список пакетов для PPA: ppa:* ppa:*
В моем случае, хотя я получил то же предупреждение, что и вы, мне вообще не нужно было использовать команду ppa-purge
. (Но у меня другие пакеты, чем у вас. Я приходил с Ubuntu Studio 23.10 с кучей специальных аудиопакетов)
Далее в предупреждении было указано просмотреть больше деталей в /var/log/dist-upgrade/{date}/
, и в частности apt.log
и main.log
Я запустил tail -n 300 main.log
и смог увидеть некоторые ошибки, где не удавалось найти замещающие пакеты для обновления, например:
2024-08-26 13:20:37,221 DEBUG Поиск замены для linux-headers-6.5.0-35-lowlatency
2024-08-26 13:20:37,221 DEBUG Не удалось найти замену для linux-headers-6.5.0-35-lowlatency
2024-08-26 13:20:37,221 DEBUG Поиск замены для linux-headers-6.5.0-41-lowlatency
2024-08-26 13:20:37,221 DEBUG Не удалось найти замену для linux-headers-6.5.0-41-lowlatency
2024-08-26 13:20:37,222 DEBUG Поиск замены для linux-headers-6.5.0-42-lowlatency
2024-08-26 13:20:37,222 DEBUG Не удалось найти замену для linux-headers-6.5.0-42-lowlatency
2024-08-26 13:20:37,222 DEBUG Поиск замены для linux-image-6.5.0-35-lowlatency
2024-08-26 13:20:37,222 DEBUG Не удалось найти замену для linux-image-6.5.0-35-lowlatency
2024-08-26 13:20:37,222 DEBUG Поиск замены для linux-image-6.5.0-41-lowlatency
2024-08-26 13:20:37,222 DEBUG Не удалось найти замену для linux-image-6.5.0-41-lowlatency
2024-08-26 13:20:37,222 DEBUG Поиск замены для linux-image-6.5.0-42-lowlatency
2024-08-26 13:20:37,222 DEBUG Не удалось найти замену для linux-image-6.5.0-42-lowlatency
2024-08-26 13:20:37,222 DEBUG Поиск замены для linux-lowlatency-headers-6.5.0-35
2024-08-26 13:20:37,222 DEBUG Не удалось найти замену для linux-lowlatency-headers-6.5.0-35
2024-08-26 13:20:37,263 DEBUG Поиск замены для wine-staging
2024-08-26 13:20:37,263 DEBUG Не удалось найти замену для wine-staging
2024-08-26 13:20:37,263 DEBUG Поиск замены для wine-staging-amd64
2024-08-26 13:20:37,263 DEBUG Не удалось найти замену для wine-staging-amd64
2024-08-26 13:20:37,263 DEBUG Поиск замены для wine-staging-i386:i386
2024-08-26 13:20:37,263 DEBUG Не удалось найти замену для wine-staging-i386:i386
2024-08-26 13:20:37,263 DEBUG Поиск замены для winehq-staging
2024-08-26 13:20:37,263 DEBUG Не удалось найти замену для winehq-staging
Таким образом, я удалил основные пакеты, которые, по-видимому, вызывали проблемы:
sudo apt remove linux-headers-lowlatency
sudo apt remove wine-staging
*Примечание: пакеты, которые нужно удалить, будут, конечно, отличаться от моих, так что не запускайте эти команды!
И затем я попробовал снова выполнить обновление, и на этот раз оно сработало (честно говоря, я даже не удалил все, на что я видел ошибки в файле main.log
, только основные пакеты. Например, я видел некоторые ошибки на perl, python и ruby-пакетах, но не удалял их вручную. Однако я запустил sudo apt update && sudo apt upgrade && sudo apt autoremove && sudo apt autoclean
, чтобы убедиться, что все обновлено и все лишние зависимости были удалены перед повторной попыткой обновления системы).
Удачи – надеюсь, это поможет!
tl;dr смотрите связанную страницу launchpad для ppa, чтобы узнать его реальное имя.
Я не думаю, что вы наткнулись на настоящее имя для этого в своих попытках. Например, команда для добавления его – это sudo add-apt-repository ppa:deadsnakes/ppa
, как указано на его странице launchpad, поэтому, чтобы удалить его, вам следует ввести
sudo ppa-purge ppa:deadsnakes/ppa
Я добавил этот ppa в виртуальную машину с jammy, что подтвердило, что добавляемый список источников называется deadsnakes-ubuntu-ppa-jammy.list
. Это совпадает с показанным в выводе в вашем вопросе.
И я подтвердил, что ppa-purge успешно удаляет его.
$ sudo ppa-purge ppa:deadsnakes/ppa
Обновление списков пакетов
PPA, который должен быть удален: deadsnakes ppa
Список пакетов для возврата создан:
Отключение deadsnakes PPA из
/etc/apt/sources.list.d/deadsnakes-ubuntu-ppa-jammy.list
Обновление списков пакетов
Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
Чтение информации о состоянии... Готово
обновлено: 0, новых установлено: 0, удалено: 0 и не обновлено: 3.
PPA успешно удален
Я оставлю вам задачу разобраться с истинными именами других ppa, которые вам нужно удалить; основная мысль здесь заключается в том, что имя добавляемого списка не обязательно является именем ppa, поэтому вам придется обратиться к их страницам launchpad (или к обширным записям, которые вы сделали, когда добавляли все эти ppa).
.
Ответ или решение
При обновлении операционной системы с Ubuntu 22.04 LTS до Ubuntu 24.04 LTS пользователи могут столкнуться с проблемой из-за наличия установленных PPA (Personal Package Archives). Эти архивы могут вызвать ошибки, такие как "Could not calculate the upgrade", что затрудняет процесс обновления. Решение данной проблемы связано с правильным удалением PPA, и для этого используется утилита ppa-purge
. Рассмотрим, что представляет собой ppa-purge
, как его правильно использовать и что делать в случае возникновения ошибок.
Теория
ppa-purge
— это инструмент, который позволяет вернуть установленные из PPA пакеты к их версиям из официальных репозиториев Ubuntu или полностью удалить их, если официальные аналоги отсутствуют. Это достигается за счёт деактивации репозитория и понижения версии пакетов, когда это возможно. Но важно отметить, что необходимо знать точное имя PPA для успешного выполнения команды, поскольку имя файла .list
, добавленного в систему, может отличаться от имени PPA.
Пример использования
Простая команда для удаления PPA выглядит следующим образом:
sudo ppa-purge ppa:имя_пользователя/ppa
Если вы не уверены в точном названии PPA, посетите соответствующую страницу Launchpad (например, deadsnakes PPA) и найдите команду для добавления PPA, чтобы удостовериться в его правильном названии.
Применение на практике
Шаг 1: Диагностика проблемы
Перед тем как приступить к удалению PPA, следует убедиться, что именно они вызывают ошибку. Вы можете проверить логи, чтобы найти подробности о проблеме:
- Откройте терминал.
-
Выполните команду для просмотра логов:
tail -n 300 /var/log/dist-upgrade/main.log
Проанализируйте ошибки, присутствующие в логе. Это поможет определить, какие пакеты вызывают проблемы.
Шаг 2: Удаление проблемных PPA
Для удаления PPA воспользуйтесь ppa-purge
. Например, для PPA deadsnakes выполните:
sudo ppa-purge ppa:deadsnakes/ppa
Если вы допустили ошибку при указании имени PPA, утилита сообщит об этом предупреждением. Найдите точное имя, посетив страницу PPA на Launchpad.
Шаг 3: Проверка и завершение
После удаления всех проблемных PPA используйте стандартные команды для обновления текущей версии:
sudo apt update && sudo apt upgrade && sudo apt autoremove && sudo apt autoclean
Эти команды помогут убедиться, что система готова к обновлению.
Шаг 4: Повторная попытка обновления
Теперь снова запустите процесс обновления:
sudo do-release-upgrade
Если все этапы выполнены корректно, обновление должно пройти успешно.
Заключение
Использование утилиты ppa-purge
на первый взгляд может показаться сложным процессом из-за множества наименований и файлов. Ключом к успеху является тщательная диагностика и поиск точных названий PPA. Уделяя внимание деталям, можно эффективно решить проблему и безопасно обновить операционную систему до новой версии Ubuntu.