分页: 1 / 1

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

发表于 : 2014-09-06 14:22
cao627

代码: 全选

$ 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是被许多包依赖着的。

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

发表于 : 2014-09-06 15:07
zhw2101024

代码: 全选

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

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

发表于 : 2014-09-06 15:14
cao627
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

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

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

代码: 全选

cat /etc/apt/sources.list

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

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

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

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

现在冲突了

卸又卸不掉

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

发表于 : 2014-09-06 17:04
taohunter
ok,明白了。可以尝试用aptitude而不是apt通过忽略包依赖关系的方法卸载掉你自己安装的包。

代码: 全选

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

代码: 全选

sudo aptitude -fy remove your-problem-package
注意命令提示,不要误删了一大堆必需的包!!!

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

发表于 : 2014-09-06 17:15
cao627
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了