安装g++ ubuntu 14.04 依赖于 g++-4.8 (>= 4.8.2-5~),但它无法安装。

我刚刚输入了:
sudo apt-get install g++

然后得到:

The following packages have unmet dependencies:
 g++ : Depends: g++-4.8 (>= 4.8.2-5~) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

我也尝试了其他论坛上的建议。
sudo apt-get update

并且

sudo apt-get -f install

没有人解决了我的问题。如果你知道答案,请帮忙。
编辑:
根据评论中的建议,我尝试了:
sudo apt-cache policy g++-4.8

并获得以下输出:
g++-4.8:
  Installed: (none)
  Candidate: 4.8.2-19ubuntu1
  Version table:
     4.8.2-19ubuntu1 0
        500 http://ca.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages

通过尝试:

sudo apt-get install g++-4.8

我明白了。
The following packages have unmet dependencies:
 g++-4.8 : Depends: gcc-4.8-base (= 4.8.2-19ubuntu1) but 4.8.4-2ubuntu1~14.04 is to be installed
           Depends: gcc-4.8 (= 4.8.2-19ubuntu1) but 4.8.4-2ubuntu1~14.04 is to be installed
           Depends: libstdc++-4.8-dev (= 4.8.2-19ubuntu1) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

这些apt-get命令的输出/错误是什么? - Daniel
apt-get update只是更新存储库...有很多输出行,但没有错误...apt-get -f install的结果是:0个升级,0个新安装,0个要删除,44个未升级。 - alecrosic
请编辑您的问题并添加apt-cache policy g++-4.8的输出结果。 - A.B.
尝试通过sudo apt-get install g++-4.8强制安装,并将输出添加到您的问题中。您应该会看到另一个错误消息。我们需要这个消息来找出真正的问题。 - A.B.
给我一个有@A.B.的评论。没有这个,我就收不到通知你修改了问题。 - A.B.
@A.B. 编辑完成。 - alecrosic
apt-cache policy gcc-4.8-base gcc-4.8 libstdc++-4.8-dev; sudo apt-get install gcc-4.8-base gcc-4.8 libstdc++-4.8-dev - A.B.
@A.B. apt-get命令出现错误: 以下软件包存在未满足的依赖关系: libstdc++-4.8-dev:依赖于gcc-4.8-base(= 4.8.2-19ubuntu1),但要安装的版本为4.8.4-2ubuntu114.04 依赖于libgcc-4.8-dev(= 4.8.2-19ubuntu1),但要安装的版本为4.8.4-2ubuntu114.04 E: 无法纠正问题,您有损坏的软件包。 - alecrosic
apt-cache policy gcc-4.8-base gcc-4.8 libstdc++-4.8-dev - A.B.
@A.B. 当我运行 apt-get install libstdc++-4.8-dev 时,我得到以下错误信息:以下软件包有未满足的依赖关系: libstdc++-4.8-dev : 依赖于 gcc-4.8-base (= 4.8.2-19ubuntu1),但将安装 4.8.4-2ubuntu114.04 依赖于 libgcc-4.8-dev (= 4.8.2-19ubuntu1),但将安装 4.8.4-2ubuntu114.04 E: 无法修复问题,您拥有损坏的软件包。 - alecrosic
来吧,apt-cache policy,不过无论如何,我有解决办法。 - A.B.
2个回答

问题是:
libstdc++-4.8-dev : Depends: gcc-4.8-base (= 4.8.2-19ubuntu1) but 4.8.4-2ubuntu1~14.04 is to be installed

为什么?这就是原因:
  • 主要软件库中的libstdc++-4.8-dev依赖于libstdc++-4.8-dev=4.8.2-19ubuntu1

  • 更新软件库中的libstdc++-4.8-dev依赖于libstdc++-4.8-dev=4.8.4-2ubuntu1~14.04,而该版本已安装在您的系统中


解决方案?
我的第一选择是,再次启用更新仓库:
打开“软件和更新”选项卡中的“更新”选项卡。 选择“trusty-updates”和“trusty-security”,然后点击“关闭”。 如果有终端版本,请告诉我。 enter image description here 重新加载。 enter image description here 安装: sudo apt-get install g++

我的第二选择,降级

嗯,我会说,那是一个坏主意=)


更新和重新加载已启用!谢谢。 - alecrosic
这些已经为我检查过了,但是取消选中然后重新检查它们,然后重新加载也可以。 - Mitch

因为源中的Ubuntu 14.04版本太旧或无法访问,所以我们应该更新源。这将解决问题。首先,我们应该备份源文件sources.list

sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup

根据Ubuntu的版本添加新的源。
  1. 查询版本命令:

    lsb_release -a
    

    然后会打印出如下信息:

    No LSB modules are available.
    Distributor ID: Ubuntu
    Description:    Ubuntu 14.04.4 LTS
    Release:    14.04
    Codename:   trusty
    
  2. 根据版本选择合适的源,并添加到'/etc/apt/sources.list'文件的末尾。

    http://wiki.ubuntu.org.cn/Template:14.04source,
    

    Ubuntu 14.04源:

    deb http://archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse
    deb http://archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse
    deb http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse
    deb http://archive.ubuntu.com/ubuntu/ trusty-proposed main restricted universe multiverse
    deb http://archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse
    deb-src http://archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse
    deb-src http://archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse
    deb-src http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse
    deb-src http://archive.ubuntu.com/ubuntu/ trusty-proposed main restricted universe multiverse
    deb-src http://archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse
    
  3. 更新源

    sudo apt-get update
    
  4. 好了

    sudo apt-get install g++