Остання редакція (2017-09-13) :
Це рішення більше не працює для Chrome версій 60 і вище . Останні пакети залежать від libc6 ≥ 2.17, який неможливо встановити на Ubuntu 12.04. Якщо ви все ще використовуєте Precision, вам слід розглянути можливість оновлення (як я), або якщо ви все ще не можете цього перейти, перейдіть на інший веб-переглядач (хоча в цей момент ви навряд чи знайдете будь-який, який все ще підтримується).
Редагувати (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. Далі йде короткий посібник про те, як встановити останню версію Chrome (станом на 2016-06-28) на 64-розрядній версії Ubuntu 12.04.
Попередження : Це дуже хакерське рішення, яке може припинити роботу в будь-який момент часу. Будь ласка, переконайтеся, що ви знаєте, що ви робите, перш ніж продовжувати.
Попередні реквізити
Оновлено ядро
Важливо: Зверніть увагу, що оновлення вашого ядра може мати власний набір неполадок та проблем із сумісністю обладнання. Переконайтеся, що ви знаєте, як перейти на більш раннє ядро, перш ніж продовжувати цей крок.
Останні випуски Chrome залежать від ряду функцій ядра, пов’язаних з пісочницею, які недоступні в ядрі за замовчуванням Ubuntu 12.04 (3.2.0). Якщо ви встановили Ubuntu 12.04 за допомогою новішого зображення (випуск точки 12.04.2 і вище), швидше за все, ви вже маєте оновлене ядро; але якщо ви все ще знаходитесь в оригінальному випуску ядра, ви можете оновити стек ядра Ubuntu 14.04 за допомогою пакету стеків апаратних можливостей LTS :
sudo apt-get install --install-recommends linux-generic-lts-trusty
Переконайтеся, що перезавантажте систему після оновлення ядра. Якщо все пішло добре, тепер ваша система повинна використовувати ядро Linux 3.13.X.
Питання залежності
Якщо ви подивитесь на повідомлення про помилку, яке ви отримуєте при спробі встановити недавню збірку Chrome, ви побачите дві чіткі проблеми залежності:
libstdc++6 (>= 4.8.0)
: Це стандартна бібліотека C ++ GNU. Chrome випускає 50.X і новіші версії залежать від версії 4.8.0 цієї бібліотеки, але Ubuntu 12.04 постачається лише 4.6.3 за замовчуванням.
lsb-base (>= 4.1)
: Це пакет стандартної бази Linux. Він вказує на відповідність дистрибутиву набору стандартів, встановлених Linux Foundation. Випуски Chrome 50.X + вимагають дотримання стандартів, визначених у базі LSB 4.1, але Ubuntu 12.04 відповідає лише 4.0.
Як виявляється, обидва ці проблеми можна виправити досить легко:
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 з цього моменту, витягніть libstdc++6
залежність від PPA, усунувши першу проблему залежності. З цим вирішеним перейдемо до другого питання.
lsb-база (> = 4,1)
Виявляється, нам фактично не потрібно встановлювати оновлену версію цього пакета, щоб запустити останні версії Chrome. Наразі Chrome, схоже, насправді не залежить від будь-якого із модифікованих стандартів бази LSB 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-бази 4.1 та запропонує встановити оновлений .deb
файл через dpkg
.
Вітаємо, зараз ви використовуєте оновлений випуск Google Chrome на Ubuntu 12.04!
Оновлення
Щоб оновити Chrome, просто запустіть сценарій ще раз.
Майбутня сумісність
Важливо: Оскільки це рішення може припинити роботу в будь-який час, я б радив вам завжди зберігати останній модифікований .deb
файл як резервну копію, якщо Chrome раптом відмовиться запуститися через оновлення.
Для збереження останнього модифікованого інсталятора просто поверніться до тимчасового каталогу скрипта відразу після отримання sudo
запиту пароля під час запуску сценарію (тобто прямо перед встановленням зміненого .deb
файлу). Тимчасовий каталог повинен розташовуватися десь під /tmp/deb.XXXXXXXXX
(де XXXXXXXXX
випадковий рядок).