Cómo instalar Scratch 2 en Ubuntu 16.10. o 17.04 (64 bits)?

15

Necesito instalar Adobe Air en Ubuntu 16.10 / 17.04 con Scratch 2 sin conexión. Air lleva muchos años sin soporte en Linux, por lo que hay varias soluciones. Uno que funcionó para mí hasta Ubuntu 16.04 (usando el instalador binario Air):

# install i386 necessary libraries
$ sudo 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
# install keyring
$ sudo apt-get install libgnome-keyring0:i386
# make keyring visible for Air
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libgnome-keyring.so.0 /usr/lib/libgnome-keyring.so.0
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libgnome-keyring.so.0.2.0 /usr/lib/libgnome-keyring.so.0.2.0 
# download Adobe Air installer
$ wget  http://airdownload.adobe.com/air/lin/download/2.6/AdobeAIRInstaller.bin
# run it
$ sudo chmod +x AdobeAIRInstaller.bin
$ sudo ./AdobeAIRInstaller.bin

pero el 16.10 / 17.4 termina con un error del instalador:

Adobe AIR no se pudo instalar. Las herramientas de Debian para crear paquetes de deb (como dpkg-deb o ar) no se encontraron en el sistema.

Lo cual es falso mensaje de error, obviamente, como dpkg-deby arestán instalados:

$ dpkg-deb --version
Debian 'dpkg-deb' package management program version 1.18.10 (amd64).
$ ar --version
GNU ar (GNU Binutils for Ubuntu) 2.28

El archivo de registro de instalación de Adobe Air de /root/.appdata/Adobe/AIR/Logs/Install.log

[setup:2506][INFO] Runtime Installer begin with version 2.6.0.19170 on Linux x86
[setup:2506][INFO] Commandline is: 
[setup:2506][INFO] No installed runtime detected
[setup:2506][INFO] Relaunching with elevation
[setup:2506][INFO] Launching subprocess with commandline /tmp/air.hp19kU/setup -ei
[setup:2525][INFO] Runtime Installer begin with version 2.6.0.19170 on Linux x86
[setup:2525][INFO] Commandline is: -stdio /tmp/air.KWo9tt/channel -ei
[setup:2525][INFO] No installed runtime detected
[setup:2525][INFO] Starting silent runtime install. Installing runtime version 2.6.0.19170
[setup:2525][INFO] Session detected: GNOME
[setup:2525][ERR] Error occurred during rpm create operation; beginning rollback: [ErrorEvent type="error" bubbles=false cancelable=false eventPhase=2 text="dpkg-query: package 'adobe-certs' is not installed and no information is available;Use dpkg --info (= dpkg-deb --info) to examine archive files,;and dpkg --contents (= dpkg-deb --contents) to list their contents.Could not run the command : ar" errorID=5031]
[setup:2525][INFO] Rollback complete
[setup:2525][ERR] Exiting due to error: [ErrorEvent type="error" bubbles=false cancelable=false eventPhase=2 text="dpkg-query: package 'adobe-certs' is not installed and no information is available;Use dpkg --info (= dpkg-deb --info) to examine archive files,;and dpkg --contents (= dpkg-deb --contents) to list their contents.Could not run the command : ar" errorID=5031]
[setup:2525][ERR] Runtime Installer end with exit code 7
[setup:2506][ERR] Exiting due to error: [ErrorEvent type="error" bubbles=false cancelable=false eventPhase=2 text="dpkg-query: package 'adobe-certs' is not installed and no information is available;Use dpkg --info (= dpkg-deb --info) to examine archive files,;and dpkg --contents (= dpkg-deb --contents) to list their contents.Could not run the command : ar" errorID=5031]
[setup:2506][ERR] Runtime Installer end with exit code 7

Así que encontré otra forma de instalar un Adobe Air a través del paquete deb (no lo sabía antes):

$ wget http://airdownload.adobe.com/air/lin/download/2.6/adobeair.deb
$ sudo dpkg -i adobeair.deb

¡Y voilá! Adobe Air está instalado en Ubuntu 16.10 / 17.04.
Ahora instale Scratch 2.

# Find the latest Scratch AIR file link from https://scratch.mit.edu/scratch2download/
$ wget https://scratch.mit.edu/scratchr2/static/sa/Scratch-456.0.1.air
$ sudo Adobe\ AIR\ Application\ Installer ./Scratch-456.0.1.air 

y nuevamente el mismo error:

Adobe AIR no se pudo instalar. Las herramientas de Debian para crear paquetes de deb (como dpkg-deb o ar) no se encontraron en el sistema.

Install.log

[Adobe AIR Application Installer:3197][INFO] Application Installer begin with version 2.6.0.19170 on Linux x86
[Adobe AIR Application Installer:3197][INFO] Commandline is: 
[Adobe AIR Application Installer:3197][INFO] Installed runtime (2.6.0.19170) located at /opt/Adobe AIR
[Adobe AIR Application Installer:3197][INFO] Unpackaging file:///home/administrator/Downloads/Scratch-456.0.1.air to /tmp/FlashTmp.LSCkv7
[Adobe AIR Application Installer:3197][INFO] Application signature verified
[Adobe AIR Application Installer:3197][INFO] Unpackaging/validation complete
[Adobe AIR Application Installer:3197][INFO] No app located for appID 'edu.media.mit.Scratch2Editor' and pubID ''
[Adobe AIR Application Installer:3197][INFO] Converting unpackaged application to a native installation package in /tmp/FlashTmp.RJSwfW
[Adobe AIR Application Installer:3197][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:3197][ERR] Application Installer end with exit code 7

