User Tools

Site Tools


doc:appunti:software:scratch

Scratch su Debian Jessie

Scratch è un ambiente di programmazione per bambini dagli otto anni in poi, sviluppato dal Massachusetts Institute of Technology.

Installazione

In Debian 8 Jessie si trova il pacchetto installabile per la versione 1.4.0.6. La versione 2.0 invece risulta disponibile solo come applicativo web, ma richiede una connessione internet, il browser Chrome e Adobe Flash Player (vedere le FAQ).

Per far funzionare i suoni bisogna installare il pacchetto pulseaudio.

Problema con immagini e suoni

Ci sono dei problemi con alcuni formati di immagini e audio, in particolare sembra che Scratch così come pacchettizzato in Debian Jessie non possa aprire i Backgrounds in formato JPEG e i suoni in formato MP3.

Una soluzione brutale è convertire gli esempi forniti nel formato PNG e WAV rispettivamente. Gli esempi sono nella directory /usr/share/scratch/Media/, per convertire i file MP3 si installano i pacchetti sox e libsox-fmt-mp3. Quindi si possono eseguire degli script del tipo:

find /usr/share/scratch/Media/Backgrounds -name '*.jpg' | while read FILE; do
    NEW_FILE="$(echo "$FILE" | sed 's/\.jpg/.png/')"
    convert "$FILE" "$NEW_FILE"
done
find /usr/share/scratch/Media/Backgrounds -name '*.gif' | while read FILE; do
    NEW_FILE="$(echo "$FILE" | sed 's/\.gif/.png/')"
    convert "$FILE" "$NEW_FILE"
done

Dopo aver convertito i file è necessario eliminare i file scratchthumbs.db (le anteprime) presenti nelle cartelle Backgrounds e consentire a Scratch di crearne di nuovi, eseguendo Scratch come root oppure dando i permessi opportuni alle cartelle per il tempo necessario.

Per convertire i suoni:

find /usr/share/scratch/Media/Sounds -name '*.mp3' | while read FILE; do
    NEW_FILE="$(echo "$FILE" | sed 's/\.mp3/.wav/')"
    sox "$FILE" -r 22050 -b 16 "$NEW_FILE"
    rm "$FILE"
done

Problema con la trasparenza

Scratch può usare immagini GIF e PNG con sprite che abbiano lo sfondo trasparente, il programma ne fornisce alcuni come esempio. Tuttavia non si riesce a creare con Gimp un PNG con lo sfondo trasparente che venga correttamente riconosciuto da Scratch. FIXME Quale trucco usare?

Problema con la telecamera

Avendo selezionato il tab Costumi di uno sprite, se si clicca su WebCam si dovrebbe poter acquisire un'immagine dalla telecamera. Nel nostro caso purtroppo il programma crasha miseramente con un Segmentation fault.

Scratch 2, AIR and Adobe Flash Player on Debian Jessie

Adobe AIR sucks! Do not use it, please migrate whatever you developed with this nasty thing to another technology! I had to face this terrible piece of software because I wish to use Scratch, a developing platform for children aged 8 and up.

Debian 8 Jessie include Scratch 1.4.0.6, che è abbastanza vecchio. Dal sito ufficiale si apprende che l'utilizzo consigliato delle nuove versioni è del tipo software as a service, cioè vi si accede tramite pagina web e tutto il software risiede sul server remoto. Per accedere al servizio è richiesto un browser moderno con una versione altrettanto moderna del plugin Adobe Flash Player.

Il sito di Scratch tuttavia offre anche l'opzione Offline Editor, cioè una versione scaricabile (qui l'archivio utilizzato da noi: Scratch-456.0.1.air) che è possibile eseguire nella piattaforma Adobe AIR. Purtroppo tale piattaforma non è più supportata su GNU/Linux, l'ultima versione distribuita per il nostro sistema operativo è la 2.6 a 32 bit (qui la pagina con le vecchie versioni). Alcune pagine riferiscono della possibilità di utilizzare tale software anche su un sistema Linux a 64 bit, tramite il supporto multiarch, vedere ad esempio Adobe Air 2.6 Installation Steps on Ubuntu 14.04 (64-bit).

