Как мне устранить неудовлетворенные зависимости после добавления PPA?

Иногда, когда я устанавливаю что-то, я получаю ошибку, подобную следующей:

Some packages could not be installed. This may mean that you haverequested an impossible situation or if you are using the unstabledistribution that some required packages have not yet been createdor 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 installedE: Unable to correct problems, you have held broken packages.

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

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-получить автоочистку

    apt-get clean очищает локальный репозиторий от извлеченных файлов пакетов (файлов .deb). Он удаляет все, кроме файла блокировки, из /var/cache/apt/archives/ и /var/cache/apt/archives/partial/. 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 --имя пакета для сухого запуска

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

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

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

PPA (Личный архив пакетов) - это репозитории, размещенные на Панель запуска. Вы можете использовать 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 делает именно это. Чтобы установить PPA Purge, выполните следующую команду:

    sudo apt-get установить ppa-очистить

Но, учитывая вопрос 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-очистить ppa:someppa/ppa

Если по какой-либо причине команда 'ppa-purge' завершается ошибкой, вы не сможете снова запустить 'ppa-purge', если вы не включите PPA повторно (чтобы включить PPA, выполните те же действия, что и при отключении PPA и Check обе строки конкретного PPA, чтобы включить его).

Примечание: PPA Purge не удаляет PPAs (может быть, в будущем), так что вам придется вручную удалить PPA.

  • Удалять:

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

    sudo apt-получить автоматическое удаление --очистить пакет-namesudo добавить-apt-репозиторий --удалить ppa:someppa/ppasudo apt-получить автоочистку

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

Превентивные Меры:

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

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

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

    sudo apt-получить обновления sudo apt-получить обновление

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

  • Если вы решите добавить другие репозитории в sources.list, убедитесь, что репозиторий предназначен для работы (и, как известно, работает) с Ubuntu. Репозитории, которые не предназначены для работы с вашей версией Ubuntu, могут привести к несоответствиям в вашей системе и могут вынудить вас выполнить повторную установку. Кроме того, убедитесь, что вам действительно нужно добавить внешние репозитории, поскольку пакеты программного обеспечения, которые вы ищете, возможно, уже были введены в официальные репозитории! Источник
  • Удалите дублирующиеся PPA. Y PPA Manager (руководство по установке в конце ответа) позволяет легко сканировать и удалять дубликаты PPA.

    • Удар Alt+F2 и бежать y-ppa-manager чтобы открыть Y PPA Manager.
    • После открытия дважды щелкните или нажмите Enter на Advanced.
    • В появившемся окне выберите Scan and remove duplicate PPAs и нажмите кнопку ОК.

enter image description here

Получение помощи:

При обращении за помощью по Askubuntu или на любом другом справочном форуме, вы должны включить в свой вопрос вывод следующих команд:

  • Вывод фактической ошибки:

    sudo apt-получить имя установочного пакета
  • Это покажет ваши источники.список:

    cat /etc/apt/sources.list
  • При этом будет показан список PPA (если таковые имеются).:

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

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


Y Менеджер PPA: 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-managersudo apt-get updatesudo 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

Примечание: Все команды, которые запрашиваются для выполнения, должны выполняться в терминале, который может быть открыт любым 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 кроме того.блокировка файлов. Это рекомендуется

sudo apt-get autoclean

Это сканирует папки /var/cache/apt/archives/ и /var/cache/apt/archives/partial и проверяет, находится ли пакет все еще в репозиториях, и удаляет те, которые не находятся


Исправление зависимостей

Использование исправленного apt-сломанного режима

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

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

sudo ppa-purge ppa:someppa/ppa  

Менеджер Y-PPA

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 из надежных источников. Фактически, пакет может уже находиться в репозиториях ubuntu

Резервное копирование, когда все хорошо, и восстановление его позже

Для этого вам нужен Y-PPA-Менеджер. Шаги по его установке приведены выше.

Запустите эту команду, чтобы открыть Y-PPA-Manager

y-ppa-manager

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

Дважды щелкните на дополнительно, и вы получите это окно

Запустите это:

Вас попросят сохранить tar.gz файл с диалоговым окном, аналогичным приведенному ниже. Сохраните его в другом разделе или в безопасном месте

Позже, когда вам понадобится восстановить его снова, выполните аналогичные действия, и когда вы перейдете в диалоговое окно "Дополнительно", нажмите на это:

Вам будет предложено восстановить данные из предыдущей резервной копии, которую вы сохранили ранее, с помощью диалогового окна, аналогичного приведенному ниже


Все еще не работает?

Ошибки зависимости пакета не всегда являются общими и зависят от устанавливаемого пакета.

