“ google-chrome-stable取决于libstdc ++ 6(> = 4.8.0);但是:系统上的libstdc ++ 6版本是4.6.3-1ubuntu5。”


10

我正在尝试google-chrome-stable在全新的ubuntu 12.04安装上进行安装。我运行以下命令

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome*.deb

我收到以下错误

dpkg: dependency problems prevent configuration of google-chrome-stable:
 google-chrome-stable depends on libstdc++6 (>= 4.8.0); however:
Version of libstdc++6 on system is 4.6.3-1ubuntu5.
 google-chrome-stable depends on lsb-base (>= 4.1); however:
Version of lsb-base on system is 4.0-0ubuntu20.3.
dpkg: error processing google-chrome-stable (--install):
 dependency problems - leaving unconfigured
Processing triggers for man-db ...
Processing triggers for bamfdaemon ...
Rebuilding /usr/share/applications/bamf.index...
Processing triggers for desktop-file-utils ...
Processing triggers for gnome-menus ...
Errors were encountered while processing:
 google-chrome-stable

当我运行时,sudo apt-get install -f我只是删除了google-chrome-stable:

The following packages will be REMOVED
  google-chrome-stable

如果我寻找所需的版本,例如,我尝试sudo apt-get install libstdc++6=4.8.0找不到该版本:

E: Version ‘4.8.0’ for ‘libstdc++6’ was not found

我该如何解决?

我知道不再支持32位版本的Ubuntu 12.04。我正在运行64位Ubuntu版本。


@glut实际标题正确。它说确切的错误信息。
Braiam

@Braiam我认为这只是部分准确,因为它不包括lsb_base错误
Glutanimate

@Glutanimate,但基于lsb的库没有Chrome使用的库/二进制文件。
Braiam

@Braiam好的,是的。现在,我想起来了,大多数用户还是会搜索错误消息的第一部分,所以让我们继续。
谷氨酰胺

Answers:


14

您收到这些错误是因为Google终止了对Ubuntu 12.04的支持。

Google:我们将终止对32位Linux Ubuntu Precise(12.04)上的Google Chrome的支持。

您也可以安装chromium-browser基于其构建的Google Chrome浏览器。

您还可以安装Ubuntu 14.04 LTS或Ubuntu 15.10(均受支持)以使用Chrome。

但是,我建议您等到4月21日发布新的Ubuntu 16.04 LTS。

您应该考虑到Ubuntu 12.04 LTS仅剩一年的官方安全支持。


我有64位Ubuntu版本。我刚刚重新安装了操作系统,直到一个星期前,我才将chrome用于相同的配置。我不好,我没有这么说,对不起
fmonegaglia 16-4-18的

5
@fmonegaglia:最重要的是,不再使用Ubuntu 12.04,而与使用32位还是64位Ubuntu版本无关。Google Chrome只能安装在受支持的64位Ubuntu版本上,从Ubuntu 14.04 ...开始::)
cl-netbox

这绝对是正确的答案。不幸的是,无论出于何种原因,我们中的一些人都坚持使用12.04。应该花精力下12.04,而不是像降级这样的临时解决方案(如下)。但是有时您确实需要使某些东西正常工作。
lathonez '16

6

最后编辑(2017-09-13)

此解决方案不再适用于60或更高版本的Chrome。最新的软件包取决于libc6≥2.17,这些软件包无法安装在Ubuntu 12.04上。如果您仍在使用Precise,则应该考虑升级(如我所做的那样),或者如果仍然无法升级,请切换到其他浏览器(尽管此时您不太可能找到仍在维护的任何浏览器)。


编辑(2016-12-06):看起来Chrome现在也依赖于libfontconfig1的更新版本(≥2.9.0)。我已经相应地更新了脚本。到目前为止,新版本似乎运行良好,但是请注意,随着每个伪装的依赖项的出现,您可能会期望应用程序变得不稳定。

编辑(2017-06-10):Chrome 59带有新的依赖项(libfontconfig1≥2.11,libpango和libpangocairo)。我已经更新了脚本以删除这些脚本。同样适用于Chrome稳定性的警告。


Ubuntu 12.04 64位上的依赖项问题的解决方法

Chrome对Ubuntu 12.04版的官方支持已经结束,但这并不意味着您现在必须放弃Chrome。接下来是关于如何在64位Ubuntu 12.04上安装最新的Chrome版本(截至2016-06-28)的快速教程。

警告这是一个非常棘手的解决方案,可能会在任何时间点停止工作。在继续之前,请确保您知道自己在做什么。

先决条件

更新的内核

