添加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

    然后确保 restricteduniverse 存储库已启用。 击中 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/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=yes dist-upgrade

    如果它不能解决冲突,它将退出:

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

    逐个删除持有的包,运行 dist-upgrade 每次,直到没有更多的持有包裹。 然后重新安装任何需要的软件包。 请务必使用 --dry-run 选项,以便您充分了解后果:

    sudo apt-get remove--dry-run package-name

    由于删除您尝试安装的软件包可能并不理想,您也可以尝试找到一个存储库,其中包含满足依赖关系所需的软件包。

最后,如果所有其他方法都失败了,您可以尝试自己满足依赖关系,或者通过查找和安装必要的软件包,或者从源代码安装它们,然后创建"黛布"给他们的包裹。

禁用/删除/清除PPAs:

PPAs(个人包存档)是托管在 N.发射器. 您可以使用PPAs安装或升级官方Ubuntu存储库中不可用的软件包。

未满足依赖关系的最常见原因之一是Ppa,特别是用于升级Ubuntu存储库中的现有软件包时。 要解决问题,您有三个选项:禁用,清除(恢复到Ubuntu存储库中的原始软件包)或删除PPA。

  • 禁用:

    禁用PPA意味着不再更新从该PPA安装的软件包。 要禁用PPA:打开 Software Center > Edit > Software Sources 或,

    击中 Alt+F2 然后跑 software-properties-gtk.

    点击 Other Software tab,你会看到每个PPA在这里有两行,一个用于编译的包,一个用于源, Uncheck 两行禁用PPA。 在这里,您还可以添加和删除Ppa。

  • 清除,清除:

    清除PPA意味着将选定PPA中的软件包降级到官方Ubuntu存储库中的版本,并禁用该PPA。 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净化:

sudo ppa-purge ppa:someppa/ppa

如果'ppa-purge'命令由于某种原因失败,除非重新启用PPA,否则无法再次运行'ppa-purge'(要启用PPA,请按照与禁用PPA和 Check 特定PPA的两条线来启用它)。

注意事项: PPA Purge 不删除PPAs(可能在未来),所以你必须手动删除PPA。

  • 移走:

    如果从PPA安装的软件包在官方Ubuntu存储库中不存在,则使用 PPA Purge 不推荐,因为没有什么可以降级和 PPA Purge 也不会删除它。 要删除PPA和已安装的软件包,请运行以下命令:(如果不想删除已安装的软件包,请忽略第一个命令)

    sudo apt-get autoremove--purge package-namesudo add-apt-repository--remove ppa:someppa/ppasudo apt-get autoclean

或者,您可以使用 Y PPA Manager 禁用/删除/清除PPA(答案末尾的详细信息)。

预防措施:

那么我们如何避免这种情况发生呢?

  • 保持Ubuntu最新。 Ubuntu会在更新可用时自动通知,您也可以通过点击检查可用的更新 Session Indicator 在统一小组:

    或者,打 Alt+Ctrl+T 打开终端并运行以下命令:

    sudo apt-get updatesudo apt-get upgrade

    更新:将可用软件包列表与源存储库中的服务器同步。升级:下载和安装任何新版本的已安装软件包。

  • 如果您决定将其他存储库添加到源。列表,确保存储库意味着与Ubuntu一起工作(并且已知工作)。 不是为与您的Ubuntu版本一起使用而设计的存储库可能会在您的系统中引入不一致,并可能迫使您重新安装。 另外,请确保您确实需要添加外部存储库,因为您正在寻找的软件包可能已经被引入到官方存储库中! 资料来源
  • 删除重复的Ppa。 Y PPA Manager (答案末尾的安装指南)可以轻松扫描和删除重复的Ppa。

    • 击中 Alt+F2 然后跑 y-ppa-manager 要打开Y PPA管理器。
    • 一旦打开,双击或点击 EnterAdvanced.
    • 在结果窗口中选择 Scan and remove duplicate PPAs 然后单击确定。

enter image description here

寻求帮助:

