Как разрешить неудовлетворенные зависимости после добавления 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.

Как я могу решить это?

JRG
источник
33
Забудьте точное название пакета. Это не имеет отношения к этому вопросу. Я пытаюсь создать канонический вопрос . Таким образом, точный пакет не имеет значения в данном конкретном случае.
Jrg
33
На самом деле «точное название пакета», хотя и не имеет отношения к вашему вопросу, чрезвычайно важно для вопроса любого человека в этом отношении. Обычно лучшим первым шагом к решению этой проблемы является определение источника pkg1 & pkg2. Это, кажется, было упущено в ответах, большинство из которых довольно хороши в противном случае. Кроме того, не отмечено, что во многих, если не в большинстве случаев, «все, что нужно установить», на самом деле означает «все, что установлено». Это то, что сбивает с толку многих пользователей, сталкивающихся с этим, и также должно быть включено в ответ ниже
doug
5
@doug Добавьте это как ответ, а не как комментарий, это очень хорошо! :)
Jrg
1
@Braiam Whaaaat имеет смысл, хотя, вопрос не является специфическим для PPA, и довольно много ответов тоже нет. Я знаю, что два верхних ответа немного перегружают другие, но я не уверен, что изменение характера вопроса - правильное решение, тем более что вы аннулируете другие ответы. Я оставляю это сейчас, так как у меня нет лучшего ответа, но есть над чем подумать.
Сет
2
О, а где мой вопрос по устранению неполадок? : D
Сет

Ответы:

562

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-get clean

    или же,

    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 --configure -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 Debug :: pkgProblemResolver = да dist-upgrade

    Если он не может исправить конфликты, он завершится с:

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

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

    sudo apt-get remove --dry-run имя-пакета

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

Наконец, если ничего не помогает, вы можете попытаться удовлетворить зависимости самостоятельно, либо найдя и установив необходимые пакеты, либо установив их из исходного кода, а затем создав для них пакеты « deb ».

Отключить / удалить / удалить PPA:

PPA (Personal Package Archive) - это репозитории, размещенные на 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.

  • Purge:

    Очистка PPA означает понижение пакетов в выбранном PPA до версии в официальных репозиториях Ubuntu и отключение этого PPA. PPA Purge делает именно это. Для установки PPA Purge выполните следующую команду:

    sudo apt-get установить 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 Purgeне удаляет PPA ( возможно, в будущем ), поэтому вам придется вручную удалить PPA.

  • Удалить:

    Если пакет, установленный из PPA, не существует в официальных репозиториях Ubuntu, использовать PPA Purgeего не рекомендуется, потому что нет ничего, что можно было бы понизить, и он PPA Purgeтоже не будет удален. Чтобы удалить PPA и установленные пакеты, выполните следующие команды: (Игнорируйте первую команду, если вы не хотите удалять установленные пакеты)

    sudo apt-get autoremove --purge имя-пакета
    sudo add-apt-repository - удалить ppa: someppa / ppa
    sudo apt-get autoclean
    

В качестве альтернативы вы можете использовать Y PPA Managerдля отключения / удаления / очистки PPA (подробности в конце ответа).

Предупредительные меры:

Итак, как мы можем избежать этого в первую очередь?

  • Держите Ubuntu в курсе. Ubuntu автоматически уведомляет, когда обновления доступны, вы также можете проверить наличие доступных обновлений, нажав на Session Indicatorпанели Unity:

    Или, Hit Alt+ Ctrl+ , Tчтобы открыть терминал и запустить следующие команды:

    sudo apt-get update
    sudo apt-get upgrade

    Обновление: синхронизирует ваш список доступных пакетов с серверами в исходных хранилищах. Обновление: загружает и устанавливает все новые версии установленных пакетов.

  • Если вы решите добавить другие репозитории в sources.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-get установить имя пакета
  • Это покажет ваш sources.list:

    cat /etc/apt/sources.list
  • Это покажет список PPA (если есть):

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

Дополнительные источники:


Y PPA Manager : Y PPA Manager - это универсальный магазин для всех ваших нужд PPA.

y ppa manager