Если выполнение всех действий, приведенных для исправления ошибки, не сработает для вас, вы всегда можете обратиться по Спросите Убунту

Вот несколько команд, которые вам нужны для публикации выходных данных

sudo apt-get install packagename

и

cat /etc/apt/sources.list

и

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

(Благодаря Башарат Сиал)

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

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

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

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

>пакет1 : Зависит: пакет2 (= 1.8), но необходимо установить 1.7.5-1ubuntu1

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

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

Чинить

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

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

Сценарий А:

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

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

Сценарий В:

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

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

>Возможно, это вообще невозможно исправить. Вы можете попробовать использовать apt или synaptic и найти все версии package2, доступные в репозиториях, и попытаться установить определенную версию = 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, и в спецификации они установили неправильные зависимости.

В большинстве случаев установка пакета осуществляется с помощью aptitude устранит неудовлетворенные зависимости.По умолчанию aptitude пакет не был установлен на вашем pc.So сначала установите его, запустив,

sudo apt-get updatesudo apt-get install aptitude

затем,

sudo aptitude install packagename

например,

    avinash@avinash-Lenovo-IdeaPad-Z500:~$ sudo apt-get устанавливает списки пакетов ubuntu-sdkReading... Не создавайте дерево зависимостей, считывающее информацию о состоянии... Не удалось установить некоторые пакеты. Это может означать, что вы столкнулись с невозможной ситуацией или, если вы используете нестабильное распределение, некоторые требуемые пакеты еще не были созданы или удалены из Incoming.Следующая информация может помочь разрешить ситуацию: Следующие пакеты имеют неудовлетворенные зависимости: ubuntu-sdk : Depends: qtcreator-plugin-ubuntu, но он не будет установлен: Не удалось устранить проблемы, у вас есть поврежденные пакеты.

Установка пакета с помощью aptitude