重要: 请注意,更新内核可能会带来一系列麻烦和硬件兼容性问题。在继续此步骤之前,请确保您知道如何切换到较早的内核。

最新的Chrome版本取决于许多与沙盒相关的内核功能,而Ubuntu 12.04的默认内核(3.2.0)中不提供这些功能。如果您使用较新的映像(点发行版12.04.2及更高版本)安装了Ubuntu 12.04,则很有可能已经在使用更新的内核了;但是,如果您仍然使用原始内核版本,则可以通过LTS硬件启用堆栈软件包将其更新为Ubuntu 14.04的内核堆栈:

sudo apt-get install --install-recommends linux-generic-lts-trusty

确保在执行内核升级后重新引导系统。如果一切顺利,您的系统现在应该使用Linux内核3.13.X。

依赖问题

如果您在尝试安装最新的Chrome版本时看到错误消息,则会看到两个明显的依赖性问题:

  1. libstdc++6 (>= 4.8.0):这是GNU标准C ++库。Chrome发行版50.X及更高版本取决于该库的4.8.0版本,但默认情况下Ubuntu 12.04仅附带4.6.3。
  2. lsb-base (>= 4.1):这是Linux Standard Base软件包。它表明发行版符合Linux Foundation设置的一组标准。Chrome版本50.X +需要符合LSB base 4.1中定义的标准,而Ubuntu 12.04仅符合4.0。

事实证明,这两个问题都可以很容易地解决:

libstdc ++ 6(> = 4.8.0)

重要提示: libstdc ++ 6是许多不同软件包所依赖的重要系统库。将此软件包升级到较新的版本可能很危险,并可能导致系统稳定性问题。我在执行此升级的两个系统上都没有遇到任何问题,但是-与往常一样-您的里程可能会有所不同。

幸运的是,libstdc++64.8.X可在Ubuntu官方工具链测试构建PPA。第一步,我们将此PPA添加到我们的软件源中:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update

从现在开始安装Google Chrome浏览器将使libstdc++6PPA摆脱依赖,从而消除了第一个依赖问题。解决了这个问题之后,我们继续第二个问题。

lsb-base(> = 4.1)

事实证明,我们实际上不需要安装此软件包的更新版本即可运行最新版本的Chrome。目前,Chrome似乎实际上并不依赖于LSB base 4.1中的任何修改后的标准,因此对它的依赖lsb-base (>= 4.1)似乎是一种软依赖,我们可以简单地删除它。

当然,您可以手动执行此操作,但是我编写了一个脚本,该脚本可以帮助您完成以下大多数步骤。

安装脚本

#!/bin/bash

# Name:         Chrome installer for Ubuntu 12.04 LTS 64-bit
# Author:       (c) 2016-2017 Glutanimate
# License:      GNU GPLv3
# Manual:       http://askubuntu.com/a/792442/

# Description:
#
# Downloads latest chrome release and makes it compatible with 12.04.
#
# This is a hack that will likely stop working at some point,
# but for those of us who can't upgrade Ubuntu just yet
# it's better than running a completely obsolete Chrome release.

set -e

tmpDir=$(mktemp -d /tmp/deb.XXXXXXXXXX)
debUrl="https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb"
debFile="$tmpDir/chrome.deb"

cleanup () {
  [[ -n "$tmpDir" ]] && [[ -d "$tmpDir" ]] && rm -r "$tmpDir"
}

trap "cleanup" EXIT

echo "Downloading latest Chrome release..."
mkdir -p "$tmpDir/build"
buildDir="$tmpDir/build"
wget "$debUrl" -O "$tmpDir/chrome.deb" || exit 1
echo "Extracting original deb file..."
dpkg-deb -x "$debFile" "$buildDir"
dpkg-deb --control "$debFile"  "$buildDir/DEBIAN"
echo "Updating dependencies..."
perl -pe  's|lsb-base \(\>\= 4\.1\)|lsb-base \(\>\= 4\.0\)|g' "$buildDir/DEBIAN/control" > "$buildDir/DEBIAN/control.1"
perl -pe  's|libfontconfig1 \(\>\= 2\.11\)|libfontconfig1 \(\>\= 2\.8\.0\)|g' "$buildDir/DEBIAN/control.1" > "$buildDir/DEBIAN/control"
perl -pe  's|libpango-1\.0-0 \(\>\= 1\.14\.0\), libpangocairo-1\.0-0 \(\>\= 1\.14\.0\), ||g' "$buildDir/DEBIAN/control" > "$buildDir/DEBIAN/control.1"
mv "$buildDir/DEBIAN/control.1" "$buildDir/DEBIAN/control"
echo "Building new deb file..."
dpkg -b "$buildDir" "$tmpDir/chrome_modified.deb"
echo "Installing new Chrome version. Please enter your password:"
sudo dpkg -i "$tmpDir/chrome_modified.deb"

