“Google-Chrome-Stable hängt von libstdc ++ 6 ab (> = 4.8.0); jedoch: Die Version von libstdc ++ 6 auf dem System ist 4.6.3-1ubuntu5. ”

10

Ich versuche, google-chrome-stableauf einer neuen Ubuntu 12.04-Installation zu installieren . Ich führe die folgenden Befehle aus

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

Ich erhalte die folgenden Fehler

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

Wenn ich laufe, habe sudo apt-get install -fich nur Google-Chrome-Stable entfernt:

The following packages will be REMOVED
  google-chrome-stable

Wenn ich nach den erforderlichen Versionen suche, z. B. versuche sudo apt-get install libstdc++6=4.8.0ich, die Version nicht zu finden:

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

Wie behebe ich das?

Ich weiß, dass die 32-Bit-Version von Ubuntu 12.04 nicht mehr unterstützt wird. Ich verwende eine 64-Bit-Ubuntu-Version.

Fmonegaglia
quelle
@glut der tatsächliche Titel ist korrekt. Es sagt die genaue Fehlermeldung.
Braiam
@Braiam Ich würde argumentieren, dass es nur teilweise genau ist, weil es den lsb_base-Fehler nicht enthält
Glutanimate
@Glutanimate, aber lsb-base hat keine Bibliothek / Binärdatei, die Chrome verwendet.
Braiam
@Braiam Ok, stimmt. Jetzt, wo ich darüber nachdenke, werden die meisten Benutzer sowieso nach dem ersten Teil der Fehlermeldung suchen, also bleiben wir dabei.
Glutanimate

Antworten:

14

Sie erhalten diese Fehler, weil Google die Unterstützung für Ubuntu 12.04 eingestellt hat.

Google: Wir werden die Unterstützung für Google Chrome unter 32-Bit-Linux, Ubuntu Precise (12.04), beenden.

Alternativ können Sie das installieren, chromium-browserauf dem Google Chrome basiert.

Sie können auch Ubuntu 14.04 LTS oder Ubuntu 15.10 installieren - beide werden unterstützt -, um Chrome zu verwenden.

Ich schlage jedoch vor, dass Sie bis zum 21. April warten, bis das neue Ubuntu 16.04 LTS veröffentlicht wird.

Sie sollten berücksichtigen, dass Ubuntu 12.04 LTS nur noch ein Jahr offizielle Sicherheitsunterstützung bietet.

cl-netbox
quelle
Ich habe eine 64-Bit-Ubuntu-Version. Ich habe gerade das Betriebssystem neu installiert. Bis vor einer Woche hatte Chrome genau die gleiche Konfiguration. Mein schlechtes habe ich nicht gesagt, sorry
fmonegaglia
5
@fmonegaglia: Das Wichtigste dabei ist, dass Ubuntu 12.04 im Allgemeinen nicht mehr unterstützt wird, unabhängig davon, ob die 32-Bit- oder die 64-Bit-Ubuntu-Edition verwendet wird. Google Chrome kann nur auf 64-Bit-Ubuntu-Editionen installiert werden, die ab Ubuntu 14.04 unterstützt werden ... :)
cl-netbox
Dies ist definitiv die richtige Antwort. Leider stecken einige von uns aus irgendeinem Grund mit 12.04 fest. Es sollten Anstrengungen unternommen werden, um 12.04 zu beenden, anstatt vorübergehende Lösungen wie ein Downgrade (siehe unten). Manchmal muss man jedoch nur Dinge zum Laufen bringen.
Lathonez
6

Letzte Änderung (2017-09-13) :

Diese Lösung funktioniert nicht mehr für Chrome-Versionen ab 60 . Die neuesten Pakete hängen von libc6 ≥ 2.17 ab, das unter Ubuntu 12.04 nicht installiert werden kann. Wenn Sie Precise weiterhin verwenden, sollten Sie entweder ein Upgrade in Betracht ziehen (wie ich), oder wenn Sie dies immer noch nicht tun können, wechseln Sie zu einem anderen Browser (obwohl es zu diesem Zeitpunkt unwahrscheinlich ist, dass Sie noch einen finden, der noch gewartet wird).


Bearbeiten (06.12.2016) : Chrome hängt anscheinend auch von einer aktualisierten Version von libfontconfig1 ab (≥ 2.9.0). Ich habe das Skript entsprechend aktualisiert. Die neue Version scheint bisher einwandfrei zu funktionieren, aber bitte beachten Sie, dass Sie mit jeder vorgetäuschten Abhängigkeit erwarten können, dass die App weniger stabil wird.

