Última edición (2017-09-13) :
Esta solución ya no funciona para las versiones 60 y posteriores de Chrome . Los últimos paquetes dependen de libc6 ≥ 2.17 que no se puede instalar en Ubuntu 12.04. Si todavía usa Precise, debería considerar la actualización (como lo hice yo), o si aún no puede hacerlo, cambie a otro navegador (aunque en este momento es poco probable que encuentre alguno que aún se mantenga).
Editar (2016-12-06) : Parece que Chrome también depende de una versión actualizada de libfontconfig1 ahora (≥ 2.9.0). He actualizado el script en consecuencia. La nueva versión parece estar funcionando bien hasta ahora, pero tenga en cuenta que con cada dependencia fingida puede esperar que la aplicación se vuelva menos estable.
Editar (2017-06-10) : Chrome 59 viene con nuevas dependencias (libfontconfig1 ≥ 2.11, libpango y libpangocairo). He actualizado el script para eliminarlos. La misma advertencia sobre la estabilidad de Chrome se aplica nuevamente.
Solución alternativa para problemas de dependencia en Ubuntu 12.04 64bit
El soporte oficial de Chrome para Ubuntu versión 12.04 ha finalizado, pero esto no significa que deba abandonar Chrome todavía. Lo que sigue es un tutorial rápido sobre cómo instalar la última versión de Chrome (a partir del 2016-06-28) en Ubuntu 12.04 de 64 bits.
Advertencia : esta es una solución muy agresiva que podría dejar de funcionar en cualquier momento. Asegúrese de saber lo que está haciendo antes de continuar.
Prerrequisitos
Kernel actualizado
Importante: Tenga en cuenta que la actualización de su núcleo puede venir con su propio conjunto de problemas y problemas de compatibilidad de hardware. Asegúrese de saber cómo cambiar a un kernel anterior antes de continuar con este paso.
Las versiones recientes de Chrome dependen de una serie de características del kernel relacionadas con el sandboxing que no están disponibles en el kernel predeterminado de Ubuntu 12.04 (3.2.0). Si ha instalado Ubuntu 12.04 usando una imagen más reciente (versión de lanzamiento 12.04.2 y superior), es probable que ya tenga un kernel actualizado; pero si todavía está en la versión original del núcleo, puede actualizar a la pila del núcleo de Ubuntu 14.04 a través del paquete de la pila de habilitación de hardware LTS :
sudo apt-get install --install-recommends linux-generic-lts-trusty
Asegúrese de reiniciar su sistema después de realizar la actualización del kernel. Si todo salió bien, su sistema debería estar usando el kernel 3.13.X. de Linux.
Problemas de dependencia
Si observa el mensaje de error que recibe cuando intenta instalar una compilación reciente de Chrome, verá dos problemas de dependencia distintos:
libstdc++6 (>= 4.8.0)
: Esta es la biblioteca C ++ estándar de GNU. Chrome lanza 50.X y hasta depende de la versión 4.8.0 de esta biblioteca, pero Ubuntu 12.04 solo viene con 4.6.3 por defecto.
lsb-base (>= 4.1)
: Este es el paquete básico estándar de Linux. Indica el cumplimiento de la distribución con un conjunto de estándares establecidos por la Fundación Linux. Las versiones de Chrome 50.X + requieren el cumplimiento de los estándares definidos en LSB base 4.1, pero Ubuntu 12.04 solo cumple con 4.0.
Resulta que ambos problemas se pueden solucionar con bastante facilidad:
libstdc ++ 6 (> = 4.8.0)
Importante: libstdc ++ 6 es una biblioteca de sistema importante de la que dependen muchos paquetes diferentes. Actualizar este paquete a una versión más reciente puede ser peligroso y puede provocar problemas de estabilidad del sistema. No he tenido ningún problema en los dos sistemas en los que realicé esta actualización, pero, como siempre, su kilometraje puede variar.
Afortunadamente para nosotros, libstdc++6
4.8.X está disponible en la versión oficial de Ubuntu Toolchain Test Builds PPA . Como primer paso, agregaremos este PPA a nuestras fuentes de software:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
Instalar Google Chrome a partir de este momento libstdc++6
eliminará la dependencia del PPA, eliminando el primer problema de dependencia. Con esto resuelto, procedamos al segundo problema.
lsb-base (> = 4.1)
Resulta que en realidad no necesitamos instalar una versión actualizada de este paquete para ejecutar las versiones recientes de Chrome. Por ahora, Chrome no parece depender realmente de ninguno de los estándares modificados en LSB base 4.1, por lo que la dependencia de lsb-base (>= 4.1)
parece ser una dependencia blanda que simplemente podemos eliminar.
Podría hacerlo manualmente, por supuesto, pero he escrito un script que se encarga de la mayoría de los siguientes pasos.
Script de instalación
#!/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"
Copie el script anterior, guárdelo como install_chrome.sh
y márquelo como ejecutable (ya sea a través chmod +x install_chrome.sh
del cuadro de diálogo de propiedades del administrador de archivos).
Una vez hecho esto, puede ejecutar el script usando:
./install_chrome.sh
El script procederá a descargar la última versión estable de Chrome, modificarla para eliminar la dependencia de lsb-base 4.1 y solicitarle que instale el .deb
archivo actualizado a través de dpkg
.
¡Felicitaciones, ahora está utilizando una versión actualizada de Google Chrome en Ubuntu 12.04!
Actualizaciones
Para actualizar Chrome, simplemente ejecute el script nuevamente.
Compatibilidad futura
Importante: debido a que esta solución puede dejar de funcionar en cualquier momento, le aconsejo que siempre guarde el último .deb
archivo modificado que funcione como copia de seguridad en caso de que Chrome se niegue repentinamente a iniciarse debido a una actualización.
Para guardar el último instalador modificado, simplemente diríjase al directorio temporal de la secuencia de comandos justo después de recibir la sudo
solicitud de contraseña cuando ejecute la secuencia de comandos (es decir, justo antes de instalar el .deb
archivo modificado ). El directorio temporal debe ubicarse en algún lugar debajo /tmp/deb.XXXXXXXXX
(donde XXXXXXXXX
hay una cadena aleatoria).