Instalación de Scratch 2 offline con Adobe Air en Ubuntu

A la espera de del nuevo Scratch 3.0 (previsto para 2018) basado en HTML5  si queremos trabajar “offline” no nos queda otra que utilizar la versión 1.4 nativa para Linux o utilizar la 2.0 basada en Adobe Air.

Desgraciadamente Adobe Air en Linux  dejó de estar soportado oficialmente en junio de 2011. Instalarlo aun es posible resolviendo algunas dependencias…

Cómo lo hacíamos hasta ahora y ya no funciona…

Instalación de Abobe Air

Desde la web de noobslab nos proponen un par de métodos para realizar todo el proceso incluyendo tanto la descarga como la instalación de paquetes adicionales necesarios para su funcionamiento y ajustes posteriores, tanto en 32 como 64bits.

Ejecuta en un terminal la siguiente secuencia de comandos:

Opción 1: manualmente para 32bit

wget -O adobe-air_i386.deb http://drive.noobslab.com/data/apps/AdobeAir/adobeair_2.6.0.2_i386.deb

sudo dpkg -i adobe-air_i386.deb

sudo apt-get install -f && rm adobe-air_i386.deb

Opción 2: Script de noobslab

wget -O adobe-air.sh http://drive.noobslab.com/data/apps/AdobeAir/adobe-air.sh

chmod +x adobe-air.sh

sudo ./adobe-air.sh

Opción 3:descarga desde Adobe (por si no funcionan los anteriores)

wget http://airdownload.adobe.com/air/lin/download/2.6/adobeair.deb

sudo dpkg -i adobeair.deb

Además hay que instalar las siguientes dependencias en sistemas de 64bit:

apt-get install libgtk2.0-0:i386 libstdc++6:i386 libxml2:i386 libxslt1.1:i386 libcanberra-gtk-module:i386 gtk2-engines-murrine:i386 libqt4-qt3support:i386 libgnome-keyring0:i386 libnss-mdns:i386 libnss3:i386

Por último “engañaremos” a Adobe Air para que funcione con el control de claves de aplicaciones GTK (gnome) permitiéndole encontrar las librerías tal como las busca:

sudo ln -s /usr/lib/i386-linux-gnu/libgnome-keyring.so.0 /usr/lib/libgnome-keyring.so.0

sudo ln -s /usr/lib/i386-linux-gnu/libgnome-keyring.so.0.2.0 /usr/lib/libgnome-keyring.so.0.2.0

Instalación de Scratch 2

Desde la página de Scratch habría que descargarse la última versión disponible. En el momento de escribir este artículo es la 456.0.4:

wget -O scratch.air https://scratch.mit.edu/scratchr2/static/sa/Scratch-456.0.4.air

A continuación tendrías que ejecutar el instalador de aplicaciones de Adobe Air proporcionándole la ruta absoluta al archivo descargado:

Adobe\ AIR\ Application\ Installer  $PWD/scratch.air

Por desgracia el resultado es este:

Mirando el registro de instalación con “cat ~/.appdata/Adobe/AIR/Logs/Install.log” aparecen estas líneas:

[Adobe AIR Application Installer:29684][ERR] Migration signature validation failed
[Adobe AIR Application Installer:29684][ERR] Got an unexpected fatal error while unpackaging: [ErrorEvent type="error" bubbles=false cancelable=false eventPhase=2 text="invalid migration signature" errorID=5023]
[Adobe AIR Application Installer:29684][ERR] Application Installer end with exit code 7

Suponiendo que fuera por un problema de firmas relacionado con la versión anticuada de Air en Linux puedes intentar instalar alguna versión anterior:

wget -O scratch.air https://scratch.mit.edu/scratchr2/static/sa/Scratch-455.air

Adobe\ AIR\ Application\ Installer $PWD/scratch.air

En mi caso inició correctamente el instalador, me pidió aceptar el contrato de licencia, las opciones del programa… y al comenzar la extracción de archivos:

