Як вирішити невиконані залежності після додавання PPA?


540

Іноді, коли я встановлюю речі, я отримую помилку на зразок наступного:

Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 package1 : Depends: package2 (>= 1.8) but 1.7.5-1ubuntu1 is to be installed
E: Unable to correct problems, you have held broken packages.

Як я можу це вирішити?


33
Забудьте точну назву пакета. Це питання не має значення. Я намагаюся створити канонічне питання . Таким чином, точний пакет не є актуальним у цьому конкретному випадку.
jrg

33
Насправді "точне найменування пакета", хоча воно не стосується вашого питання, є надзвичайно актуальним для будь-якого питання в цьому плані будь-якої людини. Зазвичай найкращим першим кроком до вирішення цього питання є визначення джерела pkg1 & pkg2. Це, здається, було не помічено у відповідях, більшість з яких інакше непогані. Додатково не зазначається, що в багатьох, якщо не в більшості випадків, "<що б не було встановлено" насправді означає ", що все встановлено". Це те, що зазвичай бентежить багатьох користувачів, які стикаються з цим, і також слід включити у відповідь нижче
doug

5
@doug Додайте це як відповідь, а не коментар, це дуже добре! :)
jrg

1
@Braiam Whaaaat має точку, хоча питання не є специфічним для PPA, і досить багато відповідей також не є. Я знаю, що два найкращі відповіді трохи переповнюють інші, але я не впевнений, що зміна характеру питання є правильним рішенням, тим більше, що ви анулюєте інші відповіді. Я покидаю це, оскільки не маю кращої відповіді, але це над чим подумати.
Сет

2
О, а де моє питання щодо усунення несправностей? : D
Сет

Відповіді:


561

APT - це система управління пакетами для Debian та інших дистрибутивів Linux, заснованих на ній, таких як Ubuntu. Здебільшого APT простий у використанні для встановлення, видалення та оновлення пакетів. У рідкісних випадках, часто, коли ви змішуєтесь із сторонніми залежностями, є ймовірність, що в результаті apt-getможе з’явитися помилка, яка повідомить вам про те, що встановлення пакету неможливо завершити.

Рішення:

Завжди корисно створити резервні копії файлів конфігурації /etc/apt/sources.list, щоб ви могли відновити зміни, якщо це необхідно.

  • Якщо errorпоказує щось подібне:

    <some-package>: Depends: <other-package> (= version) but this-version is to be installed

    Потім переконайтеся, що restrictedі universeсховища включені. Натисніть Alt+ F2, введіть software-properties-gtkі натисніть Enter.

    На Ubuntu Softwareвкладці ввімкніть усі сховища.

  • Однією з можливих причин незадоволених залежностей може бути пошкоджена база даних пакетів та / або деякі пакунки не встановлені належним чином. Щоб виправити цю проблему, натисніть Alt+ Ctrl+, Tщоб відкрити термінал і спробуйте виконати одну з наступних команд:

    sudo apt-очиститися

    або,

    sudo apt-get autoclean

    apt-get cleanочищає локальне сховище отриманих файлів пакунків (файли .deb). Він видаляє все, крім файлу блокування, з / var / cache / apt / archives / та / var / cache / apt / archives / частковий /. apt-get autocleanочищає локальне сховище отриманих файлів пакетів, але на відміну від цього apt-get clean, він видаляє лише файли пакетів, які вже не можна завантажувати, і в основному є марними.

  • Одним з найбільш основних виправлень для вирішення проблем залежностей є запуск:

    sudo apt-get -f встановити

    -fТут означає «виправити зламаний». Aptспробує виправити зламані залежності. Якщо ви вручну встановили пакунок, який мав невиконані залежності, по можливості apt-getвстановіть ці залежності, інакше він може просто видалити пакет, який ви встановили, щоб вирішити проблему.

    Потім запустіть:

    sudo dpkg - конфігурація -a

    Потім запустіть це ще раз:

    sudo apt-get -f встановити

    Якщо вихід:

    0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

    Це означає, що він провалився.

  • Наступне рішення - запустити:

    sudo apt-get -u dist-upgrade

    Якщо він показує якісь пакети, що тримаються, найкраще їх усунути. Пакети зберігаються через конфлікти залежностей, які aptнеможливо вирішити. Спробуйте цю команду, щоб знайти та виправити конфлікти:

    sudo apt-get -o Налагодження :: pkgProblemResolver = так dist-upgrade

    Якщо він не зможе виправити конфлікти, він вийде із:

    0 upgraded, 0 newly installed, 0 to remove and 6 not upgraded.

    Видаліть утримувані пакети один за одним, запускаючи dist-upgradeкожен раз, поки не буде більше пакетів, що тримаються. Потім перевстановіть усі необхідні пакети. Обов’язково використовуйте цю --dry-runопцію, щоб ви були повністю поінформовані про наслідки:

    sudo apt-get remove - ім'я пакета-запуск

    Оскільки видалення пакета, який ви намагаєтесь встановити, може бути не ідеальним, ви також можете спробувати знайти сховище, яке містить пакунки, необхідні для задоволення залежностей.

Нарешті, якщо все інше не вдається, ви можете спробувати задовольнити залежності самостійно, знайшовши та встановивши необхідні пакети, або встановивши їх з джерела та створивши для них пакети " deb ".

Вимкнути / видалити / очистити PPA:

PPA (Архів особистого пакета) - це сховища, розміщені на Launchpad . Ви можете використовувати PPA для встановлення або оновлення пакетів, які недоступні в офіційних сховищах Ubuntu.

Однією з найпоширеніших причин незадоволених залежностей є PPA, особливо коли вони використовуються для оновлення існуючого пакету в сховищах Ubuntu. Для вирішення проблеми у вас є три варіанти: відключити, очистити (повернути до початкового пакета в сховищах Ubuntu) або видалити PPA.

  • Вимкнути:

    Вимкнення PPA не означає більше оновлень для пакетів, встановлених із цього PPA. Щоб вимкнути PPA: відкрийте Software Center > Edit > Software Sourcesабо,

    Натисніть Alt+ F2і біжіть software-properties-gtk.

    Перейшовши на Other Softwareвкладку, ви побачите, що кожен PPA має тут два рядки, один для складених пакетів і один для джерела, Uncheckобидва рядки для відключення PPA. Тут ви також можете додавати та видаляти PPA.

  • Чистка:

    Очищення PPA означає зменшення пакетів у вибраному PPA до версії в офіційних сховищах Ubuntu та відключення цього PPA. PPA Purge робить саме це. Щоб встановити PPA Purge, запустіть таку команду:

    sudo apt-get install ppa-purge

Але, вважаючи, що питання aptпорушено, наведена вище команда не зможе. Тому використовуйте цю команду

mkdir ppa-purge && cd ppa-purge && wget http://mirror.pnl.gov/ubuntu/pool/universe/p/ppa-purge/ppa-purge_0.2.8+bzr56_all.deb && wget http://mirror.pnl.gov/ubuntu//pool/main/a/aptitude/aptitude_0.6.6-1ubuntu1_i386.deb && sudo dpkg -i ./*.deb

Щоб використовувати PPA Purge:

sudo ppa-purge ppa: someppa / ppa

Якщо команда 'ppa-purge' з якоїсь причини виходить з ладу, ви не можете повторно запустити 'ppa-purge', якщо ви не ввімкнете повторно PPA (Щоб увімкнути PPA, виконайте ті ж дії, що й відключення PPA та Checkобидва рядки конкретного PPA для його включення).

Примітка: PPA Purgeне видаляється PPA ( можливо, буде в майбутньому ), тому вам доведеться вручну видалити PPA.

  • Видалити:

    Якщо пакет, встановлений із PPA, не існує в офіційних сховищах Ubuntu, то використання PPA Purgeне рекомендується, оскільки нічого не має бути зменшеним і PPA Purgeйого також не видалити. Щоб видалити PPA та встановлені пакети, виконайте такі команди: (Ігноруйте першу команду, якщо ви не хочете видалити встановлені пакети)

    sudo apt-get autoremove --purge-name пакета
    sudo add-apt-repository - зняти ppa: someppa / ppa
    sudo apt-get autoclean
    