Вот некоторые из его особенностей:

  • искать пакеты во всех 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 установить 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-server. Я пробовал всевозможные параметры командной строки, в том числе буквально делал diff /etc/apt/sources.list с этой машины и другой (которая работала правильно, запустив Xubuntu). Следуя этому руководству, я обнаружил, что каким-то образом в software-properties-gtk флажок для «основных» репозиториев был снят! Задача решена!
мемиланук
1
Когда-то вы действительно держали сломанные пакеты ... Так что лучше всего их убрать и удалить. См. Askubuntu.com/a/363244/16395
Rmano
3
На самом деле никто не ответил, как установить эти пакеты с неудовлетворенными версиями зависимостей. Бог! Я просто хочу принудительно установить более старые версии пакетов.
морская пехота
3
Это не сработало для меня: S
AlvaroAV
88

Примечание. Все команды, которые нужно выполнить, должны быть запущены в терминале, который можно открыть с помощью 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's fix-broken mode

sudo apt-get -f install

Это заставит apt сканировать отсутствующие зависимости и исправить их из репозиториев.

Если на выходе указано, что ничего нового не было установлено или обновлено, произойдет сбой.


Проверка, включены ли все необходимые источники

Введите gksu software-properties-gtkи вы получите это окно

Убедитесь, что все источники включены.

Затем перейдите на вкладку Другое программное обеспечение и проверьте, есть ли необходимые PPA для устанавливаемого программного обеспечения и включены ли они. Также попробуйте отключить некоторые PPA, которые могут иметь поврежденные пакеты.

сейчас беги sudo apt-get update

Попробуйте установить программное обеспечение сейчас

Выбор лучшего сервера для загрузки с

Введите gksu software-properties-gtkи вы получите это окно

Нажмите «Загрузить» из выпадающего списка и выберите другой

Нажмите Выбрать лучший сервер

Бегать sudo apt-get update

Попробуйте установить программное обеспечение

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


PPA Purge

Это инструмент, используемый для очистки сломанных / нежелательных 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 - это графическое приложение, которое помогает вам управлять 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-Manager

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
Лучший ответ! Это просто заставляет меня желать, чтобы у apt и / dpkg была лучшая защита, чтобы они не попадали в эти застрявшие нарушенные состояния или лучше их разрешали. У меня была эта проблема раньше, и я был очень расстроен, когда apt-get install -fне решил ее.
Джефф Веллинг
Вы также можете включить это предупреждение: «Никогда не обновляйте свою систему, пока включен PPA, сначала отключите их, а затем обновите». Поскольку, если вы обновляетесь до версии PPA, а затем этот PPA становится мертвым, это в конечном итоге означает, что вы мертвы , Вы не можете понизить всю систему до более низких номеров версий и не можете установить что-либо из стандартного репо, поскольку пакет из репозитория std конфликтует с установленным пакетом PPA.
Анвар
2
Выберите лучший сервер исправил это для меня. Спасибо!
Хоанг Хюйн
Я думал, что -fфлаг обозначает силу, и всегда избегал его использовать
user907860
38

Эти ответы до сих пор сосредоточены на том, как автоматически решить такую ​​проблему, в основном надеясь, что она решится сама, но не на понимание того, как исследовать зависимости. Важно попробовать такие вещи, как проверка того, что ваши списки пакетов обновлены, поскольку вы должны убедиться, что простое обновление или очистка кэша не решит проблему, прежде чем копать глубже. Если все за кадром работает так, как должно, однако, его первостепенное значение имеет научиться понимать зависимости. Иногда уровни зависимостей могут показаться подавляющими, но концепция проста и является ключом к пониманию того, как программное обеспечение устанавливается / удаляется в системе Ubuntu.

Я настоятельно рекомендую aptitude любому, кто использует систему на основе .deb, такую ​​как Ubuntu. Его древовидная структура позволяет легко просматривать зависимости, включая рекомендуемые и предлагаемые пакеты, а также визуализировать конфликты и неудовлетворенные зависимости. Это бесценный инструмент для случаев, когда apt-get не предлагает простого решения, и для визуализации зависимостей в целом. ( Synaptic также доступен в Ubuntu, но я не нахожу его интуитивным.)

