Як виправити проблему "Неможливо розрахувати оновлення" під час оновлення з 12.04 до 12.10?


20

Я намагаюся оновити до 12.10 з моменту виходу сьогодні, але я продовжую зустрічатися з цією помилкою:

An unresolvable problem occurred while calculating the upgrade:
E:Unable to correct problems, you have held broken packages.
This can be caused by:  
 * Upgrading to a pre-release version of Ubuntu  
 * Running the current pre-release version of Ubuntu  
 * Unofficial software packages not provided by Ubuntu

Я спробував оновити все встановлене на даний момент програмне забезпечення, видаливши всі додаткові PPA, знизивши кількість файлів, встановлених з xpa edgers 'ppa, але мені не вдалося вирішити проблему.

Відповіді:


7

Я виправив шахту, видаливши встановлені пакетами ppa, використовуючи ppa-purge

Я знав, що мені потрібно це зробити, перевіривши журнали в / var / log / dist-upgrade / в кінці файлу apt.log, ви побачите, що це бентежить. У моєму це був драйвер відео, і я працював декількома оновленнями, тому я зробив:

sudo ppa-purge ppa:ubuntu-x-swat/x-updates
sudo ppa-purge ppa:unity-team/staging
sudo ppa-purge ppa:webapps/preview
sudo ppa-purge ppa:nilarimogard/webupd8
sudo ppa-purge ppa:scopes-packagers/ppa
sudo ppa-purge ppa:glasen/intel-driver

останній - водій глазуру - здається, зробив для мене трюк. Зараз оновлення триває як звичайне.


23

Як зазначено тут , видалення джерел PPA працює не кожен раз.

Потрібно видалити пакети, що порушили правопорушення. їх можна знайти за допомогою:

grep Broken /var/log/dist-upgrade/apt.log

Моя була пакетом xorg. Я видалив його командою:

sudo apt-get remove xserver-xorg-video-all

і тоді оновлення може продовжуватися.


4
Дякуємо, що вказали, де були зламані пакети. Це було запорукою мого успішного оновлення до 13.10.
— DaShaun

Так! Все було кузова xserver-xorg- *. ( apt-get remove xserver-xorg-*)
— K-Gun

1
Замість "зламаного", більш конкретне ключове слово, яке слід використовувати при пошуку пакетів, що порушують правопорушення, "не може бути задоволений".
— ultrajohn

1
Я отримую дуже довгий список з близько 100 пакетів.
— хтознає

У мене було понад 900, і навіть декілька годин вибивання їх за допомогою детективної роботи на apt.log лише мені досягло близько 350. Знаючи про проблему в моєму випадку, це було все те, що я встановлював вручну за ці роки, я нарешті викривився і просто видалив усі записи "Встановлені (локальні чи застарілі)", перелічені на вкладці "Статус" Synaptic. Так, я знав, що потрібно буде chroot'ing з Live CD, щоб вдало отримати всі речі, щоб знову отримати операційну систему - але це справді спрацювало.
— Пленус Френклі

16

Для оновлення випуску "NonPainful".

  • Перш ніж продовжити, перевірте, чи доступна нова версія для оновлення. Відкрийте термінал і дайте цю команду

    do-release-upgrade -c

Якщо так, продовжуйте:

  • Видаліть усі додані зовнішні PPA.

    З програмного забезпечення Центр> Правка> Джерела програмного забезпечення> Інше програмне забезпечення. Не тільки зніміть галочку, але видаліть їх.

  • Потім закрийте всі графічні програми та відкрийте лише термінал. (Повноекранний краще) Дайте наступні команди

    sudo apt-get update 
    sudo apt-get dist-upgrade
    
  • Потім дайте команди внизу, щоб трохи провести господарство

    sudo apt-get --purge autoremove
    sudo apt-get autoclean
    sudo apt-get purge $(dpkg -l | awk '/^rc/ { print $2 }')
    
  • Потім ви можете продовжити оновлення

    sudo do-release-upgrade
    

Не переглядайте та не відкривайте вікна чи програми під час оновлення.

Будьте терплячі до завершення оновлення.

Дружні: Не бігайте (або не поспішайте) оновлюватись з першого дня. Оновіть з другого дня (краще).


Дякую! Ваша відповідь надзвичайно виховна! Однак я вирішив свою проблему, перш ніж прочитати вашу відповідь. Мені довелося ввімкнути конфліктні договори, а потім очистити їх, щоб виконати роботу.
— Vagrant232

що робить sudo apt-get purge $(dpkg -l | awk '/^rc/ { print $2 }')?
— хтознає

1
@whoKnows Вибачте за пізню відповідь. Це дозволить знайти-знайти та видалити всі залишки, які були позначені для видалення, але вони ще не були видалені. Ось що означає 'rc'.
— NickTux

Це не спрацювало для мене, але той, що нижче, зробив
— Джон Малий

3

Мені вдалося вирішити проблему, не видаляючи жодних пакетів. У налаштуваннях менеджера оновлень я зняв усі параметри програмного забезпечення Ubuntu, залишивши лише перше поле - "Вільне програмне забезпечення з відкритим кодом (основне) з підтримкою Canonical".


Я підтримую цю відповідь, оскільки це вирішило проблему. Це було досить, щоб зняти прапорець "Підтримувані громадою ... (Всесвіт)". У мене була точно така ж проблема, як описана в темі. Я проходив модернізацію з 14.04 до 16.04.1 за допомогою «Оновлення програмного забезпечення».
— Мог Лі

Це працювало для мене, коментарі щодо очищення пакетів не були.
— Джон Малий

2

У мене з’явилося це повідомлення про помилку щодо оновлення, хоч і між різними версіями - я робив 14,04 Довірливо -> 16.04 Xenial - але я думаю, що ця порада може бути корисною іншим людям, які отримують ту саму помилку, оскільки це знадобило мені віки, щоб зрозуміти, і ця відповідь є чіткою в Google.

Важливо перевірити, чи є помилка в /var/log/dist-upgrade/main.logмоєму випадку, виникла помилка, яка сказала, що postgresql-9.3-postgis-2.1її видалено в чорний список, і процес оновлення намагався її видалити. Видалення цього пакета дозволить мені оновити.

(nb /var/log/dist-upgrade/apt.logможе ввести вас в оману, вказавши пакети "Зламані", які фактично не блокують оновлення.)

На це вказується також у подібному питанні та відповіді: /ubuntu//a/541406/13868

Між іншим, sudo ubuntu-bug ubuntu-release-upgrader-coreпісля запущеного оновлення можна виявити подібні проблеми та відкрити відповідний звіт про помилку у вашому веб-браузері - ось що допомогло мені знайти проблему.


-4
sudo sed -i 's/raring/saucy/' /etc/apt/sources.list
sudo apt-get dist-upgrade

що працювало на мене.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.