在Ubuntu 12.04 LTS上安装gcc

当我尝试在Ubuntu 12.04 LTS服务器上使用apt-get install gcc安装gcc时,我遇到了以下错误:
The following packages have unmet dependencies:
 gcc : Depends: cpp (>= 4:4.6.1-2ubuntu5) but it is not going to be installed
       Depends: gcc-4.6 (>= 4.6.1-1) but it is not going to be installed
       Recommends: libc6-dev but it is not going to be installed or
                   libc-dev

当我深入研究(即尝试apt-get install gcc-4.6)时,我得到以下结果:
 gcc-4.6 : Depends: gcc-4.6-base (= 4.6.1-9ubuntu3) but 4.6.3-1ubuntu5 is to be installed
           Depends: cpp-4.6 (= 4.6.1-9ubuntu3) but it is not going to be installed
           Depends: libgomp1 (>= 4.6.1-9ubuntu3) but it is not going to be installed
           Depends: libquadmath0 (>= 4.6.1-9ubuntu3) but it is not going to be installed
           Recommends: libc6-dev (>= 2.13-0ubuntu6) but it is not going to be installed

当我尝试安装gcc-4.6=4.6.1-9ubuntu3时,我得到了一个要删除的366个软件包的列表(包括apt)。这太疯狂了。
这是一个基本上原始的Ubuntu 12.04 LTS服务器安装(即我安装了nginx、python-flup、python-yaml、rsync、python-pkg-resources、lsof、fontconfig、iptables、ufw、scons和grc)。
对我来说,无法安装gcc非常令人惊讶,所以我对为什么尝试安装gcc失败感到困惑。唯一明显的解决方法似乎是卸载366个软件包,其中许多对Ubuntu的运行至关重要。
有些事情不对劲,我将非常感谢您的帮助。
编辑:以上当然是使用apt-get update; apt-get upgrade后的最新软件包。抱歉,我应该提到这一点。

1你试过sudo apt-get update吗? - Tachyons
3个回答

有一个名为build-essential的元包,它应该安装编译器和一堆相关/必需的软件包: sudo apt-get install build-essential 首先执行sudo apt-get update是个好建议,这将更新软件包列表,所有版本应该匹配得很好。
然而,这仅适用于您没有手动修改/etc/apt/sources.list文件的情况。如果是这样,那么您所做的一些更改或添加的存储库可能包含冲突的软件包,导致您看到的问题。如果是这种情况,请查看文件并修复有问题的条目。当然,如果您需要帮助,可以发布您的sources.list文件(或/etc/apt/sources.list.d中的任何片段),也许有人可以帮助您修复它们。

2问题出在 sources.list 中对于 oneric 的错误引用。当我移除了这个引用后,一切都自然地安装成功了。查看 sources.list 是一个很好的建议来解决问题 - 谢谢 - 非常感谢。 - Brian M. Hunt

继续努力深入一点:
sudo apt-get update
sudo apt-get install gcc-4.6-base cpp-4.6 libgomp1 libquadmath0 libc6-dev

首先写下指令:
sudo apt-get update

然后试试:
sudo apt-get install gcc

我做了这个,它有效!你也应该试试看。
如果它不起作用的话:
sudo apt-get install build-essential

然后试一试。希望它能够成功!

大师级程序员您好,欢迎来到 askubuntu!首先,在撰写答案时,请使用格式工具 - 尤其是块格式 - 以便更容易理解答案。其次,几乎已经给出了完全相同的答案。请接受邀请 参观导览,学习如何撰写好的答案。 - Nephente
其次,你的回答并没有实质性地改进已经存在的其他答案。(虽然它不符合“不是答案”的标准,但确实需要这个评论) - Thomas Ward