Авинаш@Авинаш компании Lenovo-ноутбук IdeaPad-Z500:~$ судо способность установить Ubuntu-sdkThe следующие новые пакеты будут установлены: в AppArmor-easyprof{а} в AppArmor-easyprof-Ubuntu с{а} на{А} сборки-важное значение{а} Нажмите{а} щелчок-то AppArmor{а} нажми Дев{а} выберите-док{а}-Кордова-Убунту-2.8 Кордова-Убунту-2.8-примеры{а} утилиты{а} devscripts{а} Dн-то AppArmor{а} ЦТ-сделать {} дистрибутив-информация-сведения{а} с dpkg-dev и{а} действия dput{А} Г++{А} и G++-4.8{а} geoclue-цыганка{а} libalgorithm-diff в жемчужно{а} libalgorithm-diff-файл-хз-Перл{а} libalgorithm-слияние-на Perl{а} libboost-filesystem1.53.0{а} libboost-программы-параметров1.53.0{а} libboost-regex1.53.0{а} libbotan-1.10-0{а} libdee-qt5-3{а} libdistro-информация-Перл{а} libexporter-Lite в жемчужно{а} libglib2.0-dev и{А} libgstreamer-Плагины-base1.0-dev и{А} libgstreamer1.0-dev и{А} libgypsy0{а} libhud2{а} libio-тягучий жемчужно{а} libjs-jQuery и{А} libjs-sphinxdoc{а} libjs-подчеркивание{а} liblockdev1{а} libmail-sendmail-а,-Перл{а} libparse-debcontrol жемчужно{а} libpcre3-dev и{А} libpcrecpp0{а} libpoppler-qt5-1{а} libqdjango-db0{а} это основные типы файловых Р1{а} libqt5clucene5{а} libqt5contacts5{а} libqt5declarative5{а} libqt5designer5{а} libqt5designercomponents5{а} libqt5feedback5{а} libqt5help5{а} libqt5location5-плагины{а} libqt5multimedia5{а} libqt5multimedia5-Плагины libqt5multimediaquick-П5{а} libqt5multimediawidgets5{а} libqt5organizer5{а} libqt5qml-graphicaleffects{а} libqt5script5 libqt5scripttools5{а} libqt5svg5{а} libqt5svg5-Дев libqt5systeminfo5{а} libqt5v8-5-Дев libqt5versit5{а} libqt5versitorganizer5{а} libqt5webkit5-Дев libqt5webkit5-qmlwebkitplugin{а} libqt5xmlpatterns5{а} libqt5xmlpatterns5-дев с libstdc++-4.8-dev и{А} библиотечной системы-хоста-давно на Perl{а} libthumbnailer0{а} libu1db-qt5-3{а} libunity-действие-qt1{а} libupstart-приложение-launch1{а} libusermetricsinput1{а} библиотеке libxml2-dev и{А} libxslt1-dev и{А} по-конференции debconf{а} питон3-то AppArmor-нажмите кнопку{а} питон3-нажмите кнопку{а} питон3-волшебный{а} qmlscene qt3d5-Дев qtbase5-DOC и{А} qtcreator{а} qtcreator-DOC и{А} qtcreator-плагин-Убунту{а} qtcreator-плагин-Убунту-распространенная{а} qtdeclarative5-учетные записи-плагин qtdeclarative5-Кордова-2.8-плагин{а} qtdeclarative5-dev и-инструменты qtdeclarative5-DOC в формат HTML{а} qtdeclarative5-folderlistmodel-плагин qtdeclarative5-friends0.2 qtdeclarative5-localStorage с-плагин qtdeclarative5-частицы-плагин qtdeclarative5-poppler1.0 qtdeclarative5-qtaudioengine-плагин qtdeclarative5-qtfeedback-плагин{а} qtdeclarative5-qtlocation-плагин qtdeclarative5-qtmultimedia-plugin и{А} qtdeclarative5-qtorganizer-плагин qtdeclarative5-qtquick2-plugin и{А} qtdeclarative5-qtsensors-плагин qtdeclarative5-u1db1.0 qtdeclarative5-Ubuntu с-интерфейс-дополнительно-браузера-плагин{а} qtdeclarative5-Ubuntu с-интерфейс-дополнительно-браузера-плагин-активов{а} qtdeclarative5-Ubuntu-что пользовательский интерфейс-набор инструментов-плагин{а} qtdeclarative5-единство-действия-плагин{а} qtdeclarative5-usermetrics0.1 qtdeclarative5-window-плагин{а} qtdeclarative5-xmllistmodel-плагин qtgraphicaleffects5-док{а} qtlocation5-Дев{а} qtmultimedia5-dev и qtmultimedia5-DOC и{А} qtmultimedia5-DOC в формат HTML{а} qtscript5-Дев qtscript5-док{а} qtscript5-док-HTML с{а} qtsensors5-Дев{а} qtsvg5-док{а} qtsvg5-док-HTML с{а} qttools5-dev и qttools5-dev и-инструменты qttools5-DOC и{А} qtwebkit5-док-HTML с{а} chroot-окружение{а} chroot-окружение-распространенная{А} и sqlite3{а} Убунту-поддержка HTML5-контейнер с Ubuntu-HTML5 и СДК{АВ} в Ubuntu-HTML5 на тему{а} Убунту-поддержка HTML5-темы-примеры из Ubuntu-SDK для Ubuntu с-СДК-библиотек с Ubuntu-СДК-библиотеки-Дев{а} Убунту-интерфейс-набор инструментов-док{а} Убунту-интерфейс-набор инструментов-примеры{а} Убунту-уй-инструментарий-тематические{а} единство-действия-док{а} выскочка-приложение-запуск{а} выскочка-приложения-запуска-инструменты, {а} usermetricsservice{а} wdiff{а} zlib1g-dev и{А} Будут обновлены следующие пакеты: cpp-4.8 gcc-4.8 gcc-4.8-базовый 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/?] УНА следующие новые пакеты будут установлены: в AppArmor-easyprof{а} в AppArmor-easyprof-Ubuntu с{А} сборки-важное значение{а} Нажмите{а} щелчок-то AppArmor{а}-Кордова-Убунту-2.8 утилиты{а} Dн-то AppArmor{а} ЦТ-сделать {} команды dpkg-dev и{А} Г++{А} и G++-4.8{а} geoclue-цыганка{а} libalgorithm-diff в жемчужно{а} libalgorithm-diff-файл-хз-Перл{а} libalgorithm-слияние-на Perl{а} libdee-qt5-3{а} libglib2.0-dev и{А} libgstreamer-Плагины-base1.0-dev и{А} libgstreamer1.0-dev и{А} libgypsy0{а} libhud2{а} libjs-jQuery и{А} libmail-sendmail-а,-Перл{а} libpcre3-dev и{А} libpcrecpp0{а} libpoppler-qt5-1{а} libqdjango-db0{а} это основные типы файловых Р1{а} libqt5clucene5{а} libqt5contacts5{а} libqt5designer5{а} libqt5designercomponents5{а} libqt5feedback5{а} libqt5help5{а} libqt5location5-плагины{а} libqt5multimedia5{а} libqt5multimedia5-Плагины libqt5multimediaquick-П5{а} libqt5multimediawidgets5{а} libqt5organizer5{а} libqt5qml-graphicaleffects{а} libqt5script5 libqt5scripttools5{а} libqt5svg5{а} libqt5svg5-Дев libqt5systeminfo5{а} libqt5v8-5-Дев libqt5versit5{а} libqt5versitorganizer5{а} libqt5webkit5-Дев libqt5webkit5-qmlwebkitplugin{а} libqt5xmlpatterns5{а} libqt5xmlpatterns5-дев с libstdc++-4.8-dev и{А} библиотечной системы-хоста-давно на Perl{а} libthumbnailer0{а} libu1db-qt5-3{а} libunity-действие-qt1{а} libupstart-приложение-launch1{а} libusermetricsinput1{а} библиотеке libxml2-dev и{А} libxslt1-dev и{А} по-конференции debconf{а} питон3-то AppArmor-нажмите кнопку{а} питон3-нажмите кнопку{а} qmlscene qt3d5-Дев qtdeclarative5-учетные записи-плагин qtdeclarative5-Кордова-2.8-плагин{а} qtdeclarative5-dev и-инструменты qtdeclarative5-folderlistmodel-плагин qtdeclarative5-friends0.2 qtdeclarative5-localStorage с-плагин qtdeclarative5-частицы-плагин qtdeclarative5-poppler1.0 qtdeclarative5-qtaudioengine-плагин qtdeclarative5-qtfeedback-плагин{а} qtdeclarative5-qtlocation-плагин qtdeclarative5-qtmultimedia-plugin и{А} qtdeclarative5-qtorganizer-плагин qtdeclarative5-qtquick2-plugin и{А} qtdeclarative5-qtsensors-плагин qtdeclarative5-u1db1.0 qtdeclarative5-Ubuntu с-интерфейс-дополнительно-браузера-плагин{а} qtdeclarative5-Ubuntu с-интерфейс-дополнительно-браузера-плагин-активов{а} qtdeclarative5-Ubuntu-что пользовательский интерфейс-набор инструментов-плагин{а} qtdeclarative5-единство-действия-плагин{а} qtdeclarative5-usermetrics0.1 qtdeclarative5-window-плагин{а} qtdeclarative5-xmllistmodel-плагин qtlocation5-Дев{а} qtmultimedia5-dev и qtscript5-qtsensors5 Дев-Дев{а} qttools5-dev и qttools5-dev и-инструменты и sqlite3{а} Убунту-поддержка HTML5-контейнер с Ubuntu-HTML5 на тему{а} Убунту-поддержка HTML5-темы-примеры из Ubuntu-СДК-библиотек с Ubuntu-уй-инструментарий-тематические{а} выскочка-приложение-запуск{а} выскочка-приложения-запуска-инструменты, {а} usermetricsservice{а} wdiff{а} zlib1g-dev и{А} Будут обновлены следующие пакеты: cpp-4.8 gcc-4.8 gcc-4.8-базовый 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/?] 

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

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

