Последнее редактирование (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. Ниже приведено краткое руководство по установке последней версии 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)
: Это стандартная библиотека GNU C ++. Выпуски Chrome 50.X и выше зависят от версии 4.8.0 этой библиотеки, но Ubuntu 12.04 по умолчанию поставляется только с 4.6.3.
lsb-base (>= 4.1)
Это стандартный пакет Linux. Это указывает на соответствие дистрибутива ряду стандартов, установленных Linux Foundation. Выпуски Chrome 50.X + требуют соответствия стандартам, определенным в LSB base 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-base (> = 4.1)
Оказывается, нам не нужно устанавливать обновленную версию этого пакета, чтобы запустить последние версии 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, и предложит установить обновленный .deb
файл через dpkg
.
Поздравляем, вы используете обновленную версию Google Chrome для Ubuntu 12.04!
Обновления
Чтобы обновить Chrome, просто запустите скрипт снова.
Будущая совместимость
Важное замечание: Поскольку это решение может перестать работать в любое время, я бы посоветовал вам всегда сохранять последний рабочий измененный .deb
файл в качестве резервной копии на случай, если Chrome неожиданно откажется запускаться из-за обновления.
Чтобы сохранить последний измененный установщик, просто перейдите во временный каталог сценария сразу после получения sudo
запроса пароля при запуске сценария (т. Е. Непосредственно перед установкой измененного .deb
файла). Временный каталог должен находиться где-то под /tmp/deb.XXXXXXXXX
(где XXXXXXXXX
находится случайная строка).