Parece que un Adobe Air no mantenido no puede jugar con nuevos dpkg-deby armás.

¿Alguna pista para Scratch 2 sin conexión en Ubuntu 16.10 / 17.04?

Martín
fuente
1
¡Gracias! Pude hacer que Scratch 2.0 se ejecutara en 17.04 con estas instrucciones. Sin embargo, no pude hacer que el código del iniciador funcionara. No pude encontrar las aplicaciones / usr / bin / en mi instalación de Ubuntu 17.04 pero pude encontrar las aplicaciones / usr / share /. Sustituí este camino pero no funcionó para mí. Instalé Alacarte y lo usé para crear un lanzador para Scratch. Usé / opt / adobe-air-sdk / adobe-air / adobe-air /opt/adobe-air-sdk/scratch/Scratch-456.0.1.air como comando y todo funcionó bien.
Scratch 2.0 en Ubuntu 17.04
Perdón por eso, mea culpa. Demasiado tiempo inmerso en scripts, hago un error tipográfico al final. Haré una edición del tutorial. Tienes razón en que la carpeta para lanzadores globales es /usr/share/applications/, los lanzadores locales están en ~/.local/share/applications/. Necesito global ya que tengo más usuarios en el escritorio. El lanzador global está disponible luego de presionar la superclave (winkey) y escribir "Scratch". Muchas gracias por probar!
Martin

Respuestas:

19

He estado jugando con este par de horas. Primero traté de rastrear Adobe Air Application Installery encontrar, lo que está sucediendo dentro.

$ sudo strace -s 500 -t -o air_scratch.txt Adobe\ AIR/Versions/1.0/Adobe\ AIR\ Application\ Installer ~/Downloads/Scratch-456.0.1.air 

Y encontré esta línea:

read(18, "dpkg-deb: error: treewalk root /tmp/FlashTmp.3TWnKI/build/DEBIAN is not a directory\n", 4096) = 84

Parece que new dpkgno puede manejar enlaces como el anterior. Esto se puede solucionar mediante un script de envoltorio colocado, por ejemplo, ~/air/bin/dpkgy cambiando la PATHvariable antes de ejecutar el Instalador de aplicaciones de Adobe Air. Desafortunadamente, Scratch no se puede instalar sin sudo, y cambiar PATHpor sudo no es tan fácil.

Luego encontré un foro polaco de contribuyentes descontentos, que están resolviendo problemas similares (necesitan ejecutar alguna aplicación de Air del ministerio de finanzas en Debian / Ubuntu): https://forum.dug.net.pl/viewtopic.php?pid = 310108 .

Y en el fondo de este foro encontré algunas sugerencias, cómo ejecutar Scratch 2 en Ubuntu 16.10 / 17.04 (incluso sin adobeair.debinstalación).

Esta es mi solución de trabajo final, probada en una instalación limpia.

# install necesary i386 libraries
$ sudo 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

# make keyring visible for Adobe Air
$ 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

# Download Adobe Air
cd ~/Downloads
wget http://airdownload.adobe.com/air/lin/download/2.6/AdobeAIRSDK.tbz2
$ sudo mkdir /opt/adobe-air-sdk
$ sudo tar jxf AdobeAIRSDK.tbz2 -C /opt/adobe-air-sdk

# Download Air runtime/SDK from Archlinux
wget https://aur.archlinux.org/cgit/aur.git/snapshot/adobe-air.tar.gz
$ sudo tar xvf adobe-air.tar.gz -C /opt/adobe-air-sdk
$ sudo chmod +x /opt/adobe-air-sdk/adobe-air/adobe-air

# Get actual scratch file URL from https://scratch.mit.edu/scratch2download/
$ sudo mkdir /opt/adobe-air-sdk/scratch
wget https://scratch.mit.edu/scratchr2/static/sa/Scratch-456.0.1.air
$ sudo cp Scratch-456.0.1.air /opt/adobe-air-sdk/scratch/
cp Scratch-456.0.1.air /tmp/
cd /tmp/
unzip /tmp/Scratch-456.0.1.air
$ sudo cp /tmp/icons/AppIcon128.png /opt/adobe-air-sdk/scratch/scratch.png

Crear lanzador:

$ 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-456.0.1.air
Icon=/opt/adobe-air-sdk/scratch/scratch.png
Terminal=false
Name=Scratch 2
Comment=Programming system and content development tool
Categories=Application;Education;Development;ComputerScience;
MimeType=application/x-scratch-project
_EOF_

$ chmod +x /usr/share/applications/Scratch2.desktop

Y eso es. La primera ejecución es un poco más larga, ya que Air está desempacando la aplicación Scratch 2 en la ~/.appdata/edu.media.mit.Scratch2Editorcarpeta.

Scratch 2 ejecutándose en Ubuntu 17.04

Martín
fuente
3
absolutamente jefe! ¡buen trabajo!
tatsu
antes de tener que ejecutar "dpkg --add-architecture i386 && apt-get update" recibí un error con "libnss-mdns: i386". Funciona para mí sin
Mohamed EL HABIB
¡Gran trabajo! Sin embargo, el código no funciona a menos que elimine la $marca. También la creación del lanzador falló a menos que siguiera esta publicación ( askubuntu.com/questions/956389/… ). Espero que esto ayude a otros. Nota: Soy demasiado novato en Ubuntu.
Mohammad ElNesr
1
El $está ahí para significar un comando que hay que ejecutar (en contraposición a la salida)
Dan Abrey
¡Funciona! Incluso ahora, en Debian testing / buster. ¡Gracias!
miguev