Крім того, ви можете використовувати Y PPA Managerдля відключення / видалення / очищення PPA (подробиці в кінці відповіді).

Превентивні заходи:

Тож як ми можемо уникнути цього в першу чергу?

  • Підтримуйте оновлення Ubuntu. Ubuntu автоматично повідомляє про наявність оновлень, ви також можете перевірити наявність оновлень, натиснувши на Session Indicatorпанелі Unity:

    Або натисніть клавішу Alt+ Ctrl+, Tщоб відкрити термінал і запустити наступні команди:

    sudo apt-get update
    sudo apt-get upgrade

    Оновлення: синхронізує ваш список доступних пакетів із серверами у вихідних сховищах. Оновлення: завантажує та встановлює будь-які новіші версії встановлених пакетів.

  • Якщо ви вирішили додати інші сховища до source.list, переконайтеся, що сховище призначене для роботи (і відомо, що він працює) з Ubuntu. Репозиторії, які не призначені для роботи з вашою версією Ubuntu, можуть внести невідповідності у вашу систему і можуть змусити вас повторно встановити. Крім того, переконайтесь, що вам дійсно потрібно додати зовнішні сховища, оскільки програмний пакет (и), який ви шукаєте, можливо вже внесені в офіційні сховища! Джерело
  • Видаліть дублікати PPA. Y PPA Manager(керівництво по установці в кінці відповіді) може легко сканувати та видаляти дублікати PPA.

    • Натисніть Alt+ F2та запустіть, y-ppa-managerщоб відкрити Y PPA Manager.
    • Після того, як відкритий, подвійним клацанням миші або натисніть Enterна Advanced.
    • У вікні, що виходить, виберіть Scan and remove duplicate PPAsі натисніть кнопку ОК.

введіть тут опис зображення

Отримання довідки:

Коли ви звертаєтесь по допомогу на Askubuntu або будь-який інший довідковий форум, ви повинні включити у своє запитання висновок наступних команд:

  • Вихід фактичної помилки:

    sudo apt - отримати встановити ім'я пакета
  • Це покаже ваш source.list:

    cat /etc/apt/sources.list
  • Це покаже перелік PPA (якщо такі є):

    cat /etc/apt/sources.list.d/*

Додаткові джерела:


Y PPA Manager : Y PPA Manager - це єдине вікно для всіх ваших потреб у PPA.

y менеджер ppa

Ось деякі його особливості:

  • пошук пакетів у всіх PPA Launchpad
  • перераховувати та завантажувати пакети в PPA
  • додайте / видаліть / очистіть PPA
  • резервне копіювання та відновлення джерел PPA
  • видалити повторювані джерела PPA

Щоб встановити Y PPA Manager, відкрийте термінал, натиснувши Alt+ Ctrl+ Tта виконайте наступні команди:

sudo add-apt-repository ppa: webupd8team / y-ppa-manager
sudo apt-get update
sudo apt-get install y-ppa-manager

Зважаючи на питання, aptце порушено, тому використовуйте замість них ці команди

sudo su

і

32 біт:

mkdir y-ppa-manager && cd y-ppa-manager && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/launchpad-getkeys_0.3.2-1~webupd8~oneiric_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/y-ppa-manager_0.0.8.6-1~webupd8~precise_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/yad_0.17.1.1-1~webupd8~precise_i386.deb && dpkg -i ./*.deb

64 біт:

mkdir y-ppa-manager && cd y-ppa-manager && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/launchpad-getkeys_0.3.2-1~webupd8~oneiric_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/y-ppa-manager_0.0.8.6-1~webupd8~precise_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/yad_0.17.1.1-1~webupd8~precise_amd64.deb && dpkg -i ./*.deb

3
Як встановити невдалі депандації, якщо apt порушено?
Тахіони

4
Це була величезна допомога для мене ... свіжа установка Lubuntu 12.04 і не вдалося встановити базові речі, такі як gvim (vim-gtk) або openssh-сервер. Я пробував всілякі параметри командного рядка, включаючи буквально виконання відмінностей /etc/apt/sources.list від цієї машини та іншої (яка працювала правильно, запускаючи Xubuntu). Дотримуючись цього посібника, я виявив, що якимось чином у програмі-властивостях-gtk ящик для "головних" репостів не було відмічено! Проблема вирішена!
memilanuk

1
Колись ви справді тримали зламані пакунки ... Тож найкраще - прихопити їх та видалити. Дивіться askubuntu.com/a/363244/16395
Rmano

3
Ніхто насправді не відповів, як встановити ці пакети з невлаштованими версіями залежності. Боже! Я просто хочу змусити встановити старіші версії пакетів.
морські піхотинці

3
Для мене це не спрацювало: S
AlvaroAV

87

Примітка: Усі команди, які просять запустити, повинні бути запущені в терміналі, який можна відкрити або Ctrl+ Alt+, Tабо шукати термінал у тирі.

Це справді зламано?

Спробуйте виконати наступну команду та спробуйте перевстановити програмне забезпечення, яке ви намагалися встановити

sudo apt-get update

Попередні кроки

Резервне копіювання

Створіть резервну копію таких файлів:

  • /etc/apt/sources.list
  • /var/lib/dpkg/status

Для цього використовуйте ці команди

sudo cp /etc/apt/sources.list /etc/apt/sources.list.original

і

sudo cp /var/lib/dpkg/status /var/lib/dpkg/status.original

Очищення apt-кеша

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

Тепер для його очищення у вас є два варіанти

sudo apt-get clean 

Це видалить всі кешированниє пакети , що належать папці , /var/cache/apt/archives/і /var/cache/apt/archives/partialкрім .lock файлів. Це рекомендується

sudo apt-get autoclean

Це сканує папки /var/cache/apt/archives/та /var/cache/apt/archives/partialперевіряє, чи зберігається пакунок у сховищах та видаляє ті, які його немає


Закріплення залежностей

Використовуючи режим фіксованого виправлення apt

sudo apt-get -f install

Це призведе до сприятливого сканування відсутніх залежностей та виправлення їх із сховищ

Якщо у висновку зазначено, що нічого нового не було встановлено чи оновлено, воно не вдалося.


Перевірка, чи включені всі необхідні джерела

Наберіть gksu software-properties-gtkі ви отримаєте це вікно

Переконайтеся, що всі джерела включені.

далі, перейдіть на вкладку Інше програмне забезпечення і перевірте, чи потрібні PPA-програми для встановленого програмного забезпечення та чи включені вони. Крім того, спробуйте відключити деякі PPA, які можуть мати зламані пакети

тепер біжи sudo apt-get update

Спробуйте встановити програмне забезпечення зараз

Вибір кращого сервера для завантаження

Наберіть gksu software-properties-gtkі ви отримаєте це вікно

Клацніть Завантажити у спадному вікні та виберіть інше

Клацніть Вибрати найкращий сервер

Біжи sudo apt-get update

Спробуйте встановити програмне забезпечення

також спробуйте використовувати sudo apt-get install -f


Очищення PPA

Це інструмент, який використовується для очищення зламаних / небажаних ППА та їх додатків разом із ним

Щоб його встановити, запустіть

sudo apt-get install ppa-purge

Але, враховуючи, що питання aptпорушено, тому вищезгадана команда не зможе. Тому використовуйте цю команду

mkdir ppa-purge && cd ppa-purge && wget http://mirror.pnl.gov/ubuntu/pool/universe/p/ppa-purge/ppa-purge_0.2.8+bzr56_all.deb && wget http://mirror.pnl.gov/ubuntu//pool/main/a/aptitude/aptitude_0.6.6-1ubuntu1_i386.deb && sudo dpkg -i ./*.deb

Тепер використовуйте чистку ppa

sudo ppa-purge ppa:someppa/ppa  

Y-PPA Manager

Y-PPA Manager - це програма gui, яка допомагає вам керувати PPA та різними проблемами, пов'язаними з ним

Щоб його встановити

sudo add-apt-repository ppa:webupd8team/y-ppa-manager

і

sudo apt-get update

і

sudo apt-get install y-ppa-manager

Зважаючи на питання, aptчи так порушено, замість цього скористайтеся цією командою

sudo su

і

32 біт:

mkdir y-ppa-manager && cd y-ppa-manager && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/launchpad-getkeys_0.3.2-1~webupd8~oneiric_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/y-ppa-manager_0.0.8.6-1~webupd8~precise_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/yad_0.17.1.1-1~webupd8~precise_i386.deb && dpkg -i ./*.deb

64 біт:

mkdir y-ppa-manager && cd y-ppa-manager && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/launchpad-getkeys_0.3.2-1~webupd8~oneiric_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/y-ppa-manager_0.0.8.6-1~webupd8~precise_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/yad_0.17.1.1-1~webupd8~precise_amd64.deb && dpkg -i ./*.deb

Тепер введіть y-ppa-manager

Вам буде представлено це вікно

Двічі клацніть на розширеному, і ви отримаєте це вікно

Виконайте такі завдання, окреслені чорним кольором


Профілактика краще, ніж лікування

Краще запобігти, ніж шукати це питання на AskUbuntu: D

Отже, ось рекомендації щодо збереження вас

Постійно оновлюйте систему

завжди виконайте таку команду регулярно

sudo apt-get update&&sudo apt-get upgrade

або, ви завжди можете використовувати Менеджер оновлень за допомогою цієї команди

gksu update-manager

Використання лише надійних PPA

Використовуйте лише PPA, призначені для використання на Ubuntu, використовуйте лише PPA з надійними джерелами. Infact, пакет може вже знаходитись у сховищах ubuntu

Резервне копіювання, коли справи хороші, і відновлення його згодом

Для цього вам потрібен Y-PPA-менеджер. Сходи для його встановлення наведені вище.

Виконайте цю команду, щоб відкрити Y-PPA-менеджер

y-ppa-manager

Вам буде представлено це вікно

Двічі клацніть на розширеному, і ви отримаєте це вікно

Виконати це:

Вам буде запропоновано зберегти файл tar.gz у діалоговому вікні, подібному до наведеного нижче. Збережіть його в іншому розділі чи безпечному місці

Пізніше, коли вам потрібно буде відновити його знову, виконайте подібні кроки, і коли ви перейдете до розширеного діалогового вікна, натисніть на це:

Вам буде запропоновано відновити попередню резервну копію, яку ви зберегли раніше, діалоговим вікном, подібним до наведеного нижче


Ще не працює?

Помилки залежності пакету не завжди є загальними і залежать від пакета, який потрібно встановити.

Якщо дотримання всіх кроків, виправлених для виправлення помилки, не працює для вас, ви завжди можете запитати у Ask Ubuntu

Ось кілька команд, для яких вам потрібно опублікувати вихід

sudo apt-get install packagename

і

cat /etc/apt/sources.list

і

cat /etc/apt/sources.list.d/*

(Спасибі Башарату Сіалу )

Існують також інші файли / команди, необхідні для виведення даних, які можуть бути специфічними для помилок, і користувачі, ймовірно, запропонують вам у коментарях розмістити файл / команду.


Я б поставив apt-get updateбіля вершини списку. Іноді ваша система проводила оновлення, де один новий пакет оновлено оновленим, але той, від якого залежить, ще не закінчив створення. Або оновлена ​​версія у вашому локальному кеші оновлена. У цих випадках простий apt-get updateоновить ваш локальний кеш, і ви можете продовжувати працювати.
Хаміш Даунер

1
Найвища відповідь! Це просто змушує мене бажати, щоб підхопили або dpkg мав кращий захист, щоб переконатися, що вони не потрапили в ці застряглі зламані стани, або краще вирішили їх. У мене була ця проблема раніше, і я був дуже засмучений, коли apt-get install -fне вирішив її.
Джефф Веллінг

Ви також можете включити це застереження: "Ніколи не оновлюйте вашу систему, коли PPA увімкнено, спочатку вимкніть їх, а потім оновіть" Тому що, якщо ви оновите до версії PPA, а потім, що PPA стане мертвим, це врешті означає, що ви мертві . Ви не можете знизити всю систему до нижчих номерів версій і не можете встановити щось із стандартного репо, тому що пакет із std repo має конфлікти з встановленим пакетом PPA.
Анвар

2
Виберіть кращий сервер, зафіксований для мене. Дякую!
Hoang Huynh

Я подумав, що -fпрапор стоїть за силою і завжди уникав його використовувати
user907860

38

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

Я настійно рекомендую здібність усім, хто використовує систему на основі .deb, наприклад Ubuntu. Її структура дерева дозволяє легко переглядати залежності, включаючи рекомендовані та запропоновані пакети, а також візуалізувати конфлікти та невиконані залежності. Це безцінний інструмент для того, коли apt-get не пропонує простого рішення, а також для візуалізації залежностей загалом. ( Synaptic також доступний в Ubuntu, але я не вважаю це інтуїтивно зрозумілим.)

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


3
Голосували за згадку про вирішення конфлікту Aptitude. Бувають випадки, коли важливо використовувати передові інструменти на кшталт цього, щоб визначити, які є можливості та встановити основний конфлікт.
Джон С Грубер

3
Це може бути найкращою відповіддю в цій темі. Це навіть можна вдосконалити за допомогою навчального посібника щодо aptitudeвирішення конфлікту.
Luís de Sousa

2
Це посилання, хоча воно не пояснює залежності або їх загальну концепцію, показує швидкий підручник інтерактивного рішення: aptitude.alioth.debian.org/doc/en/ch02s03s03.html
переписано

1
+1 здатність просто врятувала моє бекон перед конфліктом GTK3. apt-get зовсім не допомогла.
Кріс Лаплант

1
Що мені подобається sudo aptitude --full-resolver my_package. Що зазвичай дає The following packages have unmet dependenciesі список серед яких 7) <my_package> [Not Installed](7 - лише приклад). На кожному кроці здатність пропонує нові варіанти. Що для мене спрацювало - вибрати спочатку 7, а потім r 7(що відповідає опису Rejecting the removal of my_package), а потім n (для НІ), як вибір до цього був не тим, чого я хотів: але після цього нові варіанти пропонували зменшити деякі пакунки разом із встановленням my_package; так, останнє, Y(для ТАК)

24

package1: Залежить: package2 (> = 1.8), але має бути встановлено 1.7.5-1ubuntu1

Пояснення повідомлення:

  1. Для того, щоб ваша установка була завершена, пакет1 потребує пакет2.
  2. package2 повинен бути доступний у версії> = 1.8
  3. Менеджер пакунків перевірив усі сховища та знайшов лише версію 1.7.5-1ubuntu1, яку можна було встановити, чого він не буде робити, оскільки це <1,8

Виправити

На це запитання немає єдиної правильної відповіді і немає простої відповіді.

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

Сценарій A:

У всіх сховищах, до яких у вас є доступ, немає пакета2 у версії> = 1.8, тому вам доведеться знайти сховище, яке є. Якщо ви не в змозі знайти сховище з версіями> = 1.8, можливо, вам доведеться створити і встановити пакет2 з джерела. А потім спробуйте встановити пакет1.

Якщо ви хочете знати, як створити пакет з джерела, перевірте інші питання / відповіді або опублікуйте новий.

Сценарій B:

Репозиторії включають package2 у версії> = 1.8, але менеджер пакунків все ще хоче встановити старішу версію (1.7.5).

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

Це взагалі неможливо виправити. Ви можете спробувати використовувати apt або synaptic і шукати всі версії пакета2, які доступні у сховищах, і спробувати встановити конкретну версію> = 1,8

Якщо у вас є інші несумісні пакети, і ви це зробите, ви отримаєте список подібних повідомлень про помилки для всіх інших пакетів, які перешкоджають встановленню пакета2> = 1.8.

У цьому випадку у вас більша проблема. Ви хотіли встановити package1, для якого потрібно, щоб пакет2 був> = 1,8, але package2 у версії> = 1,8 вимагає, щоб package3 був у версії> = 6.7, і у вас є package3 версії 6.3

Вся справа в тому, що менеджер пакунків (APT) намагається автоматично вирішити всі ці залежності, якщо це можливо. Коли він говорить, що це неможливо (і видає повідомлення, як у запитанні), тоді вам слід довіряти цьому.

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

Остерігайтеся, якщо це зробити для системних пакетів, це може створити серйозні проблеми. Ви можете заблокувати себе із системи, заблокувати критичні служби тощо.

Сценарій С:

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

Сценарій D:

Менеджер пакунків має доступ до застарілої інформації про пакунки і для цього не може знайти рішення. Подивіться в інших відповідях.

Сценарій Е:

Менеджер пакунків має помилку в коді вирішення залежності.

Ви повинні дослідити, що це дійсно так, і потім надіслати запит на помилку.

...

Сценарій Z:

Можуть бути й інші сценарії.

Наприклад, технічне обслуговування пакунків могло помилитися і не перевірило, що пакет1 працює навіть із версією пакета2 <1,8, а в специфікації вони встановили неправильні залежності.


17

Цих методів потрібно дотримуватися кожного разу, коли виникає помилка щодо невиконаних залежностей

Дотримуючись інструкцій, спробуйте встановити програмне забезпечення. Принаймні один із цих методів повинен працювати для вас

1 . Перш ніж спробувати будь-яку нову команду чи додати будь-яку нову ppa, спробуйте це

Очищення сприятливого кешу:

sudo apt-get clean

Прибирання невикористаних залежностей:

sudo apt-get autoremove

Оновлення apt-кеша

sudo apt-get update

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

2 . Спробуйте sudo apt-get install -f.

Ймовірно, ви дасте кілька пропозицій щодо видалення та встановлення пакунків, зробіть те, що здається розумним.

3 . Зміна Download Serverвід Software SourcesТому що іноді файли на сервері пошкоджені.

введіть тут опис зображення
введіть тут опис зображення
введіть тут опис зображення

4 . Це також трапляється, якщо ви до цього додали зовнішню ppa для розбитої залежності. Спробуйте видалити цю ppa

  • або набрати, sudo add-apt-repository --remove ppa:someppa/ppaа потім видалити вручну встановлені файли / бібліотеки вручну

або

  • чистка PPA (це також видаляє встановлені файли)

    sudo apt-get install ppa-purge   #a one time install 
    sudo ppa-purge ppa:someppa/ppa  
    

5 . Якщо немає 4 - це не ваш випадок, то принаймні спробуйте видалити пакунок, який демонструється як розбита залежність. Потім спробуйте встановити ще раз. Це, як повідомляється, спрацювало досить багато людей.

6 . Завжди додайте стабільну версію сховища / PPA.

введіть тут опис зображення

7 Також переконайтеся, що у вас активовані всі офіційні сховища (In Software Sources)

введіть тут опис зображення

Будь ласка, не включайте те, Proposed Updatesяк вони призначені для тестування / розробників.

введіть тут опис зображення


Як розповів Дуг:

Зазвичай найкращим першим кроком до вирішення цього питання є визначення джерела <pkg1>& <pkg2>.

Додатково не зазначається, що в багатьох, якщо не в більшості випадків, "<що б> не було встановлено" насправді означає ", що все встановлено", і його слід намагатися видалити, якщо нічого іншого не працює (як у пункті 5).


Я буду продовжувати додавати більше речей, які не вдається виправити unmet dependencies.


3
@Ashu Одне, що ви можете виправити, - apt-get updateце не оновлення кеш- підходу (який складається з завантажених .debфайлів і файлу, який зберігає інформацію про .debфайли, які ви зберегли). Він оновлює файли індексів пакунків (які складаються з інформації про те, які пакунки доступні для завантаження та встановлення з кожного доступного джерела програмного забезпечення). Як я вже говорив, apt-get cleanне очищає те саме, що apt-get updateоновлення. Детальніше man apt-getдив.
Елія Каган

16

У більшості випадків встановлення пакета через це aptitudeдозволить вирішити невиконані залежності. aptitudeПакет за замовчуванням не був встановлений на вашому ПК.Так спочатку встановіть його, запустивши,

sudo apt-get update
sudo apt-get install aptitude

тоді,

sudo aptitude install packagename

Наприклад,

    
avinash @ avinash-Lenovo-IdeaPad-Z500: ~ $ sudo apt - отримати встановлення ubuntu-sdk
Читання списків пакунків ... Готово
Побудова дерева залежності       
Читання інформації про стан ... Готово
Неможливо встановити деякі пакети. Це може означати, що у вас є
запитували неможливу ситуацію або якщо ви використовуєте нестабільну
розповсюдження, що деякі необхідні пакети ще не створені
або було переміщено з вхідних.
Наступна інформація може допомогти вирішити ситуацію:

Наступні пакети мають невиконані залежності:
 ubuntu-sdk: Залежить: qtcreator-plugin-ubuntu, але він не буде встановлений
E: Не вдається виправити проблеми, ви зламали зламані пакети.

Встановлення пакета наскрізь aptitude

avinash @ avinash-Lenovo-IdeaPad-Z500: ~ $ sudo здатність встановити ubuntu-sdk
Будуть встановлені наступні НОВІ пакети:
  apparmor-easyprof {a} apparmor-easyprof-ubuntu {a} в {a} build-basic {a} 
  натисніть {a} click-apparmor {a} click-dev {a} click-doc {a} cordova-ubuntu-2.8 
  cordova-ubuntu-2.8-прикладів {a} debhelper {a} devscripts {a} dh-apparmor {a} 
  dh-make {a} distro-info-data {a} dpkg-dev {a} dput {a} g ++ {a} g ++ - 4.8 {a} 
  геоклауз-циганський {a} лібальгоритм-diff-perl {a} libalgorithm-diff-xs-perl {a} 
  libalgorithm-merge-perl {a} libboost-filesystem1.53.0 {a} 
  libboost-program-options1.53.0 {a} libboost-regex1.53.0 {a} 
  libbotan-1.10-0 {a} libdee-qt5-3 {a} libdistro-info-perl {a} 
  libexporter-lite-perl {a} libglib2.0-dev {a} 
  libgstreamer-plugins-base1.0-dev {a} libgstreamer1.0-dev {a} libgypsy0 {a} 
  libhud2 {a} libio-stringy-perl {a} libjs-jquery {a} libjs-sphinxdoc {a} 
  libjs-підкреслення {a} liblockdev1 {a} libmail-sendmail-perl {a} 
  libparse-debcontrol-perl {a} libpcre3-dev {a} libpcrecpp0 {a} 
  libpoppler-qt5-1 {a} libqdjango-db0 {a} libqgsttools-p1 {a} 
  libqt5clucene5 {a} libqt5contacts5 {a} libqt5declarative5 {a} 
  libqt5designer5 {a} libqt5designercomponents5 {a} libqt5feedback5 {a} 
  libqt5help5 {a} libqt5location5-плагіни {a} libqt5multimedia5 {a} 
  libqt5multimedia5-плагіни libqt5multimediaquick-p5 {a} 
  libqt5multimediawidgets5 {a} libqt5organizer5 {a} 
  libqt5qml-graphicaleffects {a} libqt5script5 libqt5scripttools5 {a} 
  libqt5svg5 {a} libqt5svg5-dev libqt5systeminfo5 {a} libqt5v8-5-dev 
  libqt5versit5 {a} libqt5versitorganizer5 {a} libqt5webkit5-dev 
  libqt5webkit5-qmlwebkitplugin {a} libqt5xmlpatterns5 {a} 
  libqt5xmlpatterns5-dev libstdc ++ - 4,8-dev {a} libsys-hostname-long-perl {a} 
  libthumbnailer0 {a} libu1db-qt5-3 {a} libunity-action-qt1 {a} 
  libupstart-app-start1 {a} libusermetricsinput1 {a} libxml2-dev {a} 
  libxslt1-dev {a} po-debconf {a} python3-apparmor-click {a} python3-click {a} 
  python3-magic {a} qmlscene qt3d5-dev qtbase5-doc {a} qtcreator {a} 
  qtcreator-doc {a} qtcreator-плагін-ubuntu {a} 
  qtcreator-plugin-ubuntu-common {a} qtdeclarative5-account-plugin 
  qtdeclarative5-cordova-2.8-plugin {a} qtdeclarative5-dev-tools 
  qtdeclarative5-doc-html {a} qtdeclarative5-folderlistmodel-плагін 
  qtdeclarative5-friends0.2 qtdeclarative5-localstorage-plugin 
  qtdeclarative5-частинок-плагін qtdeclarative5-poppler1.0 
  qtdeclarative5-qtaudioengine-plugin qtdeclarative5-qtfeedback-плагін {a} 
  qtdeclarative5-qtlocation-plugin qtdeclarative5-qtmultimedia-plugin {a} 
  qtdeclarative5-qtorganizer-plugin qtdeclarative5-qtquick2-плагін {a} 
  qtdeclarative5-qtsensors-plugin qtdeclarative5-u1db1.0 
  qtdeclarative5-ubuntu-ui-extras-browser-plugin {a} 
  qtdeclarative5-ubuntu-ui-extras-browser-plugin-tools {a} 
  qtdeclarative5-ubuntu-ui-toolkit-плагін {a} 
  qtdeclarative5-unit-action-plugin {a} qtdeclarative5-usermetrics0.1 
  qtdeclarative5-window-plugin {a} qtdeclarative5-xmllistmodel-плагін 
  qtgraphicaleffects5-doc {a} qtlocation5-dev {a} qtmultimedia5-dev 
  qtmultimedia5-doc {a} qtmultimedia5-doc-html {a} qtscript5-dev 
  qtscript5-doc {a} qtscript5-doc-html {a} qtsensors5-dev {a} qtsvg5-doc {a} 
  qtsvg5-doc-html {a} qttools5-dev qttools5-dev-tools qttools5-doc {a} 
  qtwebkit5-doc-html {a} schroot {a} schroot-поширений {a} sqlite3 {a} 
  ubuntu-html5-контейнер ubuntu-html5-sdk {ab} ubuntu-html5-тема {a} 
  ubuntu-html5-тема-приклади ubuntu-sdk ubuntu-sdk-libs 
  ubuntu-sdk-libs-dev {a} ubuntu-ui-toolkit-doc {a} 
  ubuntu-ui-toolkit-приклад {a} ubuntu-ui-toolkit-тема {a} 
  Ujedinjeno-action-doc {a} upstart-app-start {a} upstart-app-start-tools {a} 
  usermetricsservice {a} wdiff {a} zlib1g-dev {a} 
Наступні пакети будуть оновлені:
  cpp-4,8 gcc-4,8 gcc-4,8-base hud libasan0 libatomic1 libgcc-4,8-dev 
  libgcc1 libglib2.0-0 libglib2.0-bin libgomp1 libitm1 libquadmath0 
  libstdc ++ 6 libtsan0 
Оновлено 15 пакетів, 151 знову встановлений, 0 для видалення та 293 не оновлено.
Потрібно отримати архіви 108 МБ / 126 МБ. Після розпакування буде використано 273 Мб.
Наступні пакети мають невиконані залежності:
 ubuntu-html5-sdk: Залежить: qtdeclarative5-ubuntu-webapps-api, що є віртуальним пакетом.
                    Залежить: ubuntu-html5-ui-інструментарій, але він не збирається встановлювати.
Наступні дії вирішать ці залежності:

     Зберігайте такі пакети в їх поточній версії:              
1) qtcreator-plugin-ubuntu [не встановлено]                          
2) ubuntu-html5-sdk [не встановлено]                                 
3) ubuntu-sdk [не встановлено]                                       

     Залиште невирішеними такі залежності:                       
4) libhud-client2 рекомендує hud (= 13.10.1 + 13.10.20131014-0ubuntu1)
5) qtcreator-плагін-ubuntu-загальний рекомендує qtcreator-плагін-ubuntu


Прийняти це рішення? [Y / n / q /?] У
Будуть встановлені наступні НОВІ пакети:
  apparmor-easyprof {a} apparmor-easyprof-ubuntu {a} build-basic {a} 
  натисніть {a} click-apparmor {a} дежурний оператор cordova-ubuntu-2.8 {a} dh-apparmor {a} 
  dh-make {a} dpkg-dev {a} g ++ {a} g ++ - 4,8 {a} геоклап-циганин {a} 
  libalgorithm-diff-perl {a} libalgorithm-diff-xs-perl {a} 
  libalgorithm-merge-perl {a} libdee-qt5-3 {a} libglib2.0-dev {a} 
  libgstreamer-plugins-base1.0-dev {a} libgstreamer1.0-dev {a} libgypsy0 {a} 
  libhud2 {a} libjs-jquery {a} libmail-sendmail-perl {a} libpcre3-dev {a} 
  libpcrecpp0 {a} libpoppler-qt5-1 {a} libqdjango-db0 {a} libqgsttools-p1 {a} 
  libqt5clucene5 {a} libqt5contacts5 {a} libqt5designer5 {a} 
  libqt5designercomponents5 {a} libqt5feedback5 {a} libqt5help5 {a} 
  libqt5location5-плагіни {a} libqt5multimedia5 {a} libqt5multimedia5-плагіни 
  libqt5multimediaquick-p5 {a} libqt5multimediawidgets5 {a} 
  libqt5organizer5 {a} libqt5qml-graphicaleffects {a} libqt5script5 
  libqt5scripttools5 {a} libqt5svg5 {a} libqt5svg5-dev libqt5systeminfo5 {a} 
  libqt5v8-5-dev libqt5versit5 {a} libqt5versitorganizer5 {a} 
  libqt5webkit5-dev libqt5webkit5-qmlwebkitplugin {a} libqt5xmlpatterns5 {a} 
  libqt5xmlpatterns5-dev libstdc ++ - 4,8-dev {a} libsys-hostname-long-perl {a} 
  libthumbnailer0 {a} libu1db-qt5-3 {a} libunity-action-qt1 {a} 
  libupstart-app-start1 {a} libusermetricsinput1 {a} libxml2-dev {a} 
  libxslt1-dev {a} po-debconf {a} python3-apparmor-click {a} python3-click {a} 
  qmlscene qt3d5-dev qtdeclarative5-account-plugin 
  qtdeclarative5-cordova-2.8-plugin {a} qtdeclarative5-dev-tools 
  qtdeclarative5-folderlistmodel-plugin qtdeclarative5-friends0.2 
  qtdeclarative5-localstorage-plugin qtdeclarative5-частинок-плагін 
  qtdeclarative5-poppler1.0 qtdeclarative5-qtaudioengine-plugin 
  qtdeclarative5-qtfeedback-плагін {a} qtdeclarative5-qtlocation-плагін 
  qtdeclarative5-qtmultimedia-plugin {a} qtdeclarative5-qtorganizer-плагін 
  qtdeclarative5-qtquick2-plugin {a} qtdeclarative5-qtsensors-plugin 
  qtdeclarative5-u1db1.0 qtdeclarative5-ubuntu-ui-extras-браузер-плагін {a} 
  qtdeclarative5-ubuntu-ui-extras-browser-plugin-tools {a} 
  qtdeclarative5-ubuntu-ui-toolkit-плагін {a} 
  qtdeclarative5-unit-action-plugin {a} qtdeclarative5-usermetrics0.1 
  qtdeclarative5-window-plugin {a} qtdeclarative5-xmllistmodel-плагін 
  qtlocation5-dev {a} qtmultimedia5-dev qtscript5-dev qtsensors5-dev {a} 
  qttools5-dev qttools5-dev-tools sqlite3 {a} ubuntu-html5-контейнер 
  ubuntu-html5-тема {a} ubuntu-html5-тема-приклади ubuntu-sdk-libs 
  ubuntu-ui-toolkit-topic {a} upstart-app-start {a} 
  upstart-app-start-tools {a} usermetricsservice {a} wdiff {a} zlib1g-dev {a} 
Наступні пакети будуть оновлені:
  cpp-4,8 gcc-4,8 gcc-4,8-base hud libasan0 libatomic1 libgcc-4,8-dev 
  libgcc1 libglib2.0-0 libglib2.0-bin libgomp1 libitm1 libquadmath0 
  libstdc ++ 6 libtsan0 
15 оновлених пакетів, 108 нещодавно встановлених, 0 для видалення та 293 не оновлені.
Потрібно отримати 27,1 МБ / 45,8 МБ архівів. Після розпакування буде використано 104 Мб.
Ви хочете продовжити? [Y / n /?]

У вашому прикладі просто встановлена ​​спроможність зупинки встановлення. Він насправді нічого не встановлює.
кірі

2
@AvinashRaj, .. але перед встановленням aptitudeне слід вирішувати проблему залежностей?
точне

так, у більшості випадків це вирішує залежності.
Avinash Raj

2
Я маю на увазі, якщо система зламала пакети, вона не дозволила б встановити нові установки, поки це не виправлено .. так як би ви встановили, aptitudeне вирішивши проблему спочатку!
точно

в цьому випадку спочатку ми повинні вирішити зламані пакети, інакше ви не зможете встановити. aptitudeЯкщо не було помилки, викликаної зламаними пакетами, то ви можете встановити придатність.
Avinash Raj

11

Моя відповідь схожа на вищесказану рикку.

Використовуючи apt-get clean, apt-get autoclean, apt-get autoremove, apt-get upgrade, apt-get update, apt-get -u dist-upgradeі т.д. все не працює для мене.

Нарешті я вирішив це питання, спустившись до дерева залежності через apt-get install, проілюстрований прикладом нижче. У моєму випадку я хотів встановити libmagickwand-dev:

apt-get install libmagickwand-dev

Я отримав цю помилку:

The following packages have unmet dependencies:
 libmagickwand-dev : Depends: libmagickcore4-extra (= 8:6.6.9.7-5ubuntu3.2) but it is not going to be installed
                     Depends: libmagickcore-dev (= 8:6.6.9.7-5ubuntu3.2) but it is not going to be installed

Отже, я побіг apt-get installза однією з невдалих залежностей:

apt-get install libmagickcore-dev

The following packages have unmet dependencies:
 libmagickcore-dev : Depends: libmagickcore4-extra (= 8:6.6.9.7-5ubuntu3.2) but it is not going to be installed
                     Depends: libgraphviz-dev but it is not going to be installed

Я спустився далі по дереву:

apt-get install libgraphviz-dev

з іншою помилкою:

The following packages have unmet dependencies:
 libgraphviz-dev : Depends: libgvc5 (= 2.26.3-10ubuntu1) but it is not going to be installed

Ще раз глибше вниз по дереву:

apt-get install libgvc5

З якоїсь дивної причини це вдалося, і мені вдалося встановити оригінальний пакет, який я хотів apt-get install libmagickwand-dev:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  libcdt4 libgd2-xpm libgraph4 libpathplan4
Suggested packages:
  libgd-tools
The following NEW packages will be installed:
  libcdt4 libgd2-xpm libgraph4 libgvc5 libpathplan4
0 upgraded, 5 newly installed, 0 to remove and 2 not upgraded.
Need to get 808 kB of archives.
After this operation, 2,320 kB of additional disk space will be used.
Do you want to continue [Y/n]?

8

Відмінні відповіді! Але сьогодні мій вигляд здається відмінним від вашого. Ось моя порада.

Проблема:

Не вдалося встановити apache2 в ubuntu 10.10.

rick@wen-VirtualBox:~$ sudo apt-get install apache2

Reading package lists... Done

Building dependency tree      

Reading state information... Done

Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.

The following information may help to resolve the situation:

The following packages have unmet dependencies:

 apache2 : Depends: apache2-mpm-worker (= 2.2.16-1ubuntu3) but it is not going to be installed or

                    apache2-mpm-prefork (= 2.2.16-1ubuntu3) but it is not going to be installed or

                    apache2-mpm-event (= 2.2.16-1ubuntu3) but it is not going to be installed or

                    apache2-mpm-itk (= 2.2.16-1ubuntu3) but it is not going to be installed

           Depends: apache2.2-common (= 2.2.16-1ubuntu3) but it is not going to be installed

E: Broken packages

Рішення:

Мій спосіб - додати залежний пакет до списку встановлення.

Якщо "sudo apt-get install apache2" не вдалося, спробуйте " sudo apt-get install apache2 apache2.2-common ".

Побачити? apache2.2-розповсюджується з журналу помилок попереднього кроку.

Нарешті я виявив, що існує такий ланцюжок залежності:

 apache2.2-common <-- apache2.2-bin <-- libaprutil1-ldap <-- libaprutil1

Для перших трьох пакунків журнал apt-get сказав мені, що "не буде встановлено",

але для останнього пакета він показує 'libaprutil1-ldap: Залежить: libaprutil1 (= 1.3.9 + dfsg-3build1), але 1.3.9 + dfsg-3ubuntu0.10.10.1 слід встановити'

У мене в іншій версії є інша версія:

sudo apt-get remove libaprutil1

sudo apt-get install apache2

Зараз це нормально.


Комбіноване прочитання цієї відповіді та іншої вище наведеної тут дає кращі ВІДНОВЛЕННЯ того, що таке проблема залежності. Коли інші відповіді дають тут "Взагалі узагальнені" РІШЕННЯ, це надає НЕУМОВНЕННЯ.
VenkiPhy6

7

що таке невиконані залежності Помилка

Пакети Ubuntu є основним способом створення, розгортання та встановлення програмного забезпечення. Дуже просто, пакети - це альтернатива завантаженню, створенню та встановленню програмного забезпечення з нуля. Вони пропонують безліч переваг щодо встановлення, видалення, моніторингу та керування взаємодіями між частинами програмного забезпечення над стандартною моделлю "побудувати з джерела". Ubuntu використовує централізовану систему упаковки, тобто кожен пакет залежить від деяких інших пакетів. Коли ми встановлюємо пакет, то встановлюються залежності, помилка незадоволених залежностей виникає, коли залежності цього пакету недоступні для встановлення

Можливі причини

1.Computer is not connected to the Internet
2.The repository containing the depandancy package is not enabled
3.Package catalog is not updated
4.The version of the depandancy in the current repository is old
5.Software index is broken
6.The depandancy is not available for ubuntu

Спробуймо це вирішити

  1. Підключення до Інтернету: D
  2. Переконайтеся, що всі сховища за замовчуванням включені

    -> Ви можете легко додати їх у меню Software Center-> Правка-> Джерела програмного забезпечення-> Інші джерела-> Додати "

    -> Почніть Software Center.

    ->. На панелі перейдіть до Editта виберіть Software Sources.

    редагування-програмне забезпечення-джерела

    -> Переконайтесь, що всі сховища перевірені введіть тут опис зображення

  3. Оновіть каталог програмного забезпечення

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

і натисніть кнопку перевірки введіть тут опис зображення

4.type ctrl+ alt+, tщоб відкрити термінал і набрати sudo apt-get install -f

5.Перемістіть нещодавно доданий ppa, використовуючи ppa-purge ppa-purge Встановіть ppa-очищення

Ця програма відключає PPA від ваших джерел програмного забезпечення та повертає вашу систему назад до офіційних пакетів Ubuntu. Ви можете скористатися цією функцією, щоб повернути систему до нормального стану після тестування нової версії з PPA.

Синтаксис

sudo ppa-purge ppa:<repository-name>/<subdirectory>

Приклад

sudo ppa-purge ppa:ubuntu-mozilla-daily/ppa
  1. відкрийте центр програмного забезпечення та спробуйте встановити будь-яке програмне забезпечення. Якщо з'явилося наступне діалогове вікно, натисніть кнопку відновлення та зачекайте

введіть тут опис зображення

Інший тип ctrl+alt +, tщоб відкрити термінал і набрати sudo apt-get install -fта дотримуйтесь інструкцій на екрані

Якщо все-таки виникає помилка, не соромтеся запитати її в askbuntu


@jrg Я вже маю це у своїй відповіді ... чи повинна кожна відповідь мати те саме?
Ашу

2
@Ashu Я намагаюся допомогти людям зробити канонічну відповідь - і я мушу сказати всім , оскільки на кону є 500 баналів, і я не хочу грати фаворитів, допомагаючи певним людям у їхніх відповідях, але ігноруючи інших . : s
jrg

5

... не забувайте про `build-dep`

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

ВЕДЕНО: використання sudo dpkg -r [package]рекомендується використовувати , оскільки воно має досить потужну функцію видалення. Оскільки apt-getпрацює поряд із dpkg, значить apt-get, підкорятиметься dpkgфункції.

  sudo dpkg -r [package]
  sudo apt-get build-dep [package]  
  ## pre-install all deps for the package

Ви викликаєте apt-get, щоб очистити невдалий пакет, який ви намагалися встановити в системі, а потім ви викликаєте команду build-dep, яка apt-get буде захоплювати та встановлювати залежності, що належать до цього пакету, так що вони задовольнять попередній пакет. Потім, нарешті, зателефонуйте до apt-get install:

sudo apt-get install [package]

.... 'Фу! Давайте крутимо вам руку, поки не кричите "Дядьку!"

Це рідко траплялося протягом моїх довгих років використання Linux, але я дуже часто використовував цей підхід і досяг успіху. Це приклад недавньої боротьби, яку я мав раніше місяць тому з пакунками mysql-client/mysql-server. Після десятка невдалих спроб скинути свій кореневий пароль на mysql-сервері (навіть через --skip-grant-table techqiue, але все ж не вдалося), я нарешті домігся успіху в "скручуванні руки Linux, поки він не закричав" Дядько! ":

sudo dpkg -r mysql-server mysql-client
sudo apt-get autoclean  
## this dumps any copy of existing package to prevent apt-get from "re-using" it.
sudo apt-get build-dep mysql-client   
 ## one package at a time, starting with client first
sudo apt-get install mysql-client
sudo apt-get build-dep mysql-server
sudo apt-get install mysql-server

apt-get autoclean є ключовим у цьому рішенні


3

Під час встановлення i386 пакетів у 64-бітних системах Multiarch Ubuntu

Якщо ви намагаєтесь встановити пакет, який залежить від багатьох пакетів i386, вищезазначена помилка залежності також буде викликана, якщо не вдасться додати архітектуру i386, запустивши sudo dpkg --add-architecure i386команду.

Приклад:

avinash@avinash-Lenovo-IdeaPad-Z500:~$ sudo apt-get install skype
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 skype : Depends: skype-bin but it is not installable
E: Unable to correct problems, you have held broken packages.
avinash@avinash-Lenovo-IdeaPad-Z500:~$ sudo dpkg --add-architecture i386
avinash@avinash-Lenovo-IdeaPad-Z500:~$ sudo apt-get install skype
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  gcc-4.8-base:i386 gcc-4.9-base:i386 libasound2:i386 libasound2-plugins:i386
  libasyncns0:i386 libaudio2:i386 libavahi-client3:i386
  libavahi-common-data:i386 libavahi-common3:i386 libc6:i386
  libcgmanager0:i386 libcomerr2:i386 libcups2:i386 libdbus-1-3:i386
  libdbusmenu-qt2:i386 libdrm-intel1:i386 libdrm-nouveau2:i386
  libdrm-radeon1:i386 libdrm2:i386 libelf1:i386 libexpat1:i386 libffi6:i386
  libflac8:i386 libfontconfig1:i386 libfreetype6:i386 libgcc1:i386
  libgcrypt11:i386 libgl1-mesa-dri:i386 libgl1-mesa-glx:i386
  libglapi-mesa:i386 libglib2.0-0:i386 libgnutls26:i386 libgpg-error0:i386
  libgssapi-krb5-2:i386 libgstreamer-plugins-base1.0-0:i386
  libgstreamer1.0-0:i386 libice6:i386 libjack-jackd2-0:i386 libjbig0:i386
  libjpeg-turbo8:i386 libjpeg8:i386 libjson-c2:i386 libk5crypto3:i386
  libkeyutils1:i386 libkrb5-3:i386 libkrb5support0:i386 libllvm3.4:i386
  liblzma5:i386 libmysqlclient18:i386 libnih-dbus1:i386 libnih1:i386
  libogg0:i386 liborc-0.4-0:i386 libp11-kit0:i386 libpciaccess0:i386
  libpcre3:i386 libpng12-0:i386 libpulse0:i386 libqt4-dbus:i386
  libqt4-declarative:i386 libqt4-network:i386 libqt4-opengl:i386
  libqt4-script:i386 libqt4-sql:i386 libqt4-sql-mysql:i386 libqt4-xml:i386
  libqt4-xmlpatterns:i386 libqtcore4:i386 libqtdbus4:i386 libqtgui4:i386
  libqtwebkit4:i386 libsamplerate0:i386 libselinux1:i386 libsm6:i386
  libsndfile1:i386 libspeexdsp1:i386 libsqlite3-0:i386 libssl1.0.0:i386
  libstdc++6:i386 libtasn1-6:i386 libtiff5:i386 libtinfo5:i386
  libtxc-dxtn-s2tc0:i386 libudev1:i386 libuuid1:i386 libvorbis0a:i386
  libvorbisenc2:i386 libwrap0:i386 libx11-6:i386 libx11-xcb1:i386 libxau6:i386
  libxcb-dri2-0:i386 libxcb-dri3-0:i386 libxcb-glx0:i386 libxcb-present0:i386
  libxcb-sync1:i386 libxcb1:i386 libxdamage1:i386 libxdmcp6:i386 libxext6:i386
  libxfixes3:i386 libxi6:i386 libxml2:i386 libxrender1:i386 libxshmfence1:i386
  libxslt1.1:i386 libxss1:i386 libxt6:i386 libxv1:i386 libxxf86vm1:i386
  mysql-common skype-bin:i386 sni-qt:i386 zlib1g:i386
Suggested packages:
  nas:i386 glibc-doc:i386 locales:i386 rng-tools:i386 libglide3:i386
  gnutls-bin:i386 krb5-doc:i386 krb5-user:i386 libvisual-0.4-plugins:i386
  gstreamer-codec-install:i386 gnome-codec-install:i386
  gstreamer1.0-tools:i386 gstreamer1.0-plugins-base:i386 jackd2:i386
  pulseaudio:i386 libqt4-declarative-folderlistmodel:i386
  libqt4-declarative-gestures:i386 libqt4-declarative-particles:i386
  libqt4-declarative-shaders:i386 qt4-qmlviewer:i386 libqt4-dev:i386
  libicu48:i386 libthai0:i386 qt4-qtconfig:i386
Recommended packages:
  xml-core:i386
The following NEW packages will be installed:
  gcc-4.8-base:i386 gcc-4.9-base:i386 libasound2:i386 libasound2-plugins:i386
  libasyncns0:i386 libaudio2:i386 libavahi-client3:i386
  libavahi-common-data:i386 libavahi-common3:i386 libc6:i386
  libcgmanager0:i386 libcomerr2:i386 libcups2:i386 libdbus-1-3:i386
  libdbusmenu-qt2:i386 libdrm-intel1:i386 libdrm-nouveau2:i386
  libdrm-radeon1:i386 libdrm2:i386 libelf1:i386 libexpat1:i386 libffi6:i386
  libflac8:i386 libfontconfig1:i386 libfreetype6:i386 libgcc1:i386
  libgcrypt11:i386 libgl1-mesa-dri:i386 libgl1-mesa-glx:i386
  libglapi-mesa:i386 libglib2.0-0:i386 libgnutls26:i386 libgpg-error0:i386
  libgssapi-krb5-2:i386 libgstreamer-plugins-base1.0-0:i386
  libgstreamer1.0-0:i386 libice6:i386 libjack-jackd2-0:i386 libjbig0:i386
  libjpeg-turbo8:i386 libjpeg8:i386 libjson-c2:i386 libk5crypto3:i386
  libkeyutils1:i386 libkrb5-3:i386 libkrb5support0:i386 libllvm3.4:i386
  liblzma5:i386 libmysqlclient18:i386 libnih-dbus1:i386 libnih1:i386
  libogg0:i386 liborc-0.4-0:i386 libp11-kit0:i386 libpciaccess0:i386
  libpcre3:i386 libpng12-0:i386 libpulse0:i386 libqt4-dbus:i386
  libqt4-declarative:i386 libqt4-network:i386 libqt4-opengl:i386
  libqt4-script:i386 libqt4-sql:i386 libqt4-sql-mysql:i386 libqt4-xml:i386
  libqt4-xmlpatterns:i386 libqtcore4:i386 libqtdbus4:i386 libqtgui4:i386
  libqtwebkit4:i386 libsamplerate0:i386 libselinux1:i386 libsm6:i386
  libsndfile1:i386 libspeexdsp1:i386 libsqlite3-0:i386 libssl1.0.0:i386
  libstdc++6:i386 libtasn1-6:i386 libtiff5:i386 libtinfo5:i386
  libtxc-dxtn-s2tc0:i386 libudev1:i386 libuuid1:i386 libvorbis0a:i386
  libvorbisenc2:i386 libwrap0:i386 libx11-6:i386 libx11-xcb1:i386 libxau6:i386
  libxcb-dri2-0:i386 libxcb-dri3-0:i386 libxcb-glx0:i386 libxcb-present0:i386
  libxcb-sync1:i386 libxcb1:i386 libxdamage1:i386 libxdmcp6:i386 libxext6:i386
  libxfixes3:i386 libxi6:i386 libxml2:i386 libxrender1:i386 libxshmfence1:i386
  libxslt1.1:i386 libxss1:i386 libxt6:i386 libxv1:i386 libxxf86vm1:i386
  mysql-common skype skype-bin:i386 sni-qt:i386 zlib1g:i386
0 upgraded, 115 newly installed, 0 to remove and 7 not upgraded.
Need to get 63.7 MB of archives.
After this operation, 225 MB of additional disk space will be used.
Do you want to continue? [Y/n] 

Я згоден, що це може бути однією з можливих причин. коли я намагався встановити якийсь інший пакет (наприклад vlc) після встановлення скайпу, і я отримав незадовільну залежність. Я вийшов із подібної ситуації, додавши :amd64в кінці назви пакета, що спричинило помилку. як ви одужали? що було б найкращим рішенням?
souravc

Не впевнений, чому це було знято. Це мені потрібно було встановити 32-бітове Wine. До речі, у вас є помилка друку в --add-архітектурі, і вам слід додати нагадування про запуск apt-get upgrade після --add-архітектури.
Метт Чемберс

1

Після спробу наблизитись до кожного способу, згаданого в цій темі (та інших), я був близький до відмови. Я модернізував Debian Lenny до Squeeze, і я не міг довічно зрозуміти, чому PHP5, Apache, MySQL і т.д. не хотів встановлювати. Врешті-решт я спробував використати

sudo apt-get purge apache2
sudo apt-get purge php5
sudo apt-get purge mysql-server
sudo apt-get clean
sudo apt-get autoremove
sudo apt-get install apache2 php5 mysql-server

..і це працювало бездоганно! ( Остерігайтеся, це може знищити ваші конфігураційні файли, тому створіть резервну копію! )


Це не вирішує проблему, якщо у вас не встановлені згадані пакети.
Брайам

1

Що для мене спрацювало - це встановити залежність. Це той випадок, коли встановлена ​​версія є більш пізньою, ніж остання (що показує синаптичний). Це фактично рівнозначно, щоб дозволити синаптичному знижувати пакет залежностей.

Ще одна річ, яка працювала - це використання "здатності":

root@arau:~# aptitude install libgfortran3
The following NEW packages will be installed:
  libgfortran3{b} 
0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 250 kB of archives. After unpacking 1 230 kB will be used.
The following packages have unmet dependencies:
 libgfortran3 : Depends: gcc-4.8-base (= 4.8.2-19ubuntu1) but 4.8.4-2ubuntu1~14.04 is installed.
Internal error: found 2 (choice -> promotion) mappings for a single choice.
The following actions will resolve these dependencies:

     Keep the following packages at their current version:
1)     libgfortran3 [Not Installed]                       



Accept this solution? [Y/n/q/?] n
Internal error: found 2 (choice -> promotion) mappings for a single choice.
Internal error: found 2 (choice -> promotion) mappings for a single choice.
The following actions will resolve these dependencies:

      Downgrade the following packages:                                        
1)      cpp-4.8 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]       
2)      gcc-4.8 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]       
3)      gcc-4.8-base [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]  
4)      libasan0 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]      
5)      libatomic1 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]    
6)      libgcc-4.8-dev [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]
7)      libgomp1 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]      
8)      libitm1 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]       
9)      libquadmath0 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]  
10)     libstdc++6 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]    
11)     libtsan0 [4.8.4-2ubuntu1~14.04 (now) -> 4.8.2-19ubuntu1 (trusty)]      

Accept this solution? [Y/n/q/?] y

це нічого нового в основному не те саме, що ви можете зняти з найкращої відповіді тут і тієї, що випливає ...
JoKeR

1
так, але є мільйони рішень, я просто згадую, що працювало на мене.
Боб Йоплайт

0

Якщо ви отримуєте помилку, як це:
введіть тут опис зображення

Це говорить про те, що пакети вже встановлені, але він не встановив усіх інших пакетів, які йому потрібні для роботи. Ви зможете вирішити це, виконавши це:

sudo apt-get -f install

(Ця команда повинна автоматично встановити незареєстровані залежності.)

або щось подібне (з відповідними пакетами) :

sudo apt-get install click curl dpkg-dev python-lzma python-requests imagemagick ubuntu-dev-tools

Але якщо ви зіткнулися з такою помилкою: не вдається встановити пакет / пакет недоступний / немає кандидата на встановлення тощо

Потім можна шукати способи їх встановлення тут або тут .
В наведеному вище прикладі, ви повинні бути в змозі знайти сторінку , як це , а потім використовувати в PPA , або встановити .deb - 32bit або .deb - 64bit .

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