当前位置: 首页>>技术教程>>正文


添加PPA后,如何解决未满足的依赖关系?

, , , , ,

问题描述

偶尔,当我安装东西时,出现如下错误:

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.

我该如何解决这个问题?

最佳解决方案

APT是Debian和基于它的其他Linux发行版(如Ubuntu)的软件包管理系统。大多数情况下,APT易于安装,删除和更新软件包。在极少数情况下,通常当您在third-party依赖关系中进行混合时,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选项卡下,启用所有存储库。

    apt,software-installation,package-management,ppa,dependencies,ubuntu

  • 未满足依赖关系的一个可能原因可能是包数据库损坏,和/或某些包未正确安装。要解决此问题,请点击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 install -f这里代表“fix broken”。 Apt将尝试纠正错误的依赖关系。如果您手动安装了未满足依赖项的软件包,apt-get将尽可能安装这些依赖项,否则它可能会简单地删除您安装的软件包以解决问题。然后运行:sudo dpkg –configure -a然后再次运行:sudo apt-get -f install如果输出是: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由于删除试图安装的软件包可能并不理想,因此您也可以尝试查找包含软件包的存储库需要满足依赖关系。

最后,如果一切都失败了,你可以尝试通过查找和安装必要的软件包,或者从源代码安装它们,然后为它们创建“deb”软件包来自己满足依赖关系。

禁用/删除/清除PPA:

PPA(个人包档案)是托管在Launchpad上的存储库。您可以使用PPA安装或升级官方Ubuntu存储库中不可用的软件包。

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

  • 禁用:禁用PPA意味着从该PPA安装的软件包不再有更新。禁用PPA:打开Software Center > Edit > Software Sources或者打开Alt + F2并运行software-properties-gtk。点击Other Software标签,你会看到每个PPA在这里有两行,一个用于编译的包,一个用于源,Uncheck两行禁用PPA。在这里您还可以添加和删除PPA。

    apt,software-installation,package-management,ppa,dependencies,ubuntu

  • 清除:清除PPA意味着将所选PPA中的包降级到官方Ubuntu存储库中的版本,并禁用该PPA。 PPA Purge正是如此。要安装PPA Purge,请运行以下命令:sudo apt-get install ppa-purge

但是,考虑到apt问题已被破坏,上述命令将失败。所以使用这个命令

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

要使用PPA清除:

sudo ppa-purge ppa:someppa/ppa

如果’ppa-purge’命令由于某种原因而失败,则除非您的re-enable为PPA,否则无法再次运行’ppa-purge'(要启用PPA,请按照与禁用PPA和Check相同的步骤启用它的特定PPA的两行)。

注意:PPA Purge不会删除PPA(may be in future),因此您必须手动删除PPA。

  • 删除:如果从官方Ubuntu存储库中不存在从PPA安装的软件包,则不建议使用PPA Purge,因为不需要降级并且PPA Purge也不会将其删除。要删除PPA并安装软件包,请运行以下命令:(如果不想删除已安装的软件包,请忽略第一个命令)sudo apt-get autoremove –purge package-name sudo add-apt-repository – 删除ppa:someppa /ppa sudo apt-get autoclean

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

预防措施:

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

  • 让Ubuntu保持最新状态。 Ubuntu会在更新可用时自动通知,您还可以通过单击Unity面板中的Session Indicator来检查可用更新:或者,点击Alt + Ctrl + T以打开终端并运行以下命令:sudo apt-get更新sudo apt-get升级更新:同步您的列表的可用软件包与源存储库中的服务器配合使用。升级:下载&安装任何更新版本的已安装软件包。

    apt,software-installation,package-management,ppa,dependencies,ubuntu

  • 如果您决定将其他存储库添加到sources.list,请确保该存储库能够与Ubuntu一起工作(并且可以正常工作)。不适用于您的Ubuntu版本的存储库可能会在系统中引入不一致,并可能强制您使用re-install。另外,请确保您确实需要添加外部存储库,因为您正在寻找的软件包可能已经被引入官方存储库! Source

  • 删除重复的PPA。 Y PPA Manager(答案结尾的安装指南)可以轻松扫描并删除重复的PPA。

    • 点击Alt + F2并运行y-ppa-manager打开Y PPA管理器。

    • 打开后,双击或点击Advanced上的Enter

    • 在结果窗口中选择Scan and remove duplicate PPAs并单击确定。

apt,software-installation,package-management,ppa,dependencies,ubuntu

