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

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

 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版本。

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

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

您也可以安装构建Google Chrome的Chrome chromium-browser

你也可以安装Ubuntu 14.04 LTS或Ubuntu 15.10–两者都支持 – 使用Chrome。

但我建议你等到4月21日,新的Ubuntu 16.04 LTS将会发布。

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

最后编辑(2017-09-13)

此解决方案不再适用于Chrome 60及更高版本 。 最新的软件包依赖于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 64bit上依赖性问题的解决方法

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

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

先决条件

更新了内核

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

最近的Chrome版本依赖于许多与沙盒相关的内核function,这些function在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。

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

libstdc ++ 6(> = 4.8.0)

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

对我们来说幸运的是, libstdc++6 4.8.X可以在官方的Ubuntu 工具链中测试构建PPA 。 作为第一步,我们将把这个PPA添加到我们的软件源:

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

从此开始安装Google Chrome将从PPA中获取libstdc++6依赖关系,从而消除了第一个依赖问题。 解决了这个问题后,我们继续讨论第二个问题。

lsb-base(> = 4.1)

事实certificate,我们实际上并不需要安装此软件包的更新版本来运行最新版本的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的依赖,并提示您通过dpkg安装更新的.deb文件。

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

更新

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

未来兼容性

重要提示:由于此解决方案可能随时停止工作,因此建议您始终将最新的工作修改后的.deb文件保存为备份,以防Chrome因突然更新而拒绝启动。

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

我认为你不能。 它们刚刚升级,12.04无法满足依赖性 。

我在travis构建上遇到了同样的问题而且降级了。 这里有大量旧版本。

显然不是一个好的答案,我寻找了一段时间,并没有找到一个没有降级的方法。

由于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 
 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. 

基本上,Google Chrome要求使用精简版中没有的lsb-base和libstdc ++ 6:

 >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提供的版本。

我不能直接评论Glutanimate的答案,但无论如何我想分享它。 我需要在installscript中添加一行:

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

Chrome似乎运行正常,但它不允许我安装它。