„Google-chrome-stable zależy od libstdc ++ 6 (> = 4.8.0); jednakże: Wersja libstdc ++ 6 w systemie to 4.6.3-1ubuntu5. ”

10

Próbuję zainstalować google-chrome-stablena świeżej instalacji Ubuntu 12.04. Uruchamiam następujące polecenia

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

Otrzymuję następujące błędy

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

Kiedy uruchamiam sudo apt-get install -f, po prostu usunąłem google-chrome-stable:

The following packages will be REMOVED
  google-chrome-stable

Jeśli szukam wymaganych wersji, np. Próbuję sudo apt-get install libstdc++6=4.8.0nie mogę znaleźć wersji:

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

Jak to naprawić?

Wiem, że nie ma już obsługi 32-bitowej wersji Ubuntu 12.04. Używam 64-bitowej wersji Ubuntu.

fmonegaglia
źródło
@glut prawdziwy tytuł jest dokładny. Podaje dokładny komunikat o błędzie.
Braiam
@Braiam Twierdziłbym, że jest tylko częściowo dokładny, ponieważ nie zawiera błędu
lsb_base
@ Glutanimate, ale lsb-base nie ma biblioteki / pliku binarnego, którego używa Chrome.
Braiam
@Braiam Ok, prawda. Teraz, gdy o tym myślę, większość użytkowników i tak szuka pierwszej części komunikatu o błędzie, więc pozostańmy przy tym.
Glutanimate

Odpowiedzi:

14

Otrzymujesz te błędy, ponieważ Google zakończył obsługę Ubuntu 12.04.

Google: Zakończymy obsługę przeglądarki Google Chrome w 32-bitowym systemie Linux, Ubuntu Precise (12.04).

Możesz też zainstalować tę, chromium-browserna której zbudowana jest Google Chrome.

Możesz także zainstalować Ubuntu 14.04 LTS lub Ubuntu 15.10 - oba są obsługiwane - aby korzystać z Chrome.

Proponuję jednak poczekać do 21 kwietnia, kiedy zostanie wydane nowe Ubuntu 16.04 LTS.

Należy wziąć pod uwagę, że w Ubuntu 12.04 LTS pozostało tylko rok oficjalnej pomocy bezpieczeństwa.

cl-netbox
źródło
Mam 64-bitową wersję Ubuntu. Właśnie przeinstalowałem system operacyjny, miałem chrom działający na tej samej dokładnej konfiguracji jeszcze tydzień temu. Mój zły, nie powiedziałem tego, przepraszam
fmonegaglia 18.04.16
5
@fmonegaglia: Najważniejszą rzeczą jest to, że Ubuntu 12.04 zasadniczo nie jest już obsługiwany, niezależnie od tego, czy używana jest 32-bitowa czy 64-bitowa wersja Ubuntu. Google Chrome można zainstalować tylko w 64-bitowych wersjach Ubuntu, które są obsługiwane, począwszy od Ubuntu 14.04 ... :)
cl-netbox 18.04.16
To zdecydowanie poprawna odpowiedź. Niestety niektórzy z nas utknęli z 12.04 z jakiegokolwiek powodu. Należy poświęcić wysiłek, aby wyjść z 12.04, a nie tymczasowe rozwiązania, takie jak obniżenie (poniżej). Czasami jednak potrzebujesz tylko rzeczy.
lathonez 19.04.16
6

Ostatnia edycja (13.09.2017) :

To rozwiązanie nie działa już w wersjach Chrome 60 i nowszych . Najnowsze pakiety zależą od libc6 ≥ 2.17, których nie można zainstalować na Ubuntu 12.04. Jeśli nadal używasz Precise, powinieneś rozważyć aktualizację (tak jak ja), lub jeśli nie możesz tego zrobić dalej, przełącz się na inną przeglądarkę (chociaż w tym momencie raczej nie znajdziesz takiej, która jest nadal utrzymywana).