获得帮助:

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

  • sudo apt-get安装package-name输出实际错误。

  • cat /etc/apt/sources.list这将显示你的sources.list

  • cat /etc/apt/sources.list.d/*这将显示PPA列表(如果有的话)。

其他来源:


Y PPA Manager:Y PPA Manager是一站式服务,满足您所有的PPA需求。

apt,software-installation,package-management,ppa,dependencies,ubuntu

以下是它的一些功能:

  • 搜索所有Launchpad PPA中的软件包

  • 列出并下载PPA中的软件包

  • 添加/删除/清除PPA

  • 备份和恢复PPA来源

  • 删除重复的PPA来源

要安装Y PPA Manager,请打开Alt + Ctrl + T打开终端并运行以下命令:


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

考虑到这个问题,apt已损坏,请改用这些命令

sudo su

32位:

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

64位:

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

次佳解决方案

Note: All commands asked to be run must be run in the terminal, which can be opened by either Ctrl+Alt+T or searching for terminal in the dash.

它真的坏了吗?

尝试运行以下命令并尝试重新安装您尝试安装的软件

sudo apt-get update

Pre-Perfomance步骤

备份

备份以下文件:

  • /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保留最近下载的包的缓存,以在需要安装时节省带宽。在某些情况下,这可以是counter-productive

现在,要清理它,你有两个选择

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

sudo apt-get -f install

这将导致易于扫描缺失的依赖关系并从存储库中修复它们

如果输出状态显示没有安装或升级新的产品,则失败。


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

输入gksu software-properties-gtk,你会看到这个窗口

apt,software-installation,package-management,ppa,dependencies,ubuntu

确保所有源都已启用。

接下来,转到其他软件选项卡,并检查所需的安装软件的PPA是否存在并已启用。此外,请尝试禁用可能有破包的一些PPA

apt,software-installation,package-management,ppa,dependencies,ubuntu

现在运行sudo apt-get update

尝试立即安装软件

选择一个更好的服务器从下载

输入gksu software-properties-gtk,你会看到这个窗口

apt,software-installation,package-management,ppa,dependencies,ubuntu

点击下拉框中的下载并选择其他

apt,software-installation,package-management,ppa,dependencies,ubuntu

点击选择最佳服务器

apt,software-installation,package-management,ppa,dependencies,ubuntu

运行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

你会看到这个窗口

apt,software-installation,package-management,ppa,dependencies,ubuntu

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

apt,software-installation,package-management,ppa,dependencies,ubuntu

执行以下黑色任务任务

apt,software-installation,package-management,ppa,dependencies,ubuntu


预防胜于治疗

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

所以,这里是保证你安全的准则

保持您的系统up-to-date

请定期运行以下命令

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

你会看到这个窗口

apt,software-installation,package-management,ppa,dependencies,ubuntu

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

apt,software-installation,package-management,ppa,dependencies,ubuntu

运行这个:

apt,software-installation,package-management,ppa,dependencies,ubuntu

系统会要求您保存一个tar.gz文件,其对话框类似于下面的对话框。将它保存在另一个分区或安全的地方

apt,software-installation,package-management,ppa,dependencies,ubuntu

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

apt,software-installation,package-management,ppa,dependencies,ubuntu

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

apt,software-installation,package-management,ppa,dependencies,ubuntu


全部在一个脚本中

快来了


还是行不通?

程序包相关性错误并不总是通用的,取决于要安装的程序包。

如果按照给出的所有步骤修复错误对您不起作用,您可以随时询问Ask Ubuntu

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

sudo apt-get install packagename

cat /etc/apt/sources.list

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

(感谢Basharat Sial)

还有其他需要输出的文件/命令可能是错误特定的,用户可能会在注释中提示您发布文件/命令。

第三种解决方案

到目前为止,这些答案都集中在如何自动解决这个问题上,主要是希望能够自行解决,而不是专注于理解如何调查依赖关系。确保你的软件包列表是最新的,这一点很重要,因为你需要确保一个简单的更新或清除缓存在深入挖掘之前不能解决问题。但是,如果幕后的所有事情都按照它应该的方式工作,那么学习如何理解依赖关系是最重要的。有时候,依赖关系的层次看起来很压倒,但这个概念很简单,也是了解如何在Ubuntu系统中安装/卸载软件的关键。

我强烈建议aptitude给任何使用像Ubuntu这样基于.deb的系统的人。其树形结构允许您轻松浏览依赖关系,包括推荐和建议的包,以及可视化冲突和未满足的依赖关系。当apt-get没有提供简单的解决方案,并且通常可视化依赖关系时,它是一个非常宝贵的工具。 (Synaptic也可在Ubuntu中使用,但我觉得它不那么直观。)

Aptitude还提供了一个冲突解决程序,它将引导您完成已安装/已移除/升级/等软件包的所有可能组合,以满足所有要求,而不会出现冲突或问题。即使apt无法找到解决方案,这也可以成功。作为一名Ubuntu用户,通常不会出现需要您调查为什么要安装该特定软件包的情况,但在您使用该系统时,这种情况几乎是不可避免的。

第四种方案

package1:取决于:package2(> = 1.8),但要安装1.7.5-1ubuntu1

消息的解释:

  1. 为了完成安装,package1需要package2。

  2. package2必须在版本> = 1.8中可用

  3. 软件包管理器检查了所有的软件仓库,只发现可以安装的版本1.7.5-1ubuntu1,这是不可行的,因为它是< 1.8

Fix

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

为什么会出现这种情况有很多种情况,需要调查所有选项并尝试解决导致此错误的先决条件。

情景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在版本> = 1.8中需要package3在版本> = 6.7中,并且你有package3版本6.3

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

如果您决定不信任软件包管理器,并且确信自己没有问题,那么您可以尝试强制安装所有软件包的特定版本,并且希望一切顺利。

谨防为系统软件包执行此操作可能会造成严重问题。您可以将自己锁定在系统之外,阻止关键服务等。

情景C:

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

情景D:

软件包管理器可以访问out-dated有关软件包的信息,因此找不到解决方案。看看其他答案。

情景E:

程序包管理器在依赖关系解析代码中存在一个错误。

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

情景Z:

可能还有其他场景。

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

第五种方案

无论何时您遇到未满足依赖关系时都需要遵循这些方法

按照说明尝试安装软件。至少有一种方法应该适合你

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

清理apt缓存:

sudo apt-get clean

清理任何未使用的依赖关系:

sudo apt-get autoremove

更新apt-cache

sudo apt-get update

这将删除所有缓存并下载新的缓存。这应该完成以获得新鲜的缓存包和更新的更新。

2.试试sudo apt-get install -f

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

3.从Software Sources更改Download Server由于有时服务器上的文件已损坏。

apt,software-installation,package-management,ppa,dependencies,ubuntu

apt,software-installation,package-management,ppa,dependencies,ubuntu

apt,software-installation,package-management,ppa,dependencies,ubuntu

如果你之前为破坏的依赖项添加了一个外部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。

apt,software-installation,package-management,ppa,dependencies,ubuntu

7还要确保你已经启用了所有的官方仓库(在Software Sources中)

apt,software-installation,package-management,ppa,dependencies,ubuntu

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

apt,software-installation,package-management,ppa,dependencies,ubuntu


正如道格所说:

Usually the best 1st step to resolving this is to identify the source of <pkg1> & <pkg2>.

另外没有指出的是,在很多情况下,即使不是大多数情况下,“<无论>将被安装”真的意味着“<无论>是否安装”,并且应该试图被删除,如果没有其他工作(如点5) 。


我会继续添加更多的东西来修复unmet dependencies

第六种方案

在大多数情况下,通过aptitude安装软件包将解决未满足的依赖关系。默认情况下,aptitude软件包未安装在您的PC上。因此,首先通过运行安装它,

sudo apt-get update
sudo apt-get install aptitude

然后,

sudo aptitude install packagename

例如,

    
avinash@avinash-Lenovo-IdeaPad-Z500:~$ sudo apt-get install ubuntu-sdk
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:
 ubuntu-sdk : Depends: qtcreator-plugin-ubuntu but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

通过aptitude安装软件包


avinash@avinash-Lenovo-IdeaPad-Z500:~$ sudo aptitude install ubuntu-sdk
The following NEW packages will be installed:
  apparmor-easyprof{a} apparmor-easyprof-ubuntu{a} at{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-particles-plugin 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-ubuntu-ui-extras-browser-plugin-assets{a} 
  qtdeclarative5-ubuntu-ui-toolkit-plugin{a} 
  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} 
The following packages will be upgraded:
  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 packages upgraded, 151 newly installed, 0 to remove and 293 not upgraded.
Need to get 108 MB/126 MB of archives. After unpacking 273 MB will be used.
The following packages have unmet dependencies:
 ubuntu-html5-sdk : Depends: qtdeclarative5-ubuntu-webapps-api which is a virtual package.
                    Depends: ubuntu-html5-ui-toolkit but it is not going to be installed.
The following actions will resolve these dependencies:

     Keep the following packages at their current version:              
1)     qtcreator-plugin-ubuntu [Not Installed]                          
2)     ubuntu-html5-sdk [Not Installed]                                 
3)     ubuntu-sdk [Not Installed]                                       

     Leave the following dependencies unresolved:                       
4)     libhud-client2 recommends hud (= 13.10.1+13.10.20131014-0ubuntu1)
5)     qtcreator-plugin-ubuntu-common recommends qtcreator-plugin-ubuntu


Accept this solution? [Y/n/q/?] y
The following NEW packages will be installed:
  apparmor-easyprof{a} apparmor-easyprof-ubuntu{a} build-essential{a} 
  click{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-accounts-plugin 
  qtdeclarative5-cordova-2.8-plugin{a} qtdeclarative5-dev-tools 
  qtdeclarative5-folderlistmodel-plugin qtdeclarative5-friends0.2 
  qtdeclarative5-localstorage-plugin qtdeclarative5-particles-plugin 
  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-ubuntu-ui-extras-browser-plugin-assets{a} 
  qtdeclarative5-ubuntu-ui-toolkit-plugin{a} 
  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} 
The following packages will be upgraded:
  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 packages upgraded, 108 newly installed, 0 to remove and 293 not upgraded.
Need to get 27.1 MB/45.8 MB of archives. After unpacking 104 MB will be used.
Do you want to continue? [Y/n/?] 

第七种方案

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

使用apt-get cleanapt-get autocleanapt-get autoremoveapt-get upgradeapt-get updateapt-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]?

第八种方案

优秀的答案!但今天我的情况似乎与你的情况不同。这是我的建议。

问题:

我未能在Ubuntu 10.10中安装apache2。

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安装apache2’失败,请尝试’sudo apt-get install apache2 apache2.2-common’。

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

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

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

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

但对于最后一个软件包,它显示’libaprutil1-ldap:取决于:libaprutil1(= 1.3.9 + dfsg-3build1),但要安装1.3.9 + dfsg-3ubuntu0.10.10.1′

我的lib中有一个不同的版本,所以:

sudo apt-get remove libaprutil1

sudo apt-get install apache2

现在可以了。

第九种方案

什么是未满足的依赖性错误

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 – &gt ;.在面板中转到Edit并选择Software Sources。 – >确保检查了所有存储库

    apt,software-installation,package-management,ppa,dependencies,ubuntu

    apt,software-installation,package-management,ppa,dependencies,ubuntu

  3. 单击右上角的图标更新软件目录,然后选择菜单中的update-available条目

    apt,software-installation,package-management,ppa,dependencies,ubuntu

并按下确认按钮

apt,software-installation,package-management,ppa,dependencies,ubuntu

4.打开ctrl + alt + t打开终端并键入sudo apt-get install -f

5.使用ppa-purge ppa-purge传递最近添加的ppa

apt,software-installation,package-management,ppa,dependencies,ubuntu

This program disables a PPA from your Software Sources and reverts your system back to the official Ubuntu packages. You can use this to return your system to normal after testing a new version from a PPA.

句法

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

sudo ppa-purge ppa:ubuntu-mozilla-daily/ppa
  1. 打开软件中心,然后尝试安装任何软件。如果出现以下对话框,请按修复按钮,然后等待

apt,software-installation,package-management,ppa,dependencies,ubuntu

否则请键入ctrl + alt + t以打开终端并键入sudo apt-get install -f并按照屏幕上的说明进行操作

如果仍然出现错误,请随时在askbuntu中提问

第十种方案

…不要忘记`build-dep`

除了上面的答案 – 我不得不承认,我很惊讶,没有人提到过这种方法,这是我一直用作”silver bullet”的任何时候遇到apt-get冲突或未解决的包(或者即使系统正在固执….哈哈!)。

编辑:使用sudo dpkg -r [package]鼓励,因为它具有非常强大的清除功能。由于apt-getdpkg一起工作,这意味着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]

…. ‘Ugh! Let’s扭动你的手臂,直到你喊”Uncle!”‘

这很少发生在我长期使用linux的过程中,但是我发现自己很少使用这种方法并且成功了。这是我一个月前刚刚与软件包mysql-client/mysql-server进行斗争的一个例子。经过十多次失败的尝试,用mysql-server(即使通过 – skip-grant-tables技术但仍失败)重置我的root密码后,我终于成功进入’twisting Linux’s组,直到它大声喊叫”Uncle!”‘:

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是此解决方案的关键

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/34.html,未经允许,请勿转载。