«Google-chrome-stable зависит от libstdc ++ 6 (> = 4.8.0); однако: версия libstdc ++ 6 в системе - 4.6.3-1ubuntu5 ».

10

Я пытаюсь установить google-chrome-stableновую версию Ubuntu 12.04. Я запускаю следующие команды

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

Я получаю следующие ошибки

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

Когда я запускаю, sudo apt-get install -fя просто удаляю google-chrome-stable:

The following packages will be REMOVED
  google-chrome-stable

Если я ищу требуемые версии, например, я пытаюсь sudo apt-get install libstdc++6=4.8.0найти версию:

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

Как мне это исправить?

Я знаю, что больше нет поддержки 32-битной версии Ubuntu 12.04. Я использую 64-битную версию Ubuntu.

fmonegaglia
источник
@glut фактическое название является точным. Там написано точное сообщение об ошибке.
Брайам
@Braiam Я бы сказал, что это только отчасти верно, потому что не содержит ошибку
lsb_base
@Glutanimate, но в lsb-base нет библиотеки / двоичного файла, которые использует Chrome.
Брайам
@ Брайам Хорошо, правда. Теперь, когда я думаю об этом, большинство пользователей все равно будут искать первую часть сообщения об ошибке, так что давай останемся с этим.
Glutanimate

Ответы:

14

Вы получаете эти ошибки, потому что Google прекратил поддержку Ubuntu 12.04.

Google: Мы прекратим поддержку Google Chrome в 32-битном Linux, Ubuntu Precise (12.04).

Вы в качестве альтернативы можно установить , chromium-browserна котором Google Chrome построен на.

Вы также можете установить Ubuntu 14.04 LTS или Ubuntu 15.10 - оба поддерживаются - для использования Chrome.

Но я предлагаю вам подождать до 21 апреля, когда выйдет новая Ubuntu 16.04 LTS.

Вы должны учитывать, что Ubuntu 12.04 LTS остается только один год официальной поддержки безопасности.

сл-NetBox
источник
У меня есть 64-битная версия Ubuntu. Я только что переустановил операционную систему, у меня был хром, работающий на той же самой конфигурации до недели назад. Мой плохой, я не сказал, что, извините
fmonegaglia
5
@fmonegaglia: Самое главное, что Ubuntu 12.04 больше не поддерживается, независимо от того, используется ли 32-битная или 64-битная версия Ubuntu. Google Chrome можно установить только на поддерживаемые 64-битные версии Ubuntu, начиная с Ubuntu 14.04 ... :)
cl-netbox
Это определенно правильный ответ. К сожалению, некоторые из нас застряли с 12.04 по любой причине. Усилие должно быть потрачено на выход 12.04, а не на временные решения, такие как понижение (ниже). Однако иногда вам просто нужно заставить вещи работать.
Латонез
6

Последнее редактирование (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, вы увидите две различные проблемы с зависимостями:

  1. libstdc++6 (>= 4.8.0): Это стандартная библиотека GNU C ++. Выпуски Chrome 50.X и выше зависят от версии 4.8.0 этой библиотеки, но Ubuntu 12.04 по умолчанию поставляется только с 4.6.3.
  2. 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++64.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находится случайная строка).

Glutanimate
источник
1
Из-за политики, применяемой моей компанией, я застрял в Ubuntu 12.04. Я все равно смог установить Chrome, используя ваш скрипт. Большое спасибо!
Евгений Рошка
4

Я не думаю, что ты можешь. Они только что обновились, и зависимости не могут быть удовлетворены в 12.04 .

У меня была такая же проблема на сборке Трэвиса и я понизил. Нагрузки старых версий здесь .

Очевидно, что это не очень хороший ответ, я долго искал и не мог найти пути без понижения.

lathonez
источник
1
Я иду с этим. Конечно, это не лучший способ, но он работает для меня как временное решение, поскольку я не могу перейти на более поздние версии Ubuntu.
fmonegaglia
Ссылка на mirror.pcbeta.com пропала 404.
AlexD
2

Поскольку Google прекратил поддержку Chrome и 12.04, лучшее решение - вместо этого установить 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
источник
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.

По сути, Google Chrome запрашивает lsb-base и libstdc ++ 6, которые недоступны в 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

Вам понадобится Trusty (который также является LTS) или более поздней версии, чтобы установить Google-Chrome от Google, или просто установить тот, который предоставляется в хранилище Ubuntu chromium-browser.

Braiam
источник
1

Я не могу комментировать непосредственно ответ Glutanimate, но я бы хотел поделиться им в любом случае. Мне нужно было добавить дополнительную строку в установочный скрипт:

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

Похоже, что с Chrome все в порядке, но в противном случае я бы не смог установить его.

Фабиан Деллвинг
источник