添加 PPA 后如何解决未满足的依赖项?

jrg*_*jrg 617 package-management apt ppa dependencies software-installation

有时,当我安装东西时,我会收到如下错误:

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.
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

Bas*_*lvi 620

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 自动清理

    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则将在可能的情况下安装这些依赖项,否则它可能会简单地删除您安装的软件包以解决问题。

    然后运行:

    须藤 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 包名

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

最后,如果所有其他方法都失败了,您可以尝试自己满足依赖项,方法是查找并安装必要的包,或者从源代码安装它们然后为它们创建“ deb ”包。

禁用/删除/清除 PPA:

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

未满足依赖项的最常见原因之一是 PPA,尤其是在用于升级 Ubuntu 存储库中的现有包时。要解决此问题,您有三个选项:禁用、清除(在 Ubuntu 存储库中恢复为原始包)或删除 PPA。

  • 禁用:

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

    点击Alt+F2并运行software-properties-gtk

    单击Other Software选项卡,您将看到每个 PPA 在这里有两行,一行用于编译包,另一行用于源代码,Uncheck这两行都用于禁用 PPA。您还可以在此处添加和删除 PPA。

  • 清除:

    清除 PPA 意味着将所选 PPA 中的软件包降级到官方 Ubuntu 存储库中的版本并禁用该 PPA。PPA Purge正是这样做的。要安装 PPA Purge,请运行以下命令:

    sudo apt-get install ppa-purge

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

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

要使用 PPA 清除:

sudo ppa-purge ppa:someppa/ppa

如果 'ppa-purge' 命令由于某种原因失败,除非您重新启用 PPA,否则您不能再次运行 'ppa-purge'(要启用 PPA,请按照与禁用 PPA 相同的步骤以及Check特定PPA 以启用它)。

注意:PPA Purge不会删除 PPA(将来可能会删除),因此您必须手动删除 PPA。

  • 消除:

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

    sudo apt-get autoremove --purge 包名
    sudo add-apt-repository --remove ppa:someppa/ppa
    sudo apt-get 自动清理
    

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

预防措施:

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

  • 使 Ubuntu 保持最新。Ubuntu 会在有可用更新时自动通知,您还可以通过单击Session IndicatorUnity 面板中的来检查可用更新:

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

    sudo apt-get 更新
    sudo apt-get 升级

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

  • 如果您决定将其他存储库添加到 sources.list,请确保该存储库适用于(并且已知适用于)Ubuntu。不适合您的 Ubuntu 版本的存储库可能会在您的系统中引入不一致,并可能迫使您重新安装。另外,请确保您确实需要添加外部存储库,因为您正在寻找的软件包可能已经被引入到官方存储库中!来源
  • 删除重复的 PPA。Y PPA Manager(答案末尾的安装指南)可以轻松扫描和删除重复的 PPA。

    • 点击Alt+F2并运行y-ppa-manager以打开 Y PPA Manager。
    • 一旦打开,双击或击EnterAdvanced
    • 在结果窗口中选择Scan and remove duplicate PPAs并单击确定。

在此处输入图片说明

获得帮助:

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

  • 实际错误的输出:

    sudo apt-get install 包名
  • 这将显示您的 sources.list:

    cat /etc/apt/sources.list
  • 这将显示 PPA 列表(如果有):

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

其他来源:


Y PPA Manager Y PPA Manager 是满足您所有 PPA 需求的一站式商店。

y ppa 经理

以下是它的一些功能:

  • 在所有 Launchpad PPA 中搜索包
  • 在 PPA 中列出和下载包
  • 添加/删除/清除 PPA
  • 备份和恢复 PPA 源
  • 删除重复的 PPA 来源

要安装Y PPA Manager,击中开放终端Alt+ Ctrl+T和运行下面的命令:

须藤添加-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt-get 更新
sudo apt-get install y-ppa-manager

考虑到这个问题,apt坏了,所以改用这些命令

