遇到一个问题不如何解决:关于包依赖和冲突。

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
cao627
帖子: 992
注册时间: 2007-12-05 10:57
系统: ubuntu14.04
来自: 金山

遇到一个问题不如何解决:关于包依赖和冲突。

#1

帖子 cao627 » 2014-09-06 14:22

代码: 全选

$ dpkg  -l | grep 'libstdc++6'
rU  libstdc++6:amd64                                            4.9.1-12                                            amd64        GNU Standard C++ Library v3
rF  libstdc++6:i386                                             4.8.2-19ubuntu1                                     i386         GNU Standard C++ Library v3
之前的状态是iU和iF,由于用dpkg卸载了一次成为了rU和rF

libstdc++6:i386 是以前装的,没有问题的。
libstdc++6:amd64 是昨晚通过昨晚下载下来的libstdc++6_4.9.1-12_amd64.deb文件通过dpkg安装的,安装时由于遇到依赖关系没有成功。

现在由于libstdc++6:amd64安装时未满足依赖关系以及和libstdc++6:i386的冲突,导致apt 和软件中心都不能用了,比如:

代码: 全选

$ sudo apt-get  remove firefox
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
libstdc++6 : Depends: gcc-4.9-base (= 4.9.1-12) but 4.9-20140406-0ubuntu1 is to be installed
              Breaks: libstdc++6:i386 (!= 4.9.1-12) but 4.8.2-19ubuntu1 is to be installed
 libstdc++6:i386 : Breaks: libstdc++6 (!= 4.8.2-19ubuntu1) but 4.9.1-12 is to be installed
 xul-ext-unity : Depends: firefox (>= 10.0) but it is not going to be installed
 xul-ext-webaccounts : Depends: firefox (>= 9.0) but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
如果卸载

代码: 全选

$ sudo apt-get  remove libstdc++6:amd64
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
appmenu-qt : Depends: libstdc++6 (>= 4.1.1) but it is not going to be installed
appmenu-qt5 : Depends: libstdc++6 (>= 4.1.1) but it is not going to be installed
.....

不知如何是好?

libstdc++6:i386 和 libstdc++6冲突了
如果卸载 libstdc++6:amd64 apt觉得是在卸载libstdc++6:i386, 而libstdc++6:i386是被许多包依赖着的。
头像
zhw2101024
帖子: 1849
注册时间: 2009-03-28 16:10
系统: Arch debian win7
联系:

Re: 遇到一个问题不如何解决:关于包依赖和冲突。

#2

帖子 zhw2101024 » 2014-09-06 15:07

代码: 全选

sudo apt-get -f install
这个执行下看看呢
cao627
帖子: 992
注册时间: 2007-12-05 10:57
系统: ubuntu14.04
来自: 金山

Re: 遇到一个问题不如何解决:关于包依赖和冲突。

#3

帖子 cao627 » 2014-09-06 15:14

zhw2101024 写了:

代码: 全选

sudo apt-get -f install
这个执行下看看呢
不行啊

代码: 全选

$ sudo apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... failed.
The following packages have unmet dependencies:
 libstdc++6 : Depends: gcc-4.9-base (= 4.9.1-12) but 4.9-20140406-0ubuntu1 is installed
              Breaks: libstdc++6:i386 (!= 4.9.1-12) but 4.8.2-19ubuntu1 is installed
 libstdc++6:i386 : Breaks: libstdc++6 (!= 4.8.2-19ubuntu1) but 4.9.1-12 is installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.
E: Unable to correct dependencies
taohunter
帖子: 1555
注册时间: 2012-03-31 3:29

Re: 遇到一个问题不如何解决:关于包依赖和冲突。

#4

帖子 taohunter » 2014-09-06 15:29

这种问题一般都是你自己搞得源列表中有错误或冲突了,别随便使用sudo apt-get -f install,要首先明确问题出在哪里。。。

代码: 全选

cat /etc/apt/sources.list
三年后终于回到16.04--稳定了!
cao627
帖子: 992
注册时间: 2007-12-05 10:57
系统: ubuntu14.04
来自: 金山

Re: 遇到一个问题不如何解决:关于包依赖和冲突。

#5

帖子 cao627 » 2014-09-06 16:17

这种问题一般都是你自己搞得源列表中有错误或冲突了,别随便使用sudo apt-get -f install,要首先明确问题出在哪里
sources.list文件没做过修改

系统原来有libstdc++6(4.8.2-19ubuntu1)

昨晚下载安装了libstdc++6_4.9.1-12_amd64.deb

现在冲突了

卸又卸不掉
taohunter
帖子: 1555
注册时间: 2012-03-31 3:29

Re: 遇到一个问题不如何解决:关于包依赖和冲突。

#6

帖子 taohunter » 2014-09-06 17:04

ok,明白了。可以尝试用aptitude而不是apt通过忽略包依赖关系的方法卸载掉你自己安装的包。

代码: 全选

sudo apt-get install aptitude
自己看一下aptitude的man page,里面有好几种方式解决包依赖的问题,推荐首先尝试--safe-resolver。如不行可以尝试类似这样的命令:

代码: 全选

sudo aptitude -fy remove your-problem-package
注意命令提示,不要误删了一大堆必需的包!!!
三年后终于回到16.04--稳定了!
cao627
帖子: 992
注册时间: 2007-12-05 10:57
系统: ubuntu14.04
来自: 金山

Re: 遇到一个问题不如何解决:关于包依赖和冲突。

#7

帖子 cao627 » 2014-09-06 17:15

ok,明白了。可以尝试用aptitude而不是apt通过忽略包依赖关系的方法卸载掉你自己安装的包。
谢谢回复
不过刚才apt和软件中心都废掉了:即不能用sudo apt-get install 安装任何软件

现在问题解决了
方法如下:
单独下载一个libstdc++6(4.8.2-19ubuntu1)amd64位的.deb文件,然后安装之

代码: 全选

$ sudo dpkg -i libstdc++6_4.8.2-19ubuntu1_amd64.deb
昨晚安装的libstdc++6_4.9.1-12_amd64.deb就被覆盖了

代码: 全选

$ dpkg  -l | grep 'libstdc++6'
ii  libstdc++6:amd64                                            4.8.2-19ubuntu1                                     amd64        GNU Standard C++ Library v3
ii  libstdc++6:i386                                                4.8.2-19ubuntu1                                     i386         GNU Standard C++ Library v3
两个版本一致了,就没有冲突了。
这里刚开始libstdc++6:i386的状态是ri。我用sudo apt-get --reinstall install libstdc++6:i386重装了一下,就ii了
回复