Bearbeiten (2017-06-10) : Chrome 59 enthält neue Abhängigkeiten (libfontconfig1 ≥ 2.11, libpango und libpangocairo). Ich habe das Skript aktualisiert, um diese zu entfernen. Die gleiche Einschränkung hinsichtlich der Stabilität von Chrome gilt erneut.


Problemumgehung für Abhängigkeitsprobleme unter Ubuntu 12.04 64bit

Die offizielle Chrome-Unterstützung für Ubuntu Version 12.04 wurde beendet. Dies bedeutet jedoch nicht, dass Sie Chrome noch nicht verlassen müssen. Im Folgenden finden Sie eine kurze Anleitung zur Installation der neuesten Chrome-Version (Stand: 28.06.2016) unter Ubuntu 12.04 64-Bit.

Warnung : Dies ist eine sehr hackige Lösung, die zu jedem Zeitpunkt möglicherweise nicht mehr funktioniert. Bitte stellen Sie sicher, dass Sie wissen, was Sie tun, bevor Sie fortfahren.

Voraussetzungen

Kernel aktualisiert

Wichtig: Bitte beachten Sie, dass das Aktualisieren Ihres Kernels möglicherweise mit eigenen Problemen und Hardwarekompatibilitätsproblemen verbunden ist. Stellen Sie sicher, dass Sie wissen, wie Sie zu einem früheren Kernel wechseln, bevor Sie mit diesem Schritt fortfahren.

Neuere Chrome-Versionen hängen von einer Reihe von Kernelfunktionen im Zusammenhang mit Sandboxing ab, die im Standardkernel von Ubuntu 12.04 (3.2.0) nicht verfügbar sind. Wenn Sie Ubuntu 12.04 mit einem neueren Image (ab Version 12.04.2) installiert haben, haben Sie wahrscheinlich bereits einen aktualisierten Kernel. Wenn Sie sich jedoch noch in der ursprünglichen Kernel-Version befinden, können Sie über das LTS-Hardware-Enablement-Stack-Paket auf den Kernel-Stack von Ubuntu 14.04 aktualisieren :

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

Stellen Sie sicher, dass Sie Ihr System nach dem Ausführen des Kernel-Upgrades neu starten. Wenn alles gut gegangen ist, sollte Ihr System jetzt den Linux-Kernel 3.13.X verwenden.

Abhängigkeitsprobleme

Wenn Sie sich die Fehlermeldung ansehen, die Sie erhalten, wenn Sie versuchen, einen aktuellen Chrome-Build zu installieren, werden zwei unterschiedliche Abhängigkeitsprobleme angezeigt:

  1. libstdc++6 (>= 4.8.0): Dies ist die GNU-Standard-C ++ - Bibliothek. Chrome-Versionen 50.X und höher hängen von Version 4.8.0 dieser Bibliothek ab, Ubuntu 12.04 wird jedoch standardmäßig nur mit 4.6.3 geliefert.
  2. lsb-base (>= 4.1): Dies ist das Linux Standard Base-Paket. Es zeigt an, dass die Distribution einer Reihe von Standards entspricht, die von der Linux Foundation festgelegt wurden. Chrome-Versionen 50.X + erfordern die Einhaltung der in LSB Base 4.1 definierten Standards, Ubuntu 12.04 ist jedoch nur mit 4.0 kompatibel.

Wie sich herausstellt, können diese beiden Probleme ziemlich einfach behoben werden:

libstdc ++ 6 (> = 4.8.0)

Wichtig: libstdc ++ 6 ist eine wichtige Systembibliothek, von der viele verschiedene Pakete abhängen. Ein Upgrade dieses Pakets auf eine neuere Version kann gefährlich sein und zu Problemen mit der Systemstabilität führen. Ich habe selbst keine Probleme mit den beiden Systemen festgestellt, auf denen ich dieses Upgrade durchgeführt habe, aber - wie immer - kann Ihr Kilometerstand variieren.

Zum Glück ist libstdc++64.8.X in den offiziellen Ubuntu- Toolchain- Testbuilds für PPA verfügbar . Als ersten Schritt fügen wir diese PPA zu unseren Softwarequellen hinzu:

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