sudo su
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

  • 这对我来说是一个巨大的帮助......全新安装 Lubuntu 12.04 并且无法安装基本的东西,如 gvim (vim-gtk) 或 openssh-server。我尝试了各种命令行选项,包括从这台机器和另一台机器(运行正常,运行Xubuntu)上做/etc/apt/sources.list 的差异。遵循本指南后,我发现在 software-properties-gtk 中,“主”存储库的框未选中!问题解决了! (4认同)
  • 这对我不起作用:S (4认同)
  • 如果 apt 损坏,如何安装未满足的依赖项? (3认同)
  • 实际上没有人回答如何安装那些具有未满足依赖项版本的软件包。上帝!我只想强制安装旧版本的软件包。 (3认同)
  • 有时你真的持有破损的包裹......所以最好的办法是取消它们并删除它们。见 http://askubuntu.com/a/363244/16395 (2认同)

Ami*_* KK 90

注:所有的命令要求运行,必须在终端,可以通过打开运行要么Ctrl+ Alt+T或搜索在仪表终端。

真的坏了吗?

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

sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

表演前的步骤

备份

备份以下文件:

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

为此,请使用这些命令

sudo cp /etc/apt/sources.list /etc/apt/sources.list.original
Run Code Online (Sandbox Code Playgroud)

sudo cp /var/lib/dpkg/status /var/lib/dpkg/status.original
Run Code Online (Sandbox Code Playgroud)

清除您的 apt-cache

apt保留最近下载的软件包的缓存,以在需要安装时节省带宽。在某些情况下,这可能会适得其反

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

sudo apt-get clean 
Run Code Online (Sandbox Code Playgroud)

这将删除属于该文件夹的所有缓存包/var/cache/apt/archives//var/cache/apt/archives/partial但 .lock 文件除外。这是推荐的

sudo apt-get autoclean
Run Code Online (Sandbox Code Playgroud)

这将扫描文件夹/var/cache/apt/archives//var/cache/apt/archives/partial检查包是否仍在存储库中并删除那些不在存储库中的包


修复依赖

使用 apt 的修复损坏模式

sudo apt-get -f install
Run Code Online (Sandbox Code Playgroud)

这将导致 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
Run Code Online (Sandbox Code Playgroud)

但是,考虑到问题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
Run Code Online (Sandbox Code Playgroud)

现在使用 ppa 清除

sudo ppa-purge ppa:someppa/ppa  
Run Code Online (Sandbox Code Playgroud)

Y-PPA 经理

Y-PPA Manager 是一个 gui 应用程序,可帮助您管理 PPA 和与之相关的各种问题

安装它

sudo add-apt-repository ppa:webupd8team/y-ppa-manager
Run Code Online (Sandbox Code Playgroud)

sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

sudo apt-get install y-ppa-manager
Run Code Online (Sandbox Code Playgroud)

考虑到这个问题,apt所以坏了,改用这些命令

sudo su
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

现在输入 y-ppa-manager

你会看到这个窗口

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

执行以下以黑色标出的任务


预防胜于治疗

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

因此,以下是确保您安全的准则

使您的系统保持最新

始终定期运行以下命令

sudo apt-get update&&sudo apt-get upgrade
Run Code Online (Sandbox Code Playgroud)

或者,您始终可以通过此命令使用更新管理器

gksu update-manager
Run Code Online (Sandbox Code Playgroud)

仅使用受信任的 PPA

仅使用打算在 Ubuntu 上使用的 PPA,仅使用具有可信来源的 PPA。事实上,该软件包可能已经在 ubuntu 存储库中

在情况良好时备份并稍后恢复

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

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

y-ppa-manager
Run Code Online (Sandbox Code Playgroud)

你会看到这个窗口

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

运行这个:

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

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

系统会要求您使用类似于以下对话框的对话框从之前保存的上一个备份中恢复


还是行不通?

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

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

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

sudo apt-get install packagename
Run Code Online (Sandbox Code Playgroud)

cat /etc/apt/sources.list
Run Code Online (Sandbox Code Playgroud)

