Como instalar o Scratch 2 no Ubuntu 16.10. ou 17,04 (64 bits)?

15

Preciso instalar o Adobe Air no Ubuntu 16.10 / 17.04 com o Scratch 2. off-line. O ar é suportado por muitos anos no Linux, portanto existem várias soluções alternativas. Um que funcionou para mim até o Ubuntu 16.04 (usando o instalador binário do 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

mas em 16.10 / 17.4 termina com erro do instalador:

Não foi possível instalar o Adobe AIR. Ferramentas Debian para criar pacotes deb (como dpkg-deb ou ar) não foram encontradas no sistema.

O que obviamente é uma mensagem de erro falsa como dpkg-debe arestão instaladas:

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

O arquivo de log de instalação do 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

Então eu encontrei outra maneira de instalar um Adobe Air via pacote deb (eu não sabia antes):

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

E voilà! O Adobe Air está instalado no Ubuntu 16.10 / 17.04.
Agora instale o 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 

e novamente o mesmo erro:

Não foi possível instalar o Adobe AIR. Ferramentas Debian para criar pacotes deb (como dpkg-deb ou ar) não foram encontradas no 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 um Adobe Air não mantido não pode jogar com novos dpkg-debe armais.

Alguma dica para o Scratch 2 offline no Ubuntu 16.10 / 17.04?

Martin
fonte
11
Obrigado! Consegui rodar o Scratch 2.0 em 17.04 com estas instruções. No entanto, não consegui fazer o código do iniciador funcionar. Não consegui encontrar / usr / bin / applications na minha instalação do Ubuntu 17.04, mas consegui encontrar / usr / share / applications. Substituí esse caminho, mas não funcionou para mim. Instalei o Alacarte e usei-o para criar um iniciador para o Scratch. Eu usei / opt / adobe-air-sdk / adobe-air / adobe-air /opt/adobe-air-sdk/scratch/Scratch-456.0.1.air como comando e tudo funcionou bem.
Scratch 2.0 no Ubuntu 17.04
Desculpe por isso, mea culpa. Por muito tempo mergulhado em scripts, eu faço um erro de digitação no final. Vou fazer uma edição do tutorial. Você está certo de que a pasta dos lançadores globais é /usr/share/applications/a de lançadores locais ~/.local/share/applications/. Preciso global, pois tenho mais usuários na área de trabalho. O lançador global estará disponível depois de pressionar a superchave (winkey) e digitar "Scratch". Muito obrigado por testar!
Martin

Respostas:

19

Eu tenho brincado com este par de horas. Primeiro, tentei rastrear Adobe Air Application Installere encontrar o que está acontecendo lá 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 

E eu encontrei esta linha:

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

Parece novo dpkgnão pode lidar com links como o anterior. Isso pode ser corrigido pelo script do wrapper colocado, por exemplo, na ~/air/bin/dpkgalteração da PATHvariável antes da execução do Adobe Air Application Installer. Infelizmente, o Scratch não pode ser instalado sem o sudo, e mudar PATHpara o sudo não é tão fácil.

Então eu encontrei um fórum polonês de contribuintes infelizes, que estão resolvendo problemas semelhantes (eles precisam executar algum aplicativo Air do Ministério das Finanças no Debian / Ubuntu): https://forum.dug.net.pl/viewtopic.php?pid = 310108 .

No fundo deste fórum, encontrei algumas dicas sobre como executar o Scratch 2 no Ubuntu 16.10 / 17.04 (mesmo sem adobeair.debinstalação).

Esta é a minha solução de trabalho final, testada em instalações limpas.

# 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

Crie o iniciador:

$ 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

E é isso. A primeira execução é um pouco mais longa, pois o Air está descompactando o aplicativo Scratch 2 na ~/.appdata/edu.media.mit.Scratch2Editorpasta.

Scratch 2 rodando no Ubuntu 17.04

Martin
fonte
3
absolutamente chefe! Ótimo trabalho!
Tatsu
antes de executar o "dpkg --add-architecture i386 && apt-get update", recebi um erro com "libnss-mdns: i386". Funciona para mim sem
Mohamed EL HABIB
Bom trabalho! No entanto, o código não funciona a menos que eu tenha removido a $marca. A criação do lançador também falhou, a menos que eu seguisse esta postagem ( askubuntu.com/questions/956389/… ). Espero que isso ajude outros. Nota: Eu sou muito novato no Ubuntu.
Mohammad ElNesr
11
O $que há para significar um comando que você tem que correr (em oposição a saída)
Dan Abrey
Funciona! Mesmo agora, no Debian testing / buster. Obrigado!
Miguev # 8/18