Aptitude также предлагает средство разрешения конфликтов, которое проведет вас через все возможные комбинации установленных / удаленных / обновленных / и т.д. пакетов, чтобы удовлетворить все требования без конфликтов или проблем. Это может быть успешным, даже если apt не может найти решение. Как пользователь Ubuntu, обычно не возникает ситуаций, требующих выяснения, почему именно этот пакет устанавливается, но это почти неизбежно, когда вы больше используете систему.

overprescribed
источник
3
Проголосовал за упоминание разрешения конфликтов Aptitude. Бывают моменты, когда необходимо использовать такие продвинутые инструменты, чтобы определить, какие возможности есть, и точно определить основной конфликт.
Джон С. Грубер
3
Это может быть лучшим ответом в этой теме. Его можно даже улучшить с помощью учебника по aptitudeразрешению конфликтов в России.
Луис де Соуза
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 является лишь примером). На каждом этапе aptitude предлагает новые варианты выбора. Для меня сработало сначала выбрать 7, затем r 7(что соответствует описанию Rejecting the removal of my_package), а затем n (для НЕТ), поскольку варианты до этого были не тем, что я хотел: но после этого новые варианты предлагали понизить некоторые пакеты вместе с установкой my_package; итак, последний, Y(для ДА)
24

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

Объяснение сообщения:

  1. Чтобы ваша установка была завершена, package1 нужен package2.
  2. package2 должен быть доступен в версии> = 1.8
  3. Менеджер пакетов проверил все репозитории и нашел только версию 1.7.5-1ubuntu1, которую можно установить, но он этого не сделает, потому что он <1.8

исправлять

На этот вопрос НЕТ единственно правильного ответа, и НЕТ простого ответа.

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

Сценарий А:

Все репозитории, к которым у вас есть доступ, не имеют package2 в версии> = 1.8, поэтому вам нужно будет найти репозиторий, который имеет. Если вы не можете найти репозиторий с версиями> = 1.8, вам, возможно, придется собрать и установить package2 из исходного кода. А затем попробуйте установить package1.

Если вы хотите узнать, как создать пакет из исходного кода, проверьте другие вопросы / ответы или опубликуйте новый.

Сценарий Б:

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

Причиной этого может быть то, что более поздние версии пакета 2 созданы с использованием более новой технологии, которая не поддерживается другими пакетами, которые вы уже установили.

Это может быть невозможно исправить вообще. Вы можете попробовать использовать apt или synaptic и найти все версии пакета 2, которые доступны в репозиториях, и попытаться установить конкретную версию> = 1.8

Если у вас есть другие несовместимые пакеты, и вы делаете это, вы получите список похожих сообщений об ошибках для всех других пакетов, которые препятствуют установке package2> = 1.8.

В этом случае у вас есть большая проблема. Вы хотели установить package1, для которого package2 должен быть> = 1.8, но package2 в версии> = 1.8 требует, чтобы package3 был в версии> = 6.7, и у вас package3 версии 6.3

Дело в том, что менеджер пакетов (APT) пытается решить все эти зависимости автоматически, если это возможно. Когда он говорит, что это невозможно (и выдает сообщение, как в вопросе), тогда вы должны доверять этому.

Если вы решите не доверять менеджеру пакетов и уверены, что у вас не возникнет проблем, вы можете попытаться принудительно установить нужные версии всех пакетов по одному и надеяться, что все будет в порядке.

Осторожно, выполнение этого для системных пакетов может создать серьезные проблемы. Вы можете заблокировать себя вне системы, заблокировать важные службы и т. Д.

Сценарий C:

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

Сценарий D:

Менеджер пакетов имеет доступ к устаревшей информации о пакетах и ​​поэтому не может найти решение. Посмотри в других ответах.

Сценарий E:

В менеджере пакетов есть ошибка в коде разрешения зависимостей.

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

...

Сценарий Z:

Могут быть и другие сценарии.

Например, сопровождающие пакета могли ошибаться и не проверяли, что package1 будет работать даже с версией package2 <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