复制上面的脚本,将其另存为install_chrome.sh并将其标记为可执行文件(通过chmod +x install_chrome.sh或文件管理器的属性对话框)。

完成后,您可以使用以下命令执行脚本:

./install_chrome.sh

该脚本将继续下载最新的稳定Chrome版本,对其进行修改以消除对基于lsb-base 4.1的依赖性,并提示您通过来安装更新的.deb文件dpkg

恭喜,您现在在Ubuntu 12.04上使用Google Chrome的更新版本!

更新

要更新Chrome,只需再次运行脚本即可。

未来兼容性

重要提示:由于此解决方案可能随时停止运行,因此建议您始终将最新的有效修改.deb文件另存为备份,以防Chrome由于更新而突然无法启动。

要保存最新的修改后的安装程序,只需sudo在运行脚本时获得密码提示后立即转到脚本的临时目录(即,在安装修改后的.deb文件之前)。临时目录应该位于下面的某个位置/tmp/deb.XXXXXXXXX(其中XXXXXXXXX是一个随机字符串)。


1
由于我公司实施的政策,我只能使用Ubuntu 12.04。无论如何,我都能使用您的脚本安装chrome。非常感谢!
Eugeniu Rosca '16

4

我认为你不能。他们刚刚升级,而依赖关系在12.04中无法满足

我在travis版本上遇到了同样的问题,并已降级。这里加载旧版本。

显然,这不是一个很好的答案,我找了好一阵子,不降级就找不到办法。


1
我要去这个。当然,这并不是最好的方法,但是它对我来说是一个临时解决方案,因为我现在无法升级到更高的Ubuntu版本。
fmonegaglia '16

链接到mirror.pcbeta.com的链接消失了
404。– AlexD

2

由于Google停止了对Chrome和12.04的支持,因此最好的解决方案是安装Chromium:

wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo apt-get update
sudo apt-get install chromium-browser

1
dpkg: dependency problems prevent configuration of google-chrome-stable:
 google-chrome-stable depends on libstdc++6 (>= 4.8.0); however:
Version of libstdc++6 on system is 4.6.3-1ubuntu5.
 google-chrome-stable depends on lsb-base (>= 4.1); however:
Version of lsb-base on system is 4.0-0ubuntu20.3.

基本上,谷歌浏览器要求的是lsb-base和libstdc ++ 6,这在Precise中不可用:

>lsb-base   | 4.0-0ubuntu20          | precise         | all
>lsb-base   | 4.0-0ubuntu20.3        | precise-updates | all
 lsb-base   | 4.1+Debian11ubuntu6    | trusty          | all
 lsb-base   | 4.1+Debian11ubuntu6.1  | trusty-proposed | all
 lsb-base   | 4.1+Debian11ubuntu8    | vivid           | all
 lsb-base   | 4.1+Debian11ubuntu8    | wily            | all
 lsb-base   | 9.20160110             | xenial          | all
>libstdc++6 | 4.6.3-1ubuntu5         | precise         | amd64, armel, armhf, i386, powerpc
 libstdc++6 | 4.8.2-19ubuntu1        | trusty          | amd64, arm64, armhf, i386, powerpc, ppc64el
 libstdc++6 | 4.8.4-2ubuntu1~14.04.1 | trusty-updates  | amd64, arm64, armhf, i386, powerpc, ppc64el
 libstdc++6 | 4.9.2-10ubuntu13       | vivid           | amd64, arm64, armhf, i386, powerpc, ppc64el
 libstdc++6 | 5.2.1-22ubuntu2        | wily            | amd64, arm64, armhf, i386, powerpc, ppc64el
 libstdc++6 | 5.3.1-14ubuntu2        | xenial          | amd64, arm64, armhf, i386, powerpc, ppc64el, s390x

您可能需要Trusty(也是LTS)或更高版本,才能从Google安装google-chrome,或者仅安装Ubuntu存储库chrome-browser提供的服务。


1

我无法对Glutanimate答案直接发表评论,但无论如何我都想分享。我需要在安装脚本中添加另一行:

perl -pe  's|libnspr4 \(\>\= 2\:4\.9\-2\~\)|libnspr4 \(\>\= 4\.12\)|g' "$buildDir/DEBIAN/control.1" > "$buildDir/DEBIAN/control"

Chrome似乎可以正常运行,但是不允许我以其他方式安装它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.