1. Прежде чем попробовать какую-либо новую команду или добавить какой-либо новый ppa, попробуйте это

Очистка кэша apt:

sudo apt-get clean

Очистка всех неиспользуемых зависимостей:

sudo apt-get autoremove

Обновление apt-кэша

sudo apt-get update

Это приведет к удалению всего кэша и загрузке нового кэша. Это следует сделать, чтобы получить свежие пакеты кэша и более новые обновления.

2. Попробуй sudo apt-get install -f.

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

3. Измените Download Server от Software Sources Потому что иногда файлы на сервере повреждены.

enter image description here
enter image description here
enter image description here

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.

enter image description here

7 Также убедитесь, что у вас включены все официальные репозитории (в Software Sources)

enter image description here

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

enter image description here


Как сказал Дуг:

Обычно лучшим 1-м шагом к решению этой проблемы является определение источника <pkg1> &amp; <pkg2>.

>>Дополнительно не отмечено, что во многих, если не в большинстве случаев, "все, что должно быть установлено" на самом деле означает "все, что установлено", и его следует попытаться удалить, если больше ничего не работает (как в пункте 5).


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

Мой ответ аналогичен приведенному выше ответу Рика.

С помощью 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-devThe 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... DoneBuilding dependency tree       Reading state information... DoneThe following extra packages will be installed:  libcdt4 libgd2-xpm libgraph4 libpathplan4Suggested packages:  libgd-toolsThe following NEW packages will be installed:  libcdt4 libgd2-xpm libgraph4 libgvc5 libpathplan40 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]?

Отличные ответы! Но сегодня мой случай, похоже, отличается от вашего. Вот мой совет.

Проблема:

Мне не удалось установить apache2 в ubuntu 10.10.