или же

  • очистка 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- не обновлять кэш apt (который состоит из загруженных .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-get install ubuntu-sdk
Чтение списков пакетов ... Готово
Построение дерева зависимостей       
Чтение информации о состоянии ... Готово
Некоторые пакеты не могут быть установлены. Это может означать, что у вас есть
запросил невозможную ситуацию или если вы используете нестабильную
рассылка о том, что некоторые необходимые пакеты еще не созданы
или был перемещен из входящих.
Следующая информация может помочь разрешить ситуацию:

Следующие пакеты имеют неудовлетворенные зависимости:
 Ubuntu-SDK: Зависит: Qtcreator-плагин-Ubuntu, но он не будет установлен
E: Невозможно исправить проблемы, у вас есть сломанные пакеты.

Установка пакета через aptitude

avinash @ avinash-Lenovo-IdeaPad-Z500: ~ $ sudo aptitude install ubuntu-sdk
Будут установлены следующие НОВЫЕ пакеты:
  apparmor-easyprof {a} apparmor-easyprof-ubuntu {a} в {a} build-essential {a} 
  click {a} click-apparmor {a} click-dev {a} click-doc {a} cordova-ubuntu-2.8 
  cordova-ubuntu-2.8-examples {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} 
  geoclue-gypsy {a} libalgorithm-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-underscore {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-plugins {a} libqt5multimedia5 {a} 
  libqt5multimedia5-plugins 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-launch1 {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-plugin-ubuntu {a} 
  qtcreator-plugin-ubuntu-common {a} qtdeclarative5-accounts-plugin 
  qtdeclarative5-cordova-2.8-plugin {a} qtdeclarative5-dev-tools 
  qtdeclarative5-doc-html {a} qtdeclarative5-folderlistmodel-plugin 
  qtdeclarative5-friends0.2 qtdeclarative5-localstorage-plugin 
  qtdeclarative5-частиц-плагин qtdeclarative5-poppler1.0 
  qtdeclarative5-qtaudioengine-plugin qtdeclarative5-qtfeedback-plugin {a} 
  qtdeclarative5-qtlocation-plugin qtdeclarative5-qtmultimedia-plugin {a} 
  qtdeclarative5-qtorganizer-plugin qtdeclarative5-qtquick2-plugin {a} 
  qtdeclarative5-qtsensors-plugin qtdeclarative5-u1db1.0 
  qtdeclarative5-убунту-UI-дополнения-браузер плагин {а} 
  qtdeclarative5-убунт-UI-статисты-браузер-плагин-активы {а} 
  qtdeclarative5-убунту-UI-инструментарий-плагин {а} 
  qtdeclarative5-unity-action-plugin {a} qtdeclarative5-usermetrics0.1 
  qtdeclarative5-window-plugin {a} qtdeclarative5-xmllistmodel-plugin 
  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-common {a} sqlite3 {a} 
  ubuntu-html5-container ubuntu-html5-sdk {ab} ubuntu-html5-theme {a} 
  ubuntu-html5-theme-examples ubuntu-sdk ubuntu-sdk-libs 
  ubuntu-sdk-libs-dev {a} ubuntu-ui-toolkit-doc {a} 
  ubuntu-ui-toolkit-examples {a} ubuntu-ui-toolkit-theme {a} 
  unity-action-doc {a} upstart-app-launch {a} upstart-app-launch-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-toolkit, но не будет установлен.
Следующие действия разрешат эти зависимости:

     Сохраните следующие пакеты в их текущей версии:              
1) qtcreator-plugin-ubuntu [не установлено]                          
2) ubuntu-html5-sdk [не установлено]                                 
3) ubuntu-sdk [Не установлено]                                       

     Оставьте следующие зависимости нерешенными:                       
4) libhud-client2 рекомендует hud (= 13.10.1 + 13.10.20131014-0ubuntu1)
5) qtcreator-plugin-ubuntu-common рекомендует qtcreator-plugin-ubuntu


