如何在 Ubuntu 12.04 上安装 build-essential?(gcc 和 g++ 依赖问题)

如何在 Ubuntu 12.04 上安装 build-essential?(gcc 和 g++ 依赖问题)

我刚刚安装了 Ubuntu 服务器 12.04 LTS。我正在尝试安装 build-essential 包;但是,当我尝试安装它时,我收到以下错误:

Some packages could not be installed. this may mean that you have an impossible situation or it you are using the unstable distribution that some required packages have not yer been created or been moved out of Incoming.
The following information may help to resolve this situation:

The following packages have unmet dependencies:
 build-essential : Depends: gcc (>= 4:4.4.3) but it is not installable
                   Depends: g++ (> 4:4.4.3) but it is not installable
E: Unalbe to correct problems, you have held broken packages.

在安装之前,我确认执行了 apt-get update。但仍然不起作用。

[编辑]

根据 peterh 的建议:

的内容/etc/apt/sources.list如下:

enter code here

# deb cdrom:[Ubuntu-Server 12.04.5 LTS _Precise Pangolin_ - Release amd64 (20140806.1)]/ dists/precise/main/binary-i386/
# deb cdrom:[Ubuntu-Server 12.04.5 LTS _Precise Pangolin_ - Release amd64 (20140806.1)]/ dists/precise/restricted/binary-i386/
# deb cdrom:[Ubuntu-Server 12.04.5 LTS _Precise Pangolin_ - Release amd64 (20140806.1)]/ precise main restricted

#deb cdrom:[Ubuntu-Server 12.04.5 LTS _Precise Pangolin_ - Release amd64 (20140806.1)]/ dists/precise/main/binary-i386/
#deb cdrom:[Ubuntu-Server 12.04.5 LTS _Precise Pangolin_ - Release amd64 (20140806.1)]/ dists/precise/restricted/binary-i386/
#deb cdrom:[Ubuntu-Server 12.04.5 LTS _Precise Pangolin_ - Release amd64 (20140806.1)]/ precise main restricted

# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://us.archive.ubuntu.com/ubuntu/ precise main restricted
deb-src http://us.archive.ubuntu.com/ubuntu/ precise main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb http://us.archive.ubuntu.com/ubuntu/ precise-updates main restricted
deb-src http://us.archive.ubuntu.com/ubuntu/ precise-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://us.archive.ubuntu.com/ubuntu/ precise universe
deb-src http://us.archive.ubuntu.com/ubuntu/ precise universe
deb http://us.archive.ubuntu.com/ubuntu/ precise-updates universe
deb-src http://us.archive.ubuntu.com/ubuntu/ precise-updates universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu 
## team, and may not be under a free licence. Please satisfy yourself as to 
## your rights to use the software. Also, please note that software in 
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://us.archive.ubuntu.com/ubuntu/ precise multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ precise multiverse
deb http://us.archive.ubuntu.com/ubuntu/ precise-updates multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ precise-updates multiverse

## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
deb http://us.archive.ubuntu.com/ubuntu/ precise-backports main restricted universe multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ precise-backports main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu precise-security main restricted
deb-src http://security.ubuntu.com/ubuntu precise-security main restricted
deb http://security.ubuntu.com/ubuntu precise-security universe
deb-src http://security.ubuntu.com/ubuntu precise-security universe
deb http://security.ubuntu.com/ubuntu precise-security multiverse
deb-src http://security.ubuntu.com/ubuntu precise-security multiverse

## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# deb http://archive.canonical.com/ubuntu precise partner
# deb-src http://archive.canonical.com/ubuntu precise partner

## Uncomment the following two lines to add software from Ubuntu's
## 'extras' repository.
## This software is not part of Ubuntu, but is offered by third-party
## developers who want to ship their latest software.
deb http://extras.ubuntu.com/ubuntu precise main
deb-src http://extras.ubuntu.com/ubuntu precise main

sudo apt-get install gcc生成:

sudo apt-get install gcc
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package gcc is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'gcc' has no installation candidate

sudo dpkg -C不返回任何内容。

答案1

  1. 检查你的/etc/apt/sources.list,也许你有多个分布?
  2. 它说,gcc(至少从 4.4.3 版本开始)无法安装,为什么?您可以尝试使用命令安装它,从而轻松测试这一点apt-get install gcc
  3. 使用以下命令检查您的系统是否只有干净的软件包dpkg -C。如果有损坏或未配置的软件包,请使用dpkg --configure -a或通过删除/重新安装来修复它们。

经常发生的情况是,您的远程存储库中有多个版本的软件包。例如,您有一个来自测试和稳定版本的 build-essential,但相应的 gcc 只能从稳定版本访问。结果:

  • 尝试安装 build-essential 时,包管理器会尝试获取最新的包版本,
  • 此软件包版本需要较新的 gcc 版本,就像您在稳定存储库中看到的一样。

您可以使用简单的 轻松检查类似问题apt-cache show build-essential。如果您获得多个软件包(版本不同),您可以考虑尝试早期版本。apt-get install packagename=1.2.3将为您安装版本为 1.2.3 的软件包。

我建议用你的命令输出来扩展你的问题。

答案2

找到了解决方案。经过更多试验,我发现无法使用 apt 安装其他软件包。然后我注意到运行 apot-get update 时出现哈希总和不匹配错误。最后我发现运行以下命令解决了我的问题:

apt-get clean
rm -rf /var/lib/apt/lists/*
apt-get clean
apt-get update
apt-get upgrade

运行此程序后,我现在可以安装 build-essential 包。

相关内容