Не вдається виправити проблеми, ви зламали зламані пакети


216

Після оновлення з 10.04 до 12.04 я намагаюся встановити різні пакети. Наприклад, ia32-libs та skype (4.0).

Коли я намагаюся встановити ці дані, я отримую повідомлення про помилку "Неможливо виправити проблеми.

Виведення команд:

sudo apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Після запуску цього:

sudo dpkg --configure -a
foo@foo:~$ sudo apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

3
Це може допомогти, якщо ви показали нам команду, яку ви насправді намагаєтесь (наприклад, sudo apt-get install ia32-libs) та вихід з цієї команди. Також sudo apt-get dist-upgradeвідображаються наявні оновлення?
thomasrutter

3
Я не знаю, що не так у вашому питанні, я не бачу жодної фактичної помилки, ані тієї, яку ви описуєте у своєму заголовку.
Браїам


Відповіді:


237

Це конкретне повідомлення про помилку може вказувати на те, що ви зберігали пакунки, але це може також означати іншу проблему.

Список фактичних пакетів, що зберігаються, можна отримати за допомогою:

dpkg --get-selections | grep hold

Якщо жодного або жодного погляду немає, це, мабуть, щось інше. Уважно перевірте вихід команди, яку ви намагалися, коли ви отримали повідомлення про помилку, оскільки в повному виведенні цієї команди можуть бути інші підказки, окрім повідомлення про помилку.

Іншим способом усунення несправностей може бути використання можливостей, а не apt-get, щоб спробувати встановити ваш пакет:

sudo aptitude install <packagename>

Aptitude здасться менш легко і намагатиметься знайти рішення, що може включати в себе зміни інших пакетів. Це може дати вам більше пояснення проблеми та варіантів її вирішення.

Іноді здібності будуть надто прагнучи видаляти або зменшувати велику кількість пакетів, щоб задовольнити ваш запит. У такому випадку повторна спроба -fзмінює свої пріоритети та допомагає їй придумати рішення, які передбачають видалення / зменшення кількості менших пакетів, навіть якщо це означає не всі зміни, які ви запитували може йти вперед:

sudo aptitude -f install <packagename>

6
Будь-яка ідея, як зняти пакет? :-)
Євген ван дер Мерве


59
Aptitude мені більше допомагав, ніж вдалий, дякую за підказку.
szx

9
Варто зазначити, що здатність може полегшити нанесення більшої шкоди вашій системі. Наприклад, якщо apt-get не зможе щось встановити через конфліктні залежності, він відмовиться. Однак здатність може запропонувати йти вперед, але видаліть цілу купу інших пакетів, щоб задовольнити ці конфлікти - або навіть знизити пакети. Ви просто повинні бути в курсі того, що це пропонує, і продовжувати, лише якщо це гарна ідея.
thomasrutter

4
Пакети "на утриманні" не мають нічого спільного з повідомленням, лише щоб уникнути конфлікту, утримуючи їх (не встановлюючи, модернізуючи, зменшуючи чи знижуючи).
Брайам


9

Я зіткнувся з подібним сценарієм щодо відсутніх залежностей. У моєму випадку я намагався встановити curl на ubuntu saucy salamander 13.10 ...

Помилка заявила, що залежність вимагає більш ранньої версії бібліотеки curl3.

Мені вдалося перейти на більш ранню версію, намагаючись встановити curl за допомогою aptitude.

Коли він зазначив відсутність залежності та причину (потрібна більш рання версія бібліотечного файлу), він дав мені кілька варіантів, як реагувати ... y// n/q

Yвідмінив би встановлення, Nшукав би інший варіант і Qпросто б вийшов і більше нічого не робити, залишаючи зламаний пакет.

Я вибрав N, і це дало мені можливість зменшити файл бібліотеки до більш ранньої версії. Так це я і зробив, і curl закінчив установку, не маючи більше помилок.

  • Я можу заглянути після оновлення бібліотечного файлу ще раз після встановлення, але так, поки що добре.

9

У мене був аналогічний сценарій у новому встановленні 14.04, без файлів, перелічених у списку dpkg --get-selections | grep hold, і без радості після цього sudo apt-get update.

Що ж виправити це для мене було просто

sudo apt-get autoremove

Коли я спробував перевстановити збійний пакет, він спрацював чудово. Так!


4

У мене була та сама проблема, я запустив цю команду перевірки пакета з іншої відповіді ( dpkg --get-selections | grep hold) і побачив

tomcat7                                         deinstall
tomcat7-common                                  install

тому я використав " apt-get remove tomcat7-common"

Тоді я міг би встановити Tomcat 6 (я видаляв Tomcat 7 та встановлював Tomcat 6, як і ви).