上寻求帮助时 Askubuntu的 或任何其他帮助论坛,您应该在您的问题中包含以下命令的输出:

  • 实际误差的输出:

    sudo apt-get install package-name
  • 这将显示您的来源。名单:

    cat/etc/apt/sources。名单
  • 这将显示Ppa列表(如果有的话):

    cat/etc/apt/sources。名单。d/*

其他来源:


Y PPA经理: Yppa经理是一个一站式商店为您的所有PPA需要.

y ppa manager

以下是它的一些功能:

  • 在所有Launchpad Ppa中搜索软件包
  • 在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-cache

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的fix-broken模式

sudo apt-get -f install

这将导致apt扫描丢失的依赖项并从存储库中修复它们

如果输出指出未安装或升级任何新内容,则表示已失败。


检查是否启用了所有必需的源

类型 gksu software-properties-gtk 你会得到这个窗口

确保所有源都已启用。

接下来,转到其他软件选项卡并检查要安装的软件所需的Ppa是否在那里并已启用。 另外,尝试禁用一些可能有损坏包的PPAs

现在,快跑 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清除

sudo ppa-purge ppa:someppa/ppa  

Y-PPA经理

Y-PPA管理器是一个gui应用程序,它可以帮助您管理PPA和各种问题

要安装它

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

sudo apt-get update

sudo apt-get install y-ppa-manager

考虑这个问题, apt 因此,请使用这些命令

sudo su

32位:

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

64位:

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

现在输入 y-ppa-manager

你会看到这个窗口

双击高级,你会得到这个窗口

执行以下以黑色概述的任务


预防胜于治疗

预防比在AskUbuntu上搜索这个问题更好:D

所以,这里是保证你安全的指导方针

让您的系统保持最新状态

始终定期运行以下命令

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

或者,您始终可以将Update Manager与此命令一起使用

gksu update-manager

只使用受信任的PPA

也只能使用Ppa的意思是在Ubuntu上使用,只能使用ppa的可信来源。 事实上,软件包可能已经在ubuntu存储库中了

当事情良好时备份并稍后恢复

为此,您需要Y-PPA-Manager。 上面给出了安装它的步骤。

运行此命令以打开Y-PPA-Manager

y-ppa-manager

你会看到这个窗口

双击高级,你会得到这个窗口

运行这个:

你会被要求保存一个焦油。gz文件与一个类似于下面的对话框. 将其保存在另一个分区或安全的地方

稍后,当您需要再次恢复它时,请按照类似的步骤操作,当您进入高级对话框时,单击此:

系统会要求您从以前保存的备份中恢复,并使用类似于下面的对话框


还是不工作?

包依赖性错误并不总是通用的,并且取决于要安装的包。

如果遵循修复错误的所有步骤对您不起作用,您可以随时询问 问问Ubuntu

以下是您需要发布的输出的一些命令

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的冲突解决程序将引导您完成安装/删除/升级/等软件包的可能组合,以满足您请求的操作而不会发生冲突。 即使apt无法找到解决方案,这通常也可以成功。 作为Ubuntu用户,通常不会出现需要您调查安装特定软件包的原因或导致冲突的情况,但随着您更多地使用系统,这几乎是不可避免的。

>package1:Depends:package2(=1.8)but1.7.5-1ubuntu1is to be installed

消息的解释:

  1. 为了完成安装,package1需要package2。
  2. >package2必须在版本=1.8中提供
  3. 包管理器检查了所有存储库,只找到了可以安装的版本1.7.5-1ubuntu1,它不会这样做,因为它是<1.8

修复

这个问题没有单一的正确答案,也没有简单的答案。

有很多情况下,为什么会发生这种情况,并且必须调查所有选项并尝试解决导致此错误的先决条件。

场景A:

>>您可以访问的所有存储库都没有版本=1.8中的package2,因此您必须找到一个可以访问的存储库。 如果您无法找到版本=1.8的存储库,那么您可能必须从源代码构建和安装package2。 然后尝试安装package1。

如果您想知道如何从源代码构建包,请查看其他问题/答案或发布新的问题/答案。

方案B:

>存储库确实在版本=1.8中包含package2,但包管理器仍然希望安装旧版本(1.7.5)。

这样做的原因可能是package2的更高版本是由一些较新的技术构建的,而您已经安装的其他软件包不支持这些技术。

>这可能根本无法解决。 您可以尝试使用apt或synaptic并查找存储库中可用的所有版本的package2,并尝试安装特定版本=1.8

>如果你有其他不兼容的软件包,你这样做,你会得到一个类似的错误消息的列表,所有其他软件包,阻止package2=1.8的安装。

>>>在这种情况下,你有一个更大的问题。 你想安装package1,它需要package2为=1.8,但package2在version=1.8中需要package3在version=6.7中,并且你有package3版本6.3

问题是,如果可能的话,包管理器(APT)会尝试自动解决所有这些依赖关系。 当它说这是不可能的(并且像问题中那样发出消息),那么你应该信任它。

如果你决定不信任包管理器,如果你确信你不会有问题,那么你可以尝试强制安装所有软件包的特定所需版本,一个接一个,并希望可以。

请注意,对系统包执行此操作可能会产生严重的问题。 您可以将自己锁定在系统之外,阻止关键服务等。

方案C:

无论问题的原因是什么,您都可以随时设置手动编译,并从源代码构建所需的软件包及其所有依赖项。 使用此选项,您可以将构建的内容保留在单独的目录中,并将其保留在系统路径之外,以便它不会与系统产生冲突。 这可能是最干净的解决方案,有时可以更快地做到。

场景D:

包管理器可以访问有关包的过时信息,因此无法找到解决方案。 看看其他答案。

场景E:

包管理器在依赖解析代码中有一个错误。

你必须调查事实确实如此,然后发出错误请求。

...

场景Z:

可能还有其他情况。

例如,包维护者可能是错误的,并且没有检查package1即使与package2<1.8版本一起工作,并且在规范中他们设置了错误的依赖关系。

每当您获得有关未满足依赖关系的eror时,都需要遵循这些方法

按照说明操作后,尝试安装软件。 至少这些方法之一 应该 为你工作

1. 在尝试任何新命令或添加任何新ppa之前,请尝试此操作

清理apt缓存:

sudo apt-get clean

清理任何未使用的依赖项:

sudo apt-get autoremove

更新apt-cache

sudo apt-get update

这将删除所有缓存并下载新的缓存。 这样做应该是为了获得新的缓存包和更新。

2. 试试 sudo apt-get install -f.

它可能会给出一些关于删除和安装软件包的建议,做一些似乎合理的事情。

3. 更改 Download ServerSoftware Sources 因为有时服务器上的文件已损坏。

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的稳定版本。

7 还要确保您启用了所有官方存储库(在 Software Sources)

enter image description here

请不要启用 Proposed Updates 因为它们是为测试/开发人员准备的。

enter image description here


正如道格所说:

通常解决这个问题的最佳第一步是确定 <pkg1> &安培; <pkg2>.

>>另外没有注意到的是,在许多情况下,如果不是大多数情况下,"要安装的东西"真的意味着"安装的东西",如果没有其他工作,应该尝试删除(如第5点)。


我会继续增加更多的东西来解决 unmet dependencies.

对于大多数情况下,通过安装包 aptitude 将解决未满足dependencies.By 违约情况 aptitude 软件包没有安装在您的pc.So 首先通过运行安装,

sudo apt-get updatesudo apt-get install aptitude

然后,

sudo aptitude install packagename

例如,

    avinash@avinash-Lenovo-IdeaPad-Z500:~$sudo apt-get install ubuntu-sdkReading软件包列表。.. 别依赖树读取状态信息。.. 无法安装DoneSome软件包。 这可能意味着您遇到了一个不可能的情况,或者如果您正在使用unstabledistribution,则某些所需的软件包尚未创建或已从传入中移出。以下信息可能有助于解决这种情况:以下软件包具有未满足的依赖项:ubuntu-sdk:Depends:qtcreator-plugin-ubuntu但它不会被安装:无法纠正问题,您已经持有损坏的软件包。

通过安装软件包 aptitude

阿维纳什@阿维纳什-联想-多款一体机-Z500:~$sudo才能安装ubuntu-sdkThe以下新的包装:apparmor-easyprof{个}apparmor-easyprof-ubuntu{个}在{个}建立必要的{个}击{个}点apparmor{个}点击-dev{个}点击-doc{个}córdoba-ubuntu-2.8córdoba-ubuntu-2.8例{个}debhelper{个}devscripts{个}dh-apparmor{个} dh-请{个}发行版信息数据{个}是这样的话-dev{个}dput{个}g++{个}g++-4.8{个}geoclue吉普赛{个}libalgorithm-diff-perl{个}libalgorithm-diff-xs-perl{个}libalgorithm合并-perl{个}libboost-filesystem1.53.0{个}libboost程序选择1.53.0{个}libboost-regex1.53.0{个}libbotan-1.10-0{个}libdee-qt5-3{个}libdistro-info-perl{个}libexporter-lite-perl{个}libglib2.0-dev{个}libgstreamer-插件-base1.0-dev{个}libgstreamer1.0-dev{个}libgypsy0{个}libhud2{个}libio-弦-perl{个}libjs。。{个}libjs-sphinxdoc{个}libjs下划线{个}liblockdev1{个}libmail-sendmail-perl{个}libparse-debcontrol-perl{个}libpcre3-dev{个}libpcrecpp0{个}libpoppler-qt5-1{个}libqdjango-db0{个}libqgsttools-p1{个}libqt5clucene5{个}libqt5contacts5{个} libqt5declarative5{个}libqt5designer5{个}libqt5designercomponents5{个}libqt5feedback5{个}libqt5help5{个}libqt5location5-插件{个}libqt5multimedia5{个}libqt5multimedia5-插件libqt5multimediaquick-p5{个}libqt5multimediawidgets5{个}libqt5organizer5{个}libqt5qml-graphicaleffects{个}libqt5script5libqt5scripttools5{个}libqt5svg5{个}libqt5svg5-dev libqt5systeminfo5{个}libqt5v8-5-dev libqt5versit5{个}libqt5versitorganizer5{个}libqt5webkit5-dev libqt5webkit5-qmlwebkitplugin{个}libqt5xmlpatterns5{个} libqt5xmlpatterns5-dev般++-4.8-dev{个}libsys-hostname长perl{个}libthumbnailer0{个}libu1db-qt5-3{个}libunity-行动-qt1{个}libupstart应用程序launch1{个}libusermetricsinput1{个}libxml2-dev{个}libxslt1-dev{个}宝debconf{个}python3-apparmor击{个}python3击{个}python3-魔术{个} qmlscene qt3d5-dev qtbase5-doc{个}qtcreator{个}qtcreator-doc{个}qtcreator件-ubuntu{个}qtcreator件-ubuntu--共同{个}qtdeclarative5账户件qtdeclarative5-córdoba-2.8件{个}qtdeclarative5-开发工具qtdeclarative5-doc-html{个}qtdeclarative5-folderlistmodel件qtdeclarative5-friends0.2qtdeclarative5-本地存储件qtdeclarative5颗粒件qtdeclarative5-poppler1.0qtdeclarative5-qtaudioengine件qtdeclarative5-qtfeedback件{个}qtdeclarative5-qtlocation件qtdeclarative5-qtmultimedia件{个}qtdeclarative5-qtorganizer件qtdeclarative5-qtquick2件{个}qtdeclarative5-qtsensors件qtdeclarative5-u1db1.0qtdeclarative5-ubuntu-ui-演员-浏览器的插件{个}qtdeclarative5-ubuntu-ui-演员-浏览器的插件资产{个}qtdeclarative5-ubuntu-ui-toolkit-插{个}qtdeclarative5-团结-行动-插{个}qtdeclarative5-usermetrics0.1qtdeclarative5窗口件{个}qtdeclarative5-xmllistmodel件qtgraphicaleffects5-doc{个}qtlocation5-dev{个}qtmultimedia5-dev qtmultimedia5-doc{个}qtmultimedia5-doc-html{个}qtscript5-dev qtscript5-doc{个}qtscript5-doc-html{个}qtsensors5-dev{个}qtsvg5-doc{个}qtsvg5-doc-html{个}qttools5-dev qttools5-开发工具qttools5-doc{个} qtwebkit5-doc-html{个}schroot{个}schroot共{个}sqlite3{个}ubuntu-html5-容器ubuntu-html5sdk{ab}ubuntu-html5的主题{个}ubuntu-html5的主题,例ubuntu-sdk ubuntu-sdk库ubuntu-sdk-lib-dev{个}ubuntu-ui-toolkit-doc{个}ubuntu-ui-toolkit-实例{个}ubuntu-ui-toolkit-主题{个} 统一行动-doc{个}新兴应用程序启动{个}新兴应用程序的启动工具{个}usermetricsservice{个}wdiff{个}zlib1g-dev{个}以下的包裹会被升级:cpp-4.8海湾合作委员会-4.8海湾合作委员会-4.8基hud libasan0libatomic1libgcc-4.8-dev libgcc1libglib2.0-0libglib2.0-bin libgomp1libitm1libquadmath0般++6libtsan0 15套餐升级,151新安装,0到删除,并293不会升级。需要获得108MB/126MB的档案。 解压后273MB将被使用。以下软件包具有未满足的依赖项:ubuntu-html5-sdk:Depends: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-ubuntuaccept这个解决方案? [Y/n/q/?]yThe以下新的包装:apparmor-easyprof{个}apparmor-easyprof-ubuntu{个}建立必要的{个}击{个}点apparmor{个}córdoba-ubuntu-2.8debhelper{个}dh-apparmor{个}dh-请{个}是这样的话-dev{个}g++{个}g++-4.8{个}geoclue吉普赛{个}libalgorithm-diff-perl{个} libalgorithm-diff-xs-perl{个}libalgorithm合并-perl{个}libdee-qt5-3{个}libglib2.0-dev{个}libgstreamer-插件-base1.0-dev{个}libgstreamer1.0-dev{个}libgypsy0{个}libhud2{个}libjs。。{个}libmail-sendmail-perl{个}libpcre3-dev{个}libpcrecpp0{个}libpoppler-qt5-1{个}libqdjango-db0{个}libqgsttools-p1{个}libqt5clucene5{个}libqt5contacts5{个}libqt5designer5{个}libqt5designercomponents5{个}libqt5feedback5{个}libqt5help5{个}libqt5location5-插件{个}libqt5multimedia5{个} libqt5multimedia5-插件libqt5multimediaquick-p5{个}libqt5multimediawidgets5{个}libqt5organizer5{个}libqt5qml-graphicaleffects{个}libqt5script5libqt5scripttools5{个}libqt5svg5{个}libqt5svg5-dev libqt5systeminfo5{个}libqt5v8-5-dev libqt5versit5{个}libqt5versitorganizer5{个}libqt5webkit5-dev libqt5webkit5-qmlwebkitplugin{个}libqt5xmlpatterns5{个}libqt5xmlpatterns5-dev般++-4.8-dev{个}libsys-hostname长perl{个}libthumbnailer0{个}libu1db-qt5-3{个} libunity-行动-qt1{个}libupstart应用程序launch1{个}libusermetricsinput1{个}libxml2-dev{个}libxslt1-dev{个}宝debconf{个}python3-apparmor击{个}python3击{个}qmlscene qt3d5-dev qtdeclarative5账户件qtdeclarative5-córdoba-2.8件{个}qtdeclarative5-开发工具qtdeclarative5-folderlistmodel件qtdeclarative5-friends0.2qtdeclarative5-本地存储件qtdeclarative5颗粒件qtdeclarative5-poppler1.0qtdeclarative5-qtaudioengine件qtdeclarative5-qtfeedback件{个}qtdeclarative5-qtlocation件qtdeclarative5-qtmultimedia件{个}qtdeclarative5-qtorganizer件qtdeclarative5-qtquick2件{个}qtdeclarative5-qtsensors件qtdeclarative5-u1db1.0qtdeclarative5-ubuntu-ui-演员-浏览器的插件{个}qtdeclarative5-ubuntu-ui-演员-浏览器的插件资产{个}qtdeclarative5-ubuntu-ui-toolkit-插{个}qtdeclarative5-团结-行动-插{个}qtdeclarative5-usermetrics0.1qtdeclarative5窗口件{个}qtdeclarative5-xmllistmodel件qtlocation5-dev{个}qtmultimedia5-dev qtscript5-dev qtsensors5-dev{个}qttools5-dev qttools5-开发工具sqlite3{个}ubuntu-html5-容器ubuntu-html5的主题{个}ubuntu-html5的主题,例ubuntu-sdk库ubuntu-ui-toolkit-主题{个}新兴应用程序启动{个}新兴应用程序的启动工具{个} usermetricsservice{个}wdiff{个}zlib1g-dev{个}以下的包裹会被升级:cpp-4.8海湾合作委员会-4.8海湾合作委员会-4.8基hud libasan0libatomic1libgcc-4.8-dev libgcc1libglib2.0-0libglib2.0-bin libgomp1libitm1libquadmath0般++6libtsan0 15套餐升级,108新安装,0到删除,并293不会升级。需要获得27.1MB/45.8MB的档案。 解压后104MB将used.Do 你想继续吗? [Y/n/?] 

我的答案与上面的rick相似。

使用 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]?

优秀的答案! 但今天我的案子似乎和你的不一样。 这是我的建议。

问题:

我未能在ubuntu10.10中安装apache2。

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 apache2apache2.2-common'.

看到了吗? apache2.2-common来自上一步的错误日志。

最后我发现有一个像这样的依赖链:

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

对于前3个软件包,apt-get日志告诉我"不会安装",

但是对于最后一个包,它显示'libaprutil1-ldap:Depends:libaprutil1(=1.3.9+dfsg-3build1)但1.3.9+dfsg-3ubuntu0.10.10.1是要安装的'

我有一个不同的版本存在于我的lib,所以:

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

然后按检查按钮

4.类型 ctrl+alt+t 打开终端和类型 sudo apt-get install -f

5.使用ppa-purge清除最近添加的ppa ppa-净化

这个程序从你的软件源中禁用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安装:

sudo apt-get install [package]

...."啊! 让我们扭动你的手臂,直到你大喊"叔叔!"'

这在我多年的linux使用中很少发生,但我发现自己使用了这种方法,并且成功了。 这是我一个月前与包裹的斗争的一个例子 mysql-client/mysql-server. 在十几次尝试使用mysql-server重置我的root密码失败后(甚至通过--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, " 是要安装"真正的意思"

忘记确切的包名称。 这与这个问题无关。 我试图创建一个[规范问题](Where to post a "canonical answer" when it's not in response to a specific question? - Meta Stack Exchange

@doug补充说,作为答案而不是评论,这是相当不错的! :slight_smile:

哦,我的故障排除问题在哪里? :D

@Braiam Whaaaat确实有一个观点,这个问题并不是特定于PPA的,很多答案也不是。 我知道前两个答案有点压倒其他人,但我不确定改变问题的性质是正确的解决方案,特别是因为你取消了其他答案。 我现在离开它,因为我没有更好的答案,但这是值得考虑的。

事实上,如果你看到每个答案或多或少都有同样的事情。 他们可以合并到社区维基吗?

在我的情况下,这种类型的问题是由于软件和更新下的所有源都禁用了更新而导致的。

见http://unix.stackexchange.com/a/121185/4671

@whaa正如你在meta中看到的那样discussion,这一变化是有意的,没有人提出问题。 尽管你可能会认为,改变是必要的,以防止更多的滥用这个问题,正如我在元讨论中指出。