User Tools

Site Tools


doc:appunti:software:scratch

This is an old revision of the document!


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 \
    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-454.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-454.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 prevede di usare l'ambiente SDK invece del runtime AIR. 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 devono installare 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

Esecuzione nel browser Chromium

Sono necessari due pacchetti (FIXME NPAPI, PPAPI, ecc):

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

Il secondo pacchetto dovrebbe scaricare Google Chrome (software proprietario), ed estrarre dall'archivio il plugin 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/.

Esecuzione nel browser Iceweasel/Firefox (non funziona)

doc/appunti/software/scratch.1494141678.txt.gz · Last modified: 2017/05/07 09:21 by niccolo