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:
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.
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).