Edycja (2016-12-06) : Wygląda na to, że Chrome zależy teraz od zaktualizowanej wersji libfontconfig1 (≥ 2.9.0). Zaktualizowałem odpowiednio skrypt. Nowa wersja do tej pory wydaje się działać dobrze, ale pamiętaj, że z każdą udawaną zależnością możesz oczekiwać, że aplikacja będzie mniej stabilna.

Edycja (2017-06-10) : Chrome 59 ma nowe zależności (libfontconfig1 ≥ 2.11, libpango i libpangocairo). Zaktualizowałem skrypt, aby go usunąć. Ponownie obowiązuje to samo zastrzeżenie co do stabilności Chrome.


Obejście problemu dotyczącego zależności w systemie Ubuntu 12.04 64bit

Oficjalna obsługa Chrome dla Ubuntu w wersji 12.04 zakończyła się, ale to nie znaczy, że musisz jeszcze zrezygnować z Chrome. Poniżej znajduje się krótki samouczek dotyczący instalacji najnowszej wersji Chrome (od 28.06.2016) na 64-bitowym Ubuntu 12.04.

Ostrzeżenie : jest to bardzo hackerskie rozwiązanie, które może przestać działać w dowolnym momencie. Przed kontynuowaniem upewnij się, że wiesz, co robisz.

Warunki wstępne

Zaktualizowano jądro

Ważne: Należy pamiętać, że aktualizacja jądra może wiązać się z własnym zestawem problemów i problemów ze zgodnością sprzętu. Przed przejściem do tego kroku upewnij się, że wiesz, jak przełączyć się na wcześniejsze jądro.

Najnowsze wersje Chrome zależą od wielu funkcji jądra związanych z piaskownicą, które nie są dostępne w domyślnym jądrze Ubuntu 12.04 (3.2.0). Jeśli zainstalowałeś Ubuntu 12.04 przy użyciu nowszego obrazu (wydanie punktowe 12.04.2 i nowsze), istnieje prawdopodobieństwo, że masz już zaktualizowane jądro; ale jeśli nadal korzystasz z oryginalnej wersji jądra, możesz zaktualizować stos jądra Ubuntu 14.04 za pomocą pakietu stosu włączania sprzętu LTS :

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

Upewnij się, aby ponownie uruchomić system po wykonaniu aktualizacji jądra. Jeśli wszystko poszło dobrze, twój system powinien teraz używać jądra Linux 3.13.X.

Problemy z zależnościami

Jeśli spojrzysz na komunikat o błędzie, który pojawia się podczas próby zainstalowania najnowszej wersji Chrome, zobaczysz dwa wyraźne problemy z zależnościami:

  1. libstdc++6 (>= 4.8.0): To jest standardowa biblioteka C ++ GNU. Chrome w wersji 50.X i nowszych zależy od wersji 4.8.0 tej biblioteki, ale Ubuntu 12.04 jest domyślnie tylko w wersji 4.6.3.
  2. lsb-base (>= 4.1): To jest pakiet Linux Standard Base. Wskazuje zgodność dystrybucji z zestawem standardów ustalonych przez Linux Foundation. Wersje Chrome 50.X + wymagają zgodności ze standardami zdefiniowanymi w bazie 4.1 LSB, ale Ubuntu 12.04 jest zgodny tylko z wersją 4.0.

Jak się okazuje, oba te problemy można dość łatwo naprawić:

libstdc ++ 6 (> = 4.8.0)

Ważne: libstdc ++ 6 to ważna biblioteka systemowa, od której zależy wiele różnych pakietów. Uaktualnienie tego pakietu do nowszej wersji może być niebezpieczne i może prowadzić do problemów ze stabilnością systemu. Nie spotkałem się z żadnymi problemami na dwóch systemach, na których przeprowadziłem tę aktualizację, ale - jak zawsze - przebieg może się różnić.

Na szczęście dla nas libstdc++6wersja 4.8.X jest dostępna w oficjalnym teście PPA dla Ubuntu . Jako pierwszy krok dodamy ten PPA do naszych źródeł oprogramowania:

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

Zainstalowanie Google Chrome od tego momentu usunie libstdc++6zależność od PPA, eliminując pierwszy problem zależności. Po rozwiązaniu tego problemu przejdźmy do drugiego problemu.