Volviendo a visualizar las últimas líneas del registro de instalación ( “cat ~/.appdata/Adobe/AIR/Logs/Install.log“) me encuentro ahora con esto:

[Adobe AIR Application Installer:29806][ERR] Native installation package creation failed: [ErrorEvent type="error" bubbles=false cancelable=false eventPhase=2 text="Unhandled exception Error: Error creating the package Could not run the command : ar" errorID=5031]
[Adobe AIR Application Installer:29806][ERR] Application Installer end with exit code 7

Pero resulta que SI tengo instalada la herramienta requerida: “ar -V” me devuelve lo siguiente:

GNU ar (GNU Binutils for Ubuntu) 2.28

Y aquí me había quedado sin saber que hacer….

Nuevo script de instalación

Buscando soluciones he encontrado en varios foros una solución instalando el SDK de Adobe Air y evitando con ello tener que “añadir aplicaciones” con el propio Air. El proceso es más largo pero incluye todos los pasos:

#!/bin/bash

if [ $EUID -ne 0 ]; then
   echo "Debes ejecutarlo como root (o mediante sudo)" 1>&2
   exit 1
fi

echo ">> Eliminando versiones anteriores..."
apt-get -y --purge remove adobeair
rm -rf /opt/adobe-air-sdk
rm /usr/share/applications/Scratch2.desktop

CHKBITS=`uname -m`
if [ $CHKBITS = "x86_64" ]; then
    echo ">> Instalando dependencias 32bit..."
    apt-get -q update
    apt-get -q -y install libgtk2.0-0:i386 libstdc++6:i386 libxml2:i386 libxslt1.1:i386 libcanberra-gtk-module:i386 gtk2-engines-murrine:i386 libqt4-qt3support:i386 libgnome-keyring0:i386 libnss-mdns:i386 libnss3:i386
fi

echo ">> Enlazando librerías de Gnome..."
ln -s /usr/lib/i386-linux-gnu/libgnome-keyring.so.0 /usr/lib/libgnome-keyring.so.0
ln -s /usr/lib/i386-linux-gnu/libgnome-keyring.so.0.2.0 /usr/lib/libgnome-keyring.so.0.2.0

echo ">> Descargando Adobe Air SDK..."
wget -q http://airdownload.adobe.com/air/lin/download/2.6/AdobeAIRSDK.tbz2
mkdir /opt/adobe-air-sdk
tar jxf AdobeAIRSDK.tbz2 -C /opt/adobe-air-sdk

echo ">> Descargando Air runtime/SDK desde Archlinux..."
wget -q https://aur.archlinux.org/cgit/aur.git/snapshot/adobe-air.tar.gz
tar xvf adobe-air.tar.gz -C /opt/adobe-air-sdk
chmod +x /opt/adobe-air-sdk/adobe-air/adobe-air

echo ">> Descargando Scratch2..."
mkdir /opt/adobe-air-sdk/scratch
wget -q -O /opt/adobe-air-sdk/scratch/scratch.air https://scratch.mit.edu/scratchr2/static/sa/Scratch-456.0.4.air

echo ">> Creando lanzador..."
unzip -j /opt/adobe-air-sdk/scratch/scratch.air icons/AppIcon128.png -d /opt/adobe-air-sdk/scratch/
cat << _EOF_ > /usr/share/applications/Scratch2.desktop
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Exec=/opt/adobe-air-sdk/adobe-air/adobe-air /opt/adobe-air-sdk/scratch/scratch.air
Icon=/opt/adobe-air-sdk/scratch/AppIcon128.png
Terminal=false
Name=Scratch 2
Comment=Programación visual con Scatch 2.0
Categories=Application;Education;Development;ComputerScience;
MimeType=application/x-scratch-project
_EOF_
chmod +x /usr/share/applications/Scratch2.desktop

echo ">> FIN!"