Пакети "на утриманні" не мають нічого спільного з повідомленням, лише щоб уникнути конфлікту, утримуючи їх (не встановлюючи, модернізуючи,
поновляючи

додати прапор очищення: apt-get remove --purge packet
Серхіо Абреу

4

Ось кілька швидких та простих способів виправити you have held broken packagesпомилку.

  • Відкрийте файл source.list /etc/apt/sources.listі перевірте, чи немає джерел програмного забезпечення для іншого випуску Ubuntu, ніж випуск Ubuntu, який ви зараз використовуєте. Якщо ви знайдете будь-які неправильні рядки випуску у source.list, відкрийте файл source.list за допомогою sudoedit /etc/apt/sources.list, коментуйте неправильні рядки у source.list, попередньо додавши їх до #символу, збережіть файл source.list та запустіть, sudo apt updateщоб оновити список доступні програмні пакети.

  • Виберіть опцію « Виправити зламані пакети» в менеджері пакетів Synaptic. Виконайте наступні команди, щоб встановити Synaptic.

    sudo apt update  
    sudo apt upgrade   
    sudo apt install synaptic  
    

    Відкрийте Synaptic і в Synaptic виберіть Правка -> Виправити зламані пакети, а потім повторіть Правка -> Виправити зламані пакети вдруге.

    У Synaptic на лівій панелі натисніть кнопку Спеціальні фільтри, яка позначена курсором миші на нижньому екрані екрана. Зі списку у верхньому лівому куті виберіть Зламано . На центральній панелі будуть вказані будь-які зламані пакети, які ще потребують ремонту.

    показати зламані пакети в Synaptic

    Виберіть поламані пакети один за одним. Виберіть зламаний пакет, а потім відкрийте термінал і запустіть . Результати цієї команди підкажуть вам, чи був зламаний пакет встановлений із сховищ Ubuntu за замовчуванням або з іншого джерела. Якщо зламаний пакет був встановлений з якогось іншого джерела, можливо, цей пакет можна буде видалити разом із його джерелом програмного забезпечення та замінити іншою версією того самого пакету із сховищ Ubuntu за замовчуванням. Зазвичай це означає виправлення зламаного пакета шляхом повернення цього пакета до більш ранньої версії.apt policy <package-name>

  • Якщо ви отримаєте це повідомлення про помилку:

    Try 'apt-get -f install' with no packages (or specify a solution)  
    

    Виконайте такі команди:

    sudo apt update  
    sudo apt upgrade   
    sudo apt-get -f install   
    
  • Вручну видаліть зламаний пакет.

    1. Знайдіть свій пакет /var/lib/dpkg/info

      ls -l /var/lib/dpkg/info | grep <package>
      
    2. Перемістіть папку пакунків в інше місце.

      cd /tmp && sudo mkdir new-package-location  
      sudo mv /var/lib/dpkg/info/<package>.* /tmp/new-package-location/    
      
    3. Виконайте таку команду:

      sudo dpkg --remove --force-remove-reinstreq <package>  
      

Якщо всі ці методи не спрацьовують, можливо, зламані пакети спричинені чимось, що вбудовано настільки глибоко в операційну систему, що жоден із цих методів не впливає на це. Перше очевидне місце для пошуку цього глибоко вбудованого "чогось" - у джерелах програмного забезпечення в /etc/apt/sources.list. Перевірте файл source.list, щоб побачити, чи містить він нестандартні рядки, які можуть спричинити помилку зламаних пакетів. Стандартний файл izvor.list Ubuntu схожий на файли source.list у цій відповіді .

Правильний спосіб видалення підозрілої лінії з source.list - коментувати її, попередньо перед #символом. Потім запустіть, sudo apt updateщоб оновити список доступного програмного забезпечення.


0

Для мене жодне з вищезгаданого не працювало, оскільки моя система не оновлювалася. я робив

Home Key > Software Updater > Install

і оновив мою систему; пізніше я міг би встановити свій пакет нормально за допомогою apt.


0

У мене була та сама проблема перевстановлення xsaneпісля невдалої ppaустановки. Як і в йоханнах, "жодних файлів, перелічених у списку dpkg --get-selections | grep hold, і жодної радості після sudo apt-get update".

Підказка, яку apt-getмені дали, є

xsane : Depends: libsane (>= 1.0.24) but it is not going to be installed

Через відповідь йоханни у мене виникло відчуття, що я повинен видалити кілька раніше встановлених пакетів. І це було так, мені довелося вручну видалити всі пов’язані пакунки sane, серед іншого, xsane-commonі libsane, який все ще був встановлений як ppaверсія.

Тому слідкуйте за тим, що ви раніше встановили, і прибирайте!

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