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!"