我正在尝试安装在 Ubuntu 14.04 上构建 Chromium 所需的依赖项,但我面临以下消息:
The following packages have unmet dependencies:
g++-4.8-multilib : Depends: gcc-4.8-multilib (= 4.8.2-19ubuntu1) but it is not going to be installed
Depends: lib32stdc++-4.8-dev (= 4.8.2-19ubuntu1) but it is not going to be installed
Depends: libx32stdc++-4.8-dev (= 4.8.2-19ubuntu1) but it is not going to be installed
lib32gcc1 : Depends: gcc-4.9-base (= 4.9-20140406-0ubuntu1) but 4.9.1-0ubuntu1 is to be installed
libbluetooth-dev : Depends: libbluetooth3 (= 4.101-0ubuntu13) but 4.101-0ubuntu13.1 is to be installed
libcairo2-dbg : Depends: libcairo2 (= 1.13.0~20140204-0ubuntu1) but 1.13.0~20140204-0ubuntu1.1 is to be installed
libcairo2-dev : Depends: libcairo2 (= 1.13.0~20140204-0ubuntu1) but 1.13.0~20140204-0ubuntu1.1 is to be installed
Depends: libcairo-gobject2 (= 1.13.0~20140204-0ubuntu1) but 1.13.0~20140204-0ubuntu1.1 is to be installed
Depends: libfontconfig1-dev (>= 2.2.95) but it is not going to be installed
libfontconfig1-dbg : Depends: libfontconfig1 (= 2.11.0-0ubuntu4) but 2.11.0-0ubuntu4.1 is to be installed
libgbm-dev : Depends: libgbm1 (= 10.1.0-4ubuntu5)
libgl1-mesa-glx:i386 : Depends: libglapi-mesa:i386 (= 10.1.0-4ubuntu5)
Recommends: libgl1-mesa-dri:i386 (>= 7.2)
Conflicts: libgl1
libgl1-mesa-glx-lts-utopic : Conflicts: libgl1:i386
Conflicts: libgl1-mesa-glx:i386
libglib2.0-0-dbg : Depends: libglib2.0-0 (= 2.40.0-2) but 2.40.2-0ubuntu1 is to be installed
libglib2.0-dev : Depends: libglib2.0-0 (= 2.40.0-2) but 2.40.2-0ubuntu1 is to be installed
Depends: libglib2.0-bin (= 2.40.0-2)
libgtk2.0-dev : Depends: libpango1.0-dev (>= 1.20) but it is not going to be installed
libpango1.0-0-dbg : Depends: libpango-1.0-0 (= 1.36.3-1ubuntu1) but 1.36.3-1ubuntu1.1 is to be installed or
libpangocairo-1.0-0 (= 1.36.3-1ubuntu1) but 1.36.3-1ubuntu1.1 is to be installed or
libpangoft2-1.0-0 (= 1.36.3-1ubuntu1) but 1.36.3-1ubuntu1.1 is to be installed or
libpangoxft-1.0-0 (= 1.36.3-1ubuntu1) but 1.36.3-1ubuntu1.1 is to be installed
libpulse-dev : Depends: libpulse0 (= 1:4.0-0ubuntu11) but 1:4.0-0ubuntu11.1 is to be installed
Depends: libpulse-mainloop-glib0 (= 1:4.0-0ubuntu11) but 1:4.0-0ubuntu11.1 is to be installed
libstdc++6-4.6-dbg : Depends: libgcc1-dbg but it is not going to be installed
libudev-dev : Depends: libudev1 (= 204-5ubuntu20) but 204-5ubuntu20.11 is to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.
You will have to install the above packages yourself.
它说我必须自己安装这些软件包,但该怎么做呢?
当我尝试时,sudo apt-get install <some_package>
它告诉我(例如 gcc-4.8-multilib):
gcc-4.8-multilib : Depends: lib32gcc-4.8-dev (= 4.8.2-19ubuntu1) but it is not going to be installed
Depends: libx32gcc-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.
有人可以帮我解决所有这些软件包的安装问题吗?
更新1:
因为sudo apt-get install lib32gcc-4.8-dev
我得到:
lib32gcc-4.8-dev : Depends: lib32gcc1 (>= 1:4.8.2-19ubuntu1) but it is not going to be installed
Depends: libx32gcc1 (>= 1:4.8.2-19ubuntu1) but it is not going to be installed
Depends: lib32asan0 (>= 4.8.2-19ubuntu1) but it is not going to be installed
Depends: libx32asan0 (>= 4.8.2-19ubuntu1) but it is not going to be installed
因为apt-cache policy lib32gcc-4.8-dev
我得到:
lib32gcc-4.8-dev:
Installed: (none)
Candidate: 4.8.2-19ubuntu1
Version table:
4.8.2-19ubuntu1 0
500 http://ro.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
更新2:
因为sudo apt-get install lib32gcc1
我得到:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
lib32gcc1 : Depends: gcc-4.9-base (= 4.9-20140406-0ubuntu1) but 4.9.1-0ubuntu1 is to be installed
E: Unable to correct problems, you have held broken packages.
因为apt-cache policy lib32gcc1
我得到:
Installed: (none)
Candidate: 1:4.9-20140406-0ubuntu1
Version table:
1:4.9-20140406-0ubuntu1 0
500 http://ro.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
1:4.6.3-1ubuntu5 0
500 mirror://mirrors.ubuntu.com/mirrors.txt/ precise/main amd64 Packages
因为apt-cache policy lib32gcc-4.8-dev lib32gcc1 libx32gcc1 lib32asan0 libx32asan0
我得到:
lib32gcc-4.8-dev:
Installed: (none)
Candidate: 4.8.2-19ubuntu1
Version table:
4.8.2-19ubuntu1 0
500 http://ro.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
lib32gcc1:
Installed: (none)
Candidate: 1:4.9-20140406-0ubuntu1
Version table:
1:4.9-20140406-0ubuntu1 0
500 http://ro.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
1:4.6.3-1ubuntu5 0
500 mirror://mirrors.ubuntu.com/mirrors.txt/ precise/main amd64 Packages
libx32gcc1:
Installed: (none)
Candidate: 1:4.9-20140406-0ubuntu1
Version table:
1:4.9-20140406-0ubuntu1 0
500 http://ro.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
lib32asan0:
Installed: (none)
Candidate: 4.8.2-19ubuntu1
Version table:
4.8.2-19ubuntu1 0
500 http://ro.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
libx32asan0:
Installed: (none)
Candidate: 4.8.2-19ubuntu1
Version table:
4.8.2-19ubuntu1 0
500 http://ro.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
更新3:
因为apt-cache policy gcc-4.9-base
我得到:
gcc-4.9-base:
Installed: 4.9.1-0ubuntu1
Candidate: 4.9.1-0ubuntu1
Version table:
*** 4.9.1-0ubuntu1 0
100 /var/lib/dpkg/status
4.9-20140406-0ubuntu1 0
500 http://ro.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
当我尝试这样做时sudo apt-get purge gcc-4.9-base
,我得到:
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
libgcc1 : Depends: gcc-4.9-base (= 4.9.1-0ubuntu1) but it is not going to be installed
libudev1 : Depends: libcgmanager0 but it is not going to be installed
Depends: libnih-dbus1 (>= 1.0.0) but it is not going to be installed
Depends: libnih1 (>= 1.0.0) but it is not going to be installed
libxcb1 : Depends: libxau6 but it is not going to be installed
Depends: libxdmcp6 but it is not going to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.
答案1
打开你的终端并输入
sudo apt-get autoclean
sudo apt-get autoremove
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get autoclean
清除本地存储库中检索到的包文件/var/cache/apt/archives
。不同之处在于,它仅删除无法再下载的包文件,并且基本上没有用处。
sudo apt-get autoremove
用于删除为满足其他包的依赖关系而自动安装但现在不再需要的包。
autoclean
并autoremove
用于确保没有可能影响您的系统的不需要的软件包。
sudo apt-get update
更新源列表并重新同步源中的包索引文件。
sudo apt-get dist-upgrade
dist-upgrade 除了执行升级功能外,还可以智能地处理软件包的依赖关系变化
答案2
至少有一些gcc
软件包是手动安装的,并且对应的版本比 Ubuntu 14.04 中的版本更新。要安装g++-multilib
及其依赖项,您需要将这些软件包降级到存档中的版本。
从跑步开始
sudo apt-get install gcc-4.9-base=4.9-20140406-0ubuntu1
并从那里开始......这应该会给你带来一堆错误,这些错误会告诉你需要降级哪些其他软件包。
要降级软件包,您需要运行apt-cache policy
每个软件包以确定存档中的版本(即带有 URL 的版本trusty
),并将其添加到sudo apt-get install
上面的行;所以你最终会得到
sudo apt-get install gcc-4.9-base=4.9-20140406-0ubuntu1 package1=version1 package2=version2 ...
或者,您可以清除gcc
所有相关的软件包并重新安装它们。
显然,您还有其他带有手动安装版本的库,因此可能需要花费大量工作来恢复系统以匹配存档。