La nostra esperienza ha avuto diverse difficoltà, qui di seguito gli appunti.

Adobe AIR nativo per Linux (non funziona)

ATTENZIONE: Questa procedura non funziona! FIXME

Si scarica il programma di installazione AdobeAIRInstaller.bin per GNU/Linux 32 bit (non più supportato da Adobe). Si tratta di un binario precompilato con archivio autoinstallante (una bella porcheria, sì!). Per poterlo eseguire è necessario abilitare il supporto multiarch e installare le seguenti librerie i386 (elenco ricavato dagli errori di esecuzione tramite strace):

apt-get install \
    libasound2:i386 libgtk2.0-0:i386 libnss3:i386 libnspr4:i386 libnss-mdns:i386 \
    libxslt1.1:i386 gtk2-engines-xfce:i386 libstdc++6:i386 libxt6:i386 libxml2:i386

Le librerie necessarie potrebbero essere diverse, ad esmpio nel nostro caso dipendono dall'ambiente grafico XFCE.

L'installer AdobeAIRInstaller.bin cerca di usare lo Gnome Keyring o il KDE KWallet, ma fallisce (sia come root che come utente normale) nonostante si siano installati i pacchetti:

apt-get install gnome-keyring libgnome-keyring0:i386

Si suppone che avrebbe dovuto installare in /opt/. Dopo il messaggio di fallimento, si troveranno i file scompattati in una directory del tipo /tmp/air.01104e/.

Il tentativo di procedere ad una installazione manuale è stato inutile: si sono copiate le cartelle:

cp -r "/tmp/air.01104e/build/opt/Adobe AIR"   /opt
cp -r "/tmp/air.01104e/build/etc/opt/Adobe"   /etc/opt

e si sono creati i seguenti link simbolici alle posizioni effettive delle rispettive librerie:

/usr/lib32/libnspr4.so
/usr/lib32/libnss3.so
/usr/lib32/libplc4.so
/usr/lib32/libplds4.so
/usr/lib32/libsmime3.so
/usr/lib32/libssl3.so

Quindi si esegue l'app installer:

"/opt/Adobe AIR/Versions/1.0/Adobe AIR Application Installer" $HOME/Scratch-456.0.1.air

compare la dialog box per l'accettazione della licenza e per la richiesta della directory destinazione, ma poi la procedura fallisce con il messaggio Sorry, an error has occurred.

Adobe AIR per Windows su Wine (non funziona)

ATTENZIONE: Questa procedura non funziona! FIXME

Seguendo le indicazioni della pagina Installing AIR Apps On Linux, si è scaricato l'installer di AIR per Windows AdobeAIRInstaller.exe, quindi lo si esegue tramite l'emulatore wine:

wine $HOME/scratch/AdobeAIRInstaller.exe

L'installazione di AIR sembra andare a buon fine, ma poi l'esecuzione dell'app installer fallisce:

cd "$HOME/.wine/drive_c/Program Files/Common Files/Adobe AIR/Versions/1.0/Resources/"
wine airappinstaller.exe Z:\home\niccolo\scratch\Scratch-456.0.1.air

Questo il messaggio di errore:

Something went wrong trying to install this application.
Please install the latest version of Adobe AIR from
http://www.adobe.com/go/getair and try again.

Esecuzione dell'applicazione tramite SDK AIR

Questo metodo consiste nell'usare l'ambiente SDK AIR invece del runtime. L'applicazione Scratch non viene installata, ma eseguita direttamente dopo averla estratta dall'archivio air.

Si scarica l'archivio dell'SDK AdobeAIRSDK.tbz2 e lo si scompatta ad esempio in /opt/airsdk/. L'archivio Scratch-456.0.1.air è in realtà un file zip, va scompattato in una directory dell'utente perché l'applicativo ha necessità di scrivere in alcune sottodirectory, è possibile ad esempio creare una cartella $HOME/lib/scratch/.