cat /etc/apt/sources.list.d/*
Run Code Online (Sandbox Code Playgroud)

(感谢Basharat Sial

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

  • 选择更好的服务器为我修复它。谢谢! (2认同)

aqu*_*unk 43

到目前为止,这些答案都集中在如何帮助系统自动解决此类问题上,主要是希望它自行解决,而不是了解如何调查依赖关系。首先要确保您的包裹清单是最新的,这一点很重要;在深入挖掘之前,请始终确保简单的更新或清除缓存不能解决问题。但是,如果幕后的一切都按预期工作,那么了解依赖关系至关重要。有时,依赖层看起来势不可挡,但这个概念很简单,也是理解如何在 Ubuntu 系统中安装/卸载软件的关键。

我强烈向任何使用基于 .deb 的系统的人推荐aptitude,例如 Debian、Kali、Ubuntu 或其任何衍生产品。它提供了一个界面来浏览依赖层,包括推荐和建议的包。当 apt-get 不提供冲突的解决方案时,它是一个非常宝贵的工具,用于可视化一般的依赖关系。(突触也可在 Ubuntu 中使用。)

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

  • 投票支持提及 Aptitude 冲突解决程序。有时必须使用这样的高级工具来确定可能性并查明核心冲突。 (4认同)
  • 这实际上可能是该线程中的最佳答案。它甚至可以通过关于 `aptitude` 的冲突解决程序的镜头教程进行改进。 (3认同)
  • 此链接虽然没有解释依赖项或其一般概念,但确实显示了交互式解析器的快速教程:http://aptitude.alioth.debian.org/doc/en/ch02s03s03.html (2认同)

小智 27

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

消息说明:

  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,但是版本 >=1.8 的 package2 要求 package3 的版本 >= 6.7,而您的 package3 版本为 6.3

问题是,如果可能,包管理器 (APT) 会尝试自动解决所有这些依赖项。当它说这是不可能的(并发出问题中的消息)时,那么您应该相信它。

如果您决定不信任包管理器,并且您确定不会出现问题,那么您可以尝试强制安装所有包的特定需要的版本,一一希望好。

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

场景 C:

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

场景 D:

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

场景E:

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

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

...

场景Z:

可能还有其他场景。

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


Ash*_*shu 18

每当您遇到有关未满足的依赖项的错误时,都需要遵循这些方法

按照说明操作后尝试安装软件。这些方法中的至少一种应该适合您

1 . 在尝试任何新命令或添加任何新 ppa 之前尝试这个

清理apt缓存:

sudo apt-get clean
Run Code Online (Sandbox Code Playgroud)

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

sudo apt-get autoremove
Run Code Online (Sandbox Code Playgroud)

更新 apt-cache

sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

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

2 . 试试sudo apt-get install -f

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

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

在此处输入图片说明
在此处输入图片说明
在此处输入图片说明

4 . 如果您之前为损坏的依赖项添加了外部 ppa,也会发生这种情况。尝试通过以下方式删除该 ppa

  • 输入sudo add-apt-repository --remove ppa:someppa/ppa然后手动删除ppa安装的文件/库

或者

5 . 如果没有 4 不是你的情况,那么至少尝试删除显示为损坏的依赖项的包。然后再次尝试安装。据报道,这对很多人都有效。

6 . 始终添加存储库/PPA 的稳定版本。

在此处输入图片说明

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

在此处输入图片说明

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

在此处输入图片说明


正如道格所说:

通常,解决此问题的最佳第一步是确定<pkg1>&的来源<pkg2>

另外没有注意到的是,在很多情况下,如果不是大多数情况,“<whatever> is to be installed”的意思是“<whatever> is installed”,如果没有其他工作,应该尝试将其删除(如第 5 点)。


我会继续添加更多的问题来解决unmet dependencies

  • @Ashu 您可能想要修复的一件事--`apt-get update` **不** 更新**apt 缓存**(它由下载的`.deb` 文件和一个存储有关哪个` .deb` 文件)。它更新**包索引文件**(其中包含有关从每个可用软件源*可下载和安装*哪些包的信息)。正如我之前所说,`apt-get clean` 不会清除 `apt-get update` 更新的相同内容。有关详细信息,请参阅 [`man apt-get`](http://manpages.ubuntu.com/manpages/precise/en/man8/apt-get.8.html)。 (3认同)

Avi*_*Raj 17

在大多数情况下,通过安装软件包aptitude将解决未满足的依赖项。默认情况下aptitude,您的电脑上没有安装软件包。所以首先通过运行安装它,

sudo apt-get update
sudo apt-get install aptitude
Run Code Online (Sandbox Code Playgroud)

然后,

sudo aptitude install packagename
Run Code Online (Sandbox Code Playgroud)

例如,

    
avinash@avinash-Lenovo-IdeaPad-Z500:~$ sudo apt-get install ubuntu-sdk
阅读包裹清单...完成
构建依赖树       
读取状态信息...完成
无法安装某些软件包。这可能意味着你有
请求了一个不可能的情况,或者如果您使用的是不稳定的
一些必需的包尚未创建的发行版
或被移出 Incoming。
以下信息可能有助于解决这种情况:

以下软件包具有未满足的依赖项:
 ubuntu-sdk : 取决于: qtcreator-plugin-ubuntu 但它不会被安装
E:无法纠正问题,您持有破损的包裹。

通过安装包 aptitude

avinash@avinash-Lenovo-IdeaPad-Z500:~$ sudo aptitude install ubuntu-sdk
将安装以下新软件包:
  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} 发行信息数据{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} 
将升级以下软件包:
  cpp-4.8 gcc-4.8 gcc-4.8-base hud libasan0 libatomic1 libgcc-4.8-dev 
  libgcc1 libglib2.0-0 libglib2.0-bin libgomp1 libitm1 libquadmath0 
  libstdc++6 libtsan0 
升级了 15 个软件包,新安装了 151 个,删除了 0 个,未升级了 293 个。
需要获得 108 MB/126 MB 的档案。解压后将使用 273 MB。
以下软件包具有未满足的依赖项:
 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


接受这个解决方案吗?[是/否/q/?] 是
将安装以下新软件包:
  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} 
将升级以下软件包:
  cpp-4.8 gcc-4.8 gcc-4.8-base hud libasan0 libatomic1 libgcc-4.8-dev 
  libgcc1 libglib2.0-0 libglib2.0-bin libgomp1 libitm1 libquadmath0 
  libstdc++6 libtsan0 
升级了 15 个软件包,新安装了 108 个,删除了 0 个,未升级了 293 个。
需要获得 27.1 MB/45.8 MB 的档案。解压后将使用 104 MB。
你要继续吗?[是/否/?]

  • @AvinashRaj,..但是在安装`aptitude` 之前,不应该解决依赖关系问题吗? (2认同)
  • 我的意思是如果系统有损坏的软件包,在修复之前它不会允许新安装..那么你如何在不首先解决问题的情况下安装`aptitude`! (2认同)

Mic*_*nzl 11

我的回答与上面的 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
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

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
Run Code Online (Sandbox Code Playgroud)

所以,我跑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
Run Code Online (Sandbox Code Playgroud)

我沿着树往下走:

apt-get install libgraphviz-dev
Run Code Online (Sandbox Code Playgroud)

另一个错误:

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

再次深入树:

apt-get install libgvc5
Run Code Online (Sandbox Code Playgroud)

由于一些奇怪的原因,这成功了,我能够安装我想要的原始软件包 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]?
Run Code Online (Sandbox Code Playgroud)


小智 8

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

问题:

我在 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
Run Code Online (Sandbox Code Playgroud)

解决方案:

我的方法是将依赖包添加到安装列表中。

如果“sudo apt-get install apache2”失败,请尝试“ sudo apt-get install apache2 apache2.2-common ”。

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

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

 apache2.2-common <-- apache2.2-bin <-- libaprutil1-ldap <-- libaprutil1
Run Code Online (Sandbox Code Playgroud)

对于前 3 个软件包,apt-get log 告诉我“不会被安装”,

但是对于最后一个包,它显示“libaprutil1-ldap : Depends: libaprutil1 (= 1.3.9+dfsg-3build1) but 1.3.9+dfsg-3ubuntu0.10.10.1 is to be installed”

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

sudo apt-get remove libaprutil1

sudo apt-get install apache2
Run Code Online (Sandbox Code Playgroud)

现在可以了。


Tac*_*ons 7

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

在 Ubuntu 上,软件包是构建、部署和安装软件的主要方式。很简单,软件包是从头开始下载、构建和安装软件的替代方法。与标准的“从源代码构建”模型相比,它们在安装、删除、监控和处理软件之间的交互方面提供了许多优势。Ubuntu使用集中式打包系统,即每个包都依赖于其他一些包。当我们安装一个包时会安装它的依赖项,当包的依赖项不可用时会出现未满足的依赖项错误

可能的原因

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

让我们尝试解决它

  1. 连接到互联网 :D
  2. 确保所有默认存储库都已启用

    ->您可以在Software Center->编辑->软件源->其他源->添加"中 轻松添加它们

    -> 启动Software Center.

    ->. 在面板中转到Edit并选择Software Sources

    编辑软件源

    ->确保检查所有存储库 在此处输入图片说明

  3. 更新软件目录

    单击右上角的图标并在菜单中选择更新可用条目
    在此处输入图片说明

并按下检查按钮 在此处输入图片说明

4.type ctrl+ alt+t至开放端子和类型 sudo apt-get install -f

5.使用 ppa-purge ppa-purge 清除最近添加的 ppa 安装 ppa-purge

该程序从您的软件源中禁用 PPA,并将您的系统恢复到官方的 Ubuntu 软件包。在从 PPA 测试新版本后,您可以使用它使系统恢复正常。

句法

sudo ppa-purge ppa:<repository-name>/<subdirectory>
Run Code Online (Sandbox Code Playgroud)

例子

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

在此处输入图片说明

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

如果仍然出现错误,请随时askbuntu询问

  • @Ashu 我正在努力帮助人们做出规范的答案 - 我必须告诉 *每个人*,因为有 500 名代表的赏金处于危险之中,我不想在帮助某些人回答他们的问题时发挥我的最爱,但是无视他人。:s (2认同)

Far*_*ron 5

...不要忘记`build-dep`

除了上面的那些答案——我不得不承认我很惊讶没有人提到这种方法,这是我在遇到 apt-get 冲突或未解决的包(甚至如果系统很顽固......哈哈!)。

编辑:sudo dpkg -r [package]鼓励使用,因为它具有非常强大的删除功能。由于apt-get与 一起工作dpkg,这意味着apt-get将服从dpkg功能。

  sudo dpkg -r [package]
  sudo apt-get build-dep [package]  
  ## pre-install all deps for the package
Run Code Online (Sandbox Code Playgroud)

你调用 apt-get 来清除你试图在系统中安装的失败包,然后你调用 build-dep 命令,apt-get 将分别获取并安装属于这个包的依赖项,这样它们就会满足包之前。最后,调用 apt-get 安装:

sudo apt-get install [package]
Run Code Online (Sandbox Code Playgroud)

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

这在我多年的 Linux 使用中很少发生,但我发现自己很少使用这种方法并成功了。这是我一个月前与包最近的斗争的一个例子mysql-client/mysql-server。在尝试使用 mysql-server 重置我的 root 密码失败了十几次之后(甚至通过 --skip-grant-tables techqiue 但失败了),我终于成功地“扭曲 Linux 的手臂,直到它大喊“叔叔!”:

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

apt-get autoclean 是这个解决方案的关键


归档时间:

查看次数:

1186347 次

最近记录:

5 年,5 月 前