Wenn Sie Google Chrome ab diesem Zeitpunkt libstdc++6installieren, wird die Abhängigkeit von der PPA entfernt, wodurch das erste Abhängigkeitsproblem behoben wird. Nachdem dies gelöst ist, fahren wir mit der zweiten Ausgabe fort.

lsb-Base (> = 4,1)

Es stellt sich heraus, dass wir keine aktualisierte Version dieses Pakets installieren müssen, um die neuesten Versionen von Chrome zum Laufen zu bringen. Im Moment scheint Chrome nicht wirklich von einem der geänderten Standards in LSB Base 4.1 abhängig lsb-base (>= 4.1)zu sein , daher scheint die Abhängigkeit von eine weiche Abhängigkeit zu sein, die wir einfach entfernen können.

Sie können dies natürlich manuell tun, aber ich habe ein Skript geschrieben, das die meisten der folgenden Schritte für Sie erledigt.

Installationsskript

#!/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"

Kopieren Sie das obige Skript, speichern Sie es als install_chrome.shund markieren Sie es als ausführbar (entweder über chmod +x install_chrome.shoder über das Eigenschaftendialogfeld Ihres Dateimanagers).

Nachdem Sie dies getan haben, können Sie das Skript ausführen mit:

./install_chrome.sh

Das Skript lädt die neueste stabile Chrome-Version herunter, ändert sie, um die Abhängigkeit von lsb-base 4.1 zu beseitigen, und fordert Sie auf, die aktualisierte .debDatei über zu installieren dpkg.

Herzlichen Glückwunsch, Sie verwenden jetzt eine aktualisierte Version von Google Chrome unter Ubuntu 12.04!

Aktualisierung

Um Chrome zu aktualisieren, führen Sie das Skript einfach erneut aus.

Zukünftige Kompatibilität

Wichtig: Da diese Lösung möglicherweise jederzeit nicht mehr funktioniert, empfehle ich Ihnen, immer die neueste funktionierende geänderte .debDatei als Backup zu speichern, falls Chrome aufgrund eines Updates plötzlich den Start verweigert.

Um das zuletzt geänderte Installationsprogramm zu speichern, rufen Sie einfach das temporäre Verzeichnis des Skripts auf, nachdem Sie sudobeim Ausführen des Skripts die Kennwortabfrage erhalten haben (dh direkt vor der Installation der geänderten .debDatei). Das temporäre Verzeichnis sollte sich irgendwo unter befinden /tmp/deb.XXXXXXXXX(wo XXXXXXXXXsich eine zufällige Zeichenfolge befindet).

Glutanimat
quelle
1
Aufgrund der von meinem Unternehmen durchgesetzten Richtlinien bin ich mit Ubuntu 12.04 festgefahren. Ich konnte Chrome trotzdem mit Ihrem Skript installieren. Vielen Dank!
Eugeniu Rosca
4

Ich glaube nicht, dass du kannst. Sie wurden gerade aktualisiert und die Abhängigkeiten können in 12.04 nicht erfüllt werden .

Ich hatte das gleiche Problem bei einem Travis-Build und habe ein Downgrade durchgeführt. Viele alte Versionen hier .

Offensichtlich keine gute Antwort, ich suchte eine Weile und konnte keinen Weg finden, ohne ein Downgrade durchzuführen.

Lathonez
quelle
1
Ich gehe mit diesem. Es ist natürlich nicht der beste Weg, aber es funktioniert für mich als vorübergehende Lösung, da ich derzeit kein Upgrade auf spätere Ubuntu-Versionen durchführen kann.
Fmonegaglia
Der Link zu mirror.pcbeta.com ging 404.
AlexD
2

Da Google die Unterstützung für Chrome und 12.04 eingestellt hat, besteht Ihre beste Lösung darin, stattdessen Chromium zu installieren:

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
Arahkun
quelle
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.

Grundsätzlich fragt Google Chrome nach lsb-base und libstdc ++ 6, die in Precise nicht verfügbar sind:

>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

Sie benötigen Trusty (das auch LTS ist) oder höher, um Google-Chrome von Google zu installieren, oder installieren Sie einfach das vom Ubuntu-Repositorys bereitgestellte Chrom-Browser.

Braiam
quelle
1

Ich kann die Antwort von Glutanimate nicht direkt kommentieren, möchte sie aber trotzdem teilen. Ich musste dem Installationsskript eine zusätzliche Zeile hinzufügen:

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

Chrome scheint damit gut zu funktionieren, aber es würde mir nicht erlauben, es anders zu installieren.

Fabian Dellwing
quelle