rick@wen-VirtualBox:~$ sudo apt-get install apache2Reading package lists... DoneBuilding dependency tree      Reading state information... DoneSome packages could not be installed. This may mean that you haverequested an impossible situation or if you are using the unstabledistribution that some required packages have not yet been createdor 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 installedE: Broken packages

Решение:

Мой способ - добавить зависящий пакет в список установки.

Если 'sudo apt-get install apache2' не удалось, попробуйте 'sudo apt-get install apache2 apache2.2-общий'.

Видишь? apache2.2-общее происходит из журнала ошибок предыдущего шага.

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

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

Для первых 3 пакетов apt-get log сообщил мне, что "не будет установлен",

но для последнего пакета он показывает 'libaprutil1-ldap : Depends: libaprutil1 (= 1.3.9+dfsg-3build1), но необходимо установить 1.3.9+dfsg-3ubuntu0.10.10.1'

У меня есть другая версия, существующая в моей библиотеке, так что:

sudo apt-get remove libaprutil1sudo apt-get install apache2

Теперь все в порядке.

что такое ошибка неудовлетворенных зависимостей

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

Возможные причины

1.Computer is not connected to the Internet2.The repository containing the depandancy package is not enabled3.Package catalog is not updated4.The version of the depandancy in the current repository is old5.Software index is broken6.The depandancy is not available for ubuntu

Давайте попробуем решить эту проблему

  1. Подключение к Интернету :D
  2. Убедитесь, что все репозитории по умолчанию включены

    >-Вы можете легко добавить их в Software Center>>>>-Редактировать - Источники программного обеспечения -Другие источники -Добавить"

    >- Начинайте Software Center.

    >-. В панели перейдите к Edit и выберите Software Sources.

    edit-software-sources

    >-Убедитесь, что все репозитории провереныenter image description here

  3. Обновите каталог программного обеспечения

    нажмите на значок в правом верхнем углу и выберите пункт обновить-доступная запись в меню
    enter image description here

и нажмите кнопку проверкиenter image description here

4.введите ctrl+alt+t чтобы открыть терминал и ввести sudo apt-get install -f

5.Очистите недавно добавленный ppa с помощью ppa-purge ppa-очистка Install ppa-purge

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

Синтаксис

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

Пример

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

enter image description here

Ещётип ctrl+alt+t чтобы открыть терминал и ввести sudo apt-get install -f и следуйте инструкциям на экране

Если все еще возникает ошибка, не стесняйтесь задавать ее в askbuntu

...не забывайте о "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-clientsudo 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 firstsudo apt-get install mysql-clientsudo apt-get build-dep mysql-serversudo apt-get install mysql-server

apt-get autoclean является ключевым в этом решении

Actually “the exact package name”, while not relevant in your question, is extremely relevant to any individual’s issue in this regard. Usually the best 1st step to resolving this is to identify the source of pkg1 & pkg2. This seems to have been overlooked in the answers, most of which are quite good otherwise. Additionally not noted is that in many, if not most cases, " должен быть установлен " на самом деле означает "

Забудьте точное название пакета. Это не имеет отношения к данному вопросу. Я пытаюсь создать канонический вопрос. Таким образом, точный пакет не имеет значения в данном конкретном случае.

@doug Добавь это в качестве ответа, а не комментария, это довольно хорошо! :slight_smile:

О, и где мой вопрос по устранению неполадок? :smiley:

@Braiam Whaaaat действительно прав, хотя вопрос не относится конкретно к PPA, и довольно много ответов тоже не относятся. Я знаю, что два лучших ответа немного превосходят остальные, но я не уверен, что изменение характера вопроса является правильным решением, тем более что вы сводите на нет другие ответы. Я оставляю это пока, так как у меня нет лучшего ответа, но об этом стоит подумать.

В моем случае проблема такого типа была вызвана тем фактом, что обновления были отключены для всех источников в разделе “Программное обеспечение и обновления”.

На самом деле, если вы видите, что каждый ответ содержит более или менее одно и то же. Могут ли они быть объединены в вики сообщества?

Если бы я задал вышеупомянутый вопрос и получил ответ с наивысшим рейтингом, который начинается с “APT - это система управления пакетами …”, я бы отклонил ответ, потому что предложение темы не указывает на понимание проблемы, с которой я столкнулся. Это лучше подходит для полного руководства, и это не то, на что похож хороший ответ. Я бы понизил голос, но я здесь только потому, что читал мета-обсуждение, и я считаю, что в сложившихся обстоятельствах понижение голоса было бы несправедливым (например, нагромождение).

Видишь What information do I need to solve an APT dependency issue? - Unix & Linux Stack Exchange