lsb-base (> = 4.1)

Okazuje się, że tak naprawdę nie musimy instalować zaktualizowanej wersji tego pakietu, aby uruchomić najnowsze wersje Chrome. Na razie Chrome wydaje się nie zależeć od żadnego ze zmodyfikowanych standardów w bazie 4.1 LSB, więc zależność od lsb-base (>= 4.1)wydaje się być miękką zależnością, którą możemy po prostu usunąć.

Oczywiście możesz to zrobić ręcznie, ale napisałem skrypt, który zajmie się większością poniższych kroków.

Skrypt instalacyjny

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

Skopiuj powyższy skrypt, zapisz go jako install_chrome.shi oznacz jako wykonywalny ( chmod +x install_chrome.shw oknie dialogowym właściwości lub menedżera plików).

Po wykonaniu tej czynności możesz wykonać skrypt za pomocą:

./install_chrome.sh

Skrypt przejdzie do pobierania najnowszej stabilnej wersji Chrome, zmodyfikuje ją, aby usunąć zależność od lsb-base 4.1 i wyświetli monit o zainstalowanie zaktualizowanego .debpliku za pośrednictwem dpkg.

Gratulacje, używasz teraz zaktualizowanej wersji Google Chrome na Ubuntu 12.04!

Aktualizacje

Aby zaktualizować Chrome, po prostu uruchom skrypt ponownie.

Przyszła kompatybilność

Ważne: Ponieważ to rozwiązanie może przestać działać w dowolnym momencie, radzę zawsze zapisywać najnowszy działający zmodyfikowany .debplik jako kopię zapasową na wypadek, gdyby Chrome nagle odmówił uruchomienia z powodu aktualizacji.

Aby zapisać najnowszy zmodyfikowany instalator, po prostu przejdź do katalogu tymczasowego skryptu zaraz po wyświetleniu sudomonitu o hasło podczas uruchamiania skryptu (tj. Tuż przed instalacją zmodyfikowanego .debpliku). Katalog tymczasowy powinien znajdować się gdzieś pod /tmp/deb.XXXXXXXXX(gdzie XXXXXXXXXjest ciągiem losowym).

Glutanimate
źródło
1
Ze względu na zasady egzekwowane przez moją firmę utknąłem w systemie Ubuntu 12.04. W każdym razie udało mi się zainstalować Chrome za pomocą twojego skryptu. Wielkie dzięki!
Eugeniu Rosca,
4

Nie sądzę, że możesz. Właśnie zaktualizowano i zależności nie można spełnić w 12.04 .

Miałem ten sam problem z wersją Travis i obniżyłem klasę. Mnóstwo starych wersji tutaj .

Oczywiście nie jest to świetna odpowiedź, szukałem dobrej chwili i nie mogłem znaleźć drogi bez obniżenia oceny.

lathonez
źródło
1
Idę z tym. Oczywiście nie jest to najlepsza droga, ale działa dla mnie jako rozwiązanie tymczasowe, ponieważ nie mogę teraz zaktualizować do późniejszych wersji Ubuntu.
fmonegaglia 18.04.16
Link do mirror.pcbeta.com zniknął 404.
AlexD
2

Ponieważ Google przestało obsługiwać Chrome i 12.04, najlepszym rozwiązaniem jest zainstalowanie 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
Arahkun
źródło
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.

Zasadniczo Google Chrome prosi o lsb-base i libstdc ++ 6, które nie są dostępne w 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

Potrzebujesz Trusty (który jest również LTS) lub nowszy, aby zainstalować google-chrome z Google, lub po prostu zainstalować ten dostarczony przez przeglądarkę chromu repozytoriów Ubuntu.

Braiam
źródło
1

Nie mogę komentować bezpośrednio odpowiedzi Glutanimate, ale i tak chciałbym się nią podzielić. Musiałem dodać dodatkowy wiersz do skryptu instalacyjnego:

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

Wygląda na to, że Chrome działa dobrze, ale inaczej nie pozwoliłbym go zainstalować.

Fabian Dellwing
źródło