Ovviamente si deve installare il supporto multiarch tutte le librerie di compatibilità i386 necessarie all'esecuzione del runtime AIR nativo Linux (vedi sopra). Per lanciare l'applicativo AIR si esegue da utente normale:

/opt/airsdk/bin/adl ~/lib/scratch/META-INF/AIR/application.xml ~/lib/scratch

Attenzione alle dipendenze automatiche! Con il sistema multiarch quando si installa una libreria i386 (ad esempio il pacchetto gtk2-engines-xfce:i386) viene automaticamente rimossa la versione amd64. Potrebbe capitare che qualche altra dipendenza reinstalli la versione amd64, rompendo il funzionamento di AIR. Questa ad esempio è stata la causa del non funzionamento dell'audio, che produceva un errore in Adobe AIR del tipo:

Si è verificato un errore ActionScript:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
        at soundedit::WaveformView/startPlaying()
        at uiwidgets::IconButton/mouseDown()

Esecuzione nel browser Chromium con Pepper Flash Player

Per verificare l'installazione del plugin Flash, la versione e il suo corretto funzionamento è possibile puntare il browser al link http://www.adobe.com/it/support/flashplayer/ts/documents/tn_15507.htm. Il browser Chromium ha lo pseudo URL chrome://plugins per verificare i plugin installati.

Il Player Pepper Flash è mantenuto da Google ed è più aggiornato del Flash Player di Adobe, viene distribuito con Google Chrome e funziona anche con Chromium.

Seguendo le indicazioni di Debian Wiki, sono necessari due pacchetti, disponibili solo per architettura amd64:

  • browser-plugin-freshplayer-pepperflash dai backports per Jessie
  • pepperflashplugin-nonfree dai contrib per Jessie

Il primo pacchetto è un plugin NPAPI (Netscape Plugin API, compatibile con i browser legacy tipo Firefox e Chromium) che consente di caricare i plugin PPAPI (Pepper Plugin API di nuova generazione).

Il secondo pacchetto dovrebbe scaricare Google Chrome (software proprietario), ed estrarre dall'archivio il plugin Player Pepper Flash libpepflashplayer.so. Tuttavia pare che il plugin non ci sia più nel file distribuito da Google, quindi la procedura fallisce con:

mv: cannot stat ‘unpackchrome/opt/google/chrome/PepperFlash/libpepflashplayer.so’:
    No such file or directory

È sufficiente procurarsi l'archvio per altra via (ad esempio da una installazione di Google Chrome funzionante) e copiarla nella directory /usr/lib/pepperflashplugin-nonfree/.

Se si installa solo il primo pacchetto (cioè il layer di compatibilità NPAPI - PPAPI), nello pseudo URL chrome://plugins risulta installato erroneamente l'Adobe Flash Player - Version: 11.2.999.999, nel caso si visiti una pagina che richiede il Flash Player compare l'errore Couldn't load plugin. Se invece l'installazione è completa risulta Adobe Flash Player - Version: 25.0.0.148.

Il pacchetto flashplugin-nonfree (che scarica e installa il Flash Player di Adobe, plugin di tipo NPAPI) non funziona con Chromium.

Esecuzione nel browser Iceweasel/Firefox con Adobe Flash Player

Per verificare l'installazione del plugin Flash, la versione e il suo corretto funzionamento è possibile cercare uno dei vari checker on-line. Il browser Iceweasel/Firefox ha lo pseudo URL about:plugins per verificare i plugin installati.

Dal sito https://get.adobe.com/it/flashplayer/ si scarica il plugin (tecnologia legacy NPAPI, architettura amd64). Attualmente è disponibile la versione 25.0.0.148. È sufficiente estrarre la libreria libflashplayer.so e linkarla nella directory /usr/lib/mozilla/plugins/.

Con Firefox >= 52 esiste una opzione di configurazione che deve essere impostata: puntare il browser allo pseudo indirizzo about:config e impostare l'opzione plugin.load_flash_only. Se il plugin non compare tra quelli attivi provare a cambiare da true a false o viceversa.

doc/appunti/software/scratch.txt · Last modified: 2017/07/21 16:21 by niccolo