Принять это решение? [Y / n / q /?] Y
Будут установлены следующие НОВЫЕ пакеты:
  apparmor-easyprof {a} apparmor-easyprof-ubuntu {a} build-essential {a} 
  нажмите {a} click-apparmor {a} cordova-ubuntu-2.8 debhelper {a} dh-apparmor {a} 
  dh-make {a} dpkg-dev {a} g ++ {a} g ++ - 4.8 {a} geoclue-gypsy {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-plugins {a} libqt5multimedia5 {a} libqt5multimedia5-plugins 
  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-launch1 {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-частиц-плагин qtdeclarative5-частиц-плагин 
  qtdeclarative5-poppler1.0 qtdeclarative5-qtaudioengine-plugin 
  qtdeclarative5-qtfeedback-plugin {a} qtdeclarative5-qtlocation-plugin 
  qtdeclarative5-qtmultimedia-plugin {a} qtdeclarative5-qtorganizer-plugin 
  qtdeclarative5-qtquick2-plugin {a} qtdeclarative5-qtsensors-plugin 
  qtdeclarative5-u1db1.0 qtdeclarative5-ubuntu-ui-extras-browser-plugin {a} 
  qtdeclarative5-убунт-UI-статисты-браузер-плагин-активы {а} 
  qtdeclarative5-убунту-UI-инструментарий-плагин {а} 
  qtdeclarative5-unity-action-plugin {a} qtdeclarative5-usermetrics0.1 
  qtdeclarative5-window-plugin {a} qtdeclarative5-xmllistmodel-plugin 
  qtlocation5-dev {a} qtmultimedia5-dev qtscript5-dev qtsensors5-dev {a} 
  qttools5-dev qttools5-dev-tools sqlite3 {a} ubuntu-html5-container 
  ubuntu-html5-theme {a} ubuntu-html5-theme-examples ubuntu-sdk-libs 
  ubuntu-ui-toolkit-theme {a} upstart-app-launch {a} 
  upstart-app-launch-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не следует решить проблему зависимостей?
точное
да, в большинстве случаев это разрешает зависимости.
Авинаш Радж
2
Я имею в виду, что если система имеет поврежденные пакеты, она не разрешит новые установки, пока она не будет исправлена ​​... так как бы вы установили, aptitudeне решив проблему в первую очередь!
точное
в этом случае сначала мы должны разрешить поврежденные пакеты, иначе вы не сможете установить. aptitudeЕсли не было ошибок из-за сломанных пакетов, вы можете установить aptitude.
Авинаш Радж
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-common происходит из журнала ошибок предыдущего шага.

Наконец-то я обнаружил, что есть цепочка зависимостей:

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

Для первых 3 пакетов журнал 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-purge

Эта программа отключает 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`

В дополнение к этим ответам выше - я должен признать, что я удивлен, что никто не упомянул этот подход, который я всегда использовал как «серебряную пулю» в любое время, когда я сталкивался с конфликтами apt-get или неразрешенными пакетами (или даже если система упряма .... ха!).

РЕДАКТИРОВАНИЕ: использование 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. После дюжины неудачных попыток сбросить мой пароль root с помощью mysql-server (даже с помощью --skip-grant-tables 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 является ключом в этом решении

Faron
источник
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) после установки Skype, я получил неудовлетворенную зависимость. Я вышел из аналогичной ситуации, добавив :amd64в конце имени пакета, вызывающего ошибку. как ты поправился? что будет лучшим решением?
souravc
Не уверен, почему это было понижено. Это то, что мне нужно для установки 32-битного Wine. Кстати, у вас есть опечатка в архитектуре --add, и вы должны добавить напоминание для запуска обновления apt-get после --add-Architecture.
Мэтт Чэмберс
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

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

h2ooooooo
источник
Это не решит проблему, если у вас не установлены указанные пакеты.
Брайам
1

Для меня сработало переустановить зависимость. Это тот случай, когда установленная версия более поздняя, ​​чем последняя (что показывает synaptic). На самом деле это эквивалентно разрешению synaptic понижать пакет зависимостей.

Еще одна вещь, которая работала, это использование «aptitude»:

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 для 32-разрядных или .deb для 64-разрядных .

Уилф
источник