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
然后确保启用restricted
和universe
存储库。点击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(个人包存档)是在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 Indicator
Unity 面板中的来检查可用更新:
或者,点击Alt+ Ctrl+T打开终端并运行以下命令:
sudo apt-get 更新 sudo apt-get 升级
更新:将可用包列表与源存储库中的服务器同步。升级:下载并安装已安装软件包的任何更新版本。
删除重复的 PPA。Y PPA Manager
(答案末尾的安装指南)可以轻松扫描和删除重复的 PPA。
y-ppa-manager
以打开 Y PPA Manager。Advanced
。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 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)
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
保留最近下载的软件包的缓存,以在需要安装时节省带宽。在某些情况下,这可能会适得其反
现在,要清理它,您有两个选择
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
检查包是否仍在存储库中并删除那些不在存储库中的包
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 及其应用程序的工具
要安装它,请运行
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 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)
仅使用打算在 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)
还有其他文件/命令,您需要其输出可能是特定于错误的,用户可能会在评论中提示您发布文件/命令。
aqu*_*unk 43
到目前为止,这些答案都集中在如何帮助系统自动解决此类问题上,主要是希望它自行解决,而不是了解如何调查依赖关系。首先要确保您的包裹清单是最新的,这一点很重要;在深入挖掘之前,请始终确保简单的更新或清除缓存不能解决问题。但是,如果幕后的一切都按预期工作,那么了解依赖关系至关重要。有时,依赖层看起来势不可挡,但这个概念很简单,也是理解如何在 Ubuntu 系统中安装/卸载软件的关键。
我强烈向任何使用基于 .deb 的系统的人推荐aptitude,例如 Debian、Kali、Ubuntu 或其任何衍生产品。它提供了一个界面来浏览依赖层,包括推荐和建议的包。当 apt-get 不提供冲突的解决方案时,它是一个非常宝贵的工具,用于可视化一般的依赖关系。(突触也可在 Ubuntu 中使用。)
Aptitude 的冲突解决程序将引导您完成已安装/删除/升级/等软件包的可能组合,以满足您所请求的操作而不会发生冲突。即使 apt 无法找到解决方案,这通常也能成功。作为 Ubuntu 用户,通常不会出现需要您调查为什么安装特定软件包或导致冲突的情况,但是随着您使用系统的增多,这几乎是不可避免的。
小智 27
package1 : 取决于: package2 (>= 1.8) 但要安装 1.7.5-1ubuntu1
消息说明:
这个问题没有唯一的正确答案,也没有简单的答案。
发生这种情况的原因有很多,必须调查所有选项并尝试解决导致此错误的先决条件。
您有权访问的所有存储库在版本 >= 1.8 中都没有 package2,因此您必须找到一个可以访问的存储库。如果您找不到版本 >=1.8 的存储库,那么您可能必须从源代码构建和安装 package2。然后尝试安装package1。
如果您想知道如何从源代码构建包,请查看其他问题/答案或发布新的问题/答案。
存储库确实在版本 >= 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) 会尝试自动解决所有这些依赖项。当它说这是不可能的(并发出问题中的消息)时,那么您应该相信它。
如果您决定不信任包管理器,并且您确定不会出现问题,那么您可以尝试强制安装所有包的特定需要的版本,一一希望好。
请注意,对系统包执行此操作会产生严重的问题。您可以将自己锁定在系统之外,阻止关键服务等。
无论问题的原因是什么,您始终可以设置手动编译并从源代码构建所需的包及其所有依赖项。使用此选项,您可以将构建的内容保留在单独的目录中,并且不会出现在系统路径中,这样就不会与系统产生冲突。这可能是最干净的解决方案,有时可能会更快。
包管理器可以访问有关包的过时信息,因此无法找到解决方案。看看其他答案。
包管理器在依赖解析代码中有一个错误。
您必须调查情况是否确实如此,然后发出错误请求。
...
可能还有其他场景。
例如,包维护者可能是错误的,并且没有检查 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 Server
fromSoftware Sources
因为有时服务器上的文件已损坏。
4 . 如果您之前为损坏的依赖项添加了外部 ppa,也会发生这种情况。尝试通过以下方式删除该 ppa
sudo add-apt-repository --remove ppa:someppa/ppa
然后手动删除ppa安装的文件/库 或者
清除 ppa(这也会删除已安装的文件)
sudo apt-get install ppa-purge #a one time install
sudo ppa-purge ppa:someppa/ppa
Run Code Online (Sandbox Code Playgroud)5 . 如果没有 4 不是你的情况,那么至少尝试删除显示为损坏的依赖项的包。然后再次尝试安装。据报道,这对很多人都有效。
6 . 始终添加存储库/PPA 的稳定版本。
7还要确保您已启用所有官方存储库(在Software Sources
)
请不要启用Proposed Updates
它们,因为它们是为测试/开发人员准备的。
正如道格所说:
通常,解决此问题的最佳第一步是确定
<pkg1>
&的来源<pkg2>
。
另外没有注意到的是,在很多情况下,如果不是大多数情况,“<whatever> is to be installed”的意思是“<whatever> is installed”,如果没有其他工作,应该尝试将其删除(如第 5 点)。
我会继续添加更多的问题来解决unmet dependencies
。
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。 你要继续吗?[是/否/?]
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)
现在可以了。
在 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)
确保所有默认存储库都已启用
->您可以在Software Center
->编辑->软件源->其他源->添加"中 轻松添加它们
-> 启动Software Center
.
->. 在面板中转到Edit
并选择Software Sources
。
->确保检查所有存储库
更新软件目录
单击右上角的图标并在菜单中选择更新可用条目
并按下检查按钮
4.type ctrl+ alt+t至开放端子和类型
sudo apt-get install -f
5.使用 ppa-purge ppa-purge 清除最近添加的 ppa
该程序从您的软件源中禁用 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)
否则
输入ctrl+ alt+t打开终端并输入sudo apt-get install -f
并按照屏幕上的说明进行操作
除了上面的那些答案——我不得不承认我很惊讶没有人提到这种方法,这是我在遇到 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 次 |
最近记录: |