PlayOnLinux, creiamo uno script

5 05 2010

Qualche articolo fa vi ho presentato PlayOnLinux e parlato della sua comodità, non solo per chi ha intenzione di installare il programma, ma anche per chi ha intenzione di capire come installarlo e per chi ha intenzione di spiegare come è riuscito ad installarlo, ottenendo inoltre quasi una “nomina ufficiale” (inviano lo script a PlayOnLinux si può mettere infatti nei commenti il nome dell’autore).

Mi dispiaceva non aver potuto fare un esempio un poco più approfondito, ma detto sinceramente avevo solo una vaga idea di come si facesse uno script, così mi sono messo a leggere un poco le guide su PlayOnLinux e la raccolta di funzioni che si avevano a disposizione. Letto tutto mi sembrò quasi una scemata farne uno, per fortuna poi è possibile leggere quelli degli altri (gran bella cosa l’OpenSource) per tentare di risolvere alcuni problemi che non riuscivo a capire, e quindi vi mostro lo script che ho creato.
Voglio subito farvi notare che in teoria non serve nessuno script per installare Derive, nel senso che non vi è bisogno di nessuna configurazione particolare, questo vuole essere soltanto un esempio delle potenzialità di PlayOnLinux e per chi testa vari software con Wine.

Allora, questo script lo ho fatto per il programma Derive (quando mi avvicinai a Gnu/Linux la prima volta ero convinto (e sbagliavo) che Octave e Maxima fossero molto complicati da usare…) che, come gia scritto s’installa senza problemi con Wine.

Quindi, se siete interessati a installare Derive senza nessuna fatica, usate PlayOnLinux perché ora esiste lo script apposito, se invece siete interessati a vedere un attimo il lato tecnico leggete avanti l’articolo ;)

NB: Lo script non è ancora presente sulla lista, dovrete far andare il mio. Per fare ciò dovete copiare il codice che scriverò più sotto e salvatelo in un file (ad esempio: derive), da PlayOnLinux andate su “Strumenti/esegui script non ufficiale” e selezionate il file appena creato.

Update: Lo script è stato aggiunto in PlayOnLinux, ne ho quindi aprofittato per aggiornare lo script nel blog (vi mostro una versione accorciata dello script per evitare un articolo troppo lungo e noioso)

A questo punto vediamo come funziona un attimo lo script, prima di tutto vi mostro il codice sorgente (rigorosamente open)

#!/bin/bash
# Author : Fekir
# Version : Blog version
 
 [ "$PLAYONLINUX" = "" ] && exit 0
 
source "$PLAYONLINUX/lib/sources"
 
NAME="Derive6" 
PREFIX="Derive6"
WINE="1.1.44"
#--------IMAGES+TEXT
wget http://education.ti.com/images/rightcolumn/products/software/derive6_L.jpg --output-document="$REPERTOIRE/tmp/deriveleft.jpeg"
convert "$REPERTOIRE/tmp/deriveleft.jpeg" -scale 150x356\! "$REPERTOIRE/tmp/left.jpeg"
wget http://static.sftcdn.net/it/scrn/12000/12935/2t_thumbfinale.jpg --output-document="$REPERTOIRE/tmp/derivetop.jpeg"
convert "$REPERTOIRE/tmp/derivetop.jpeg" -scale 60x60\! "$REPERTOIRE/tmp/top.jpeg"
POL_SetupWindow_Init "$REPERTOIRE/tmp/top.jpeg" "$REPERTOIRE/tmp/left.jpeg"

EXECUTE="Per favore, seleziona il file d'installazione." 
INSTALLATION="Sto installando $NAME ..."
POLEND="$NAME è stato installato con successo"
#--------PRESENTATION 
POL_SetupWindow_presentation "$NAME" "Soft Wharehouse" "http://education.ti.com/" "Fekir" "$PREFIX"
#--------EXECUTABLE
POL_SetupWindow_browse "$EXECUTE" "$NAME" 
FILE="$APP_ANSWER" 
#--------PREFIX+WINE
POL_SetupWindow_install_wine "$WINE"
Use_WineVersion "$WINE"
select_prefix "$REPERTOIRE/wineprefix/$PREFIX/"
POL_SetupWindow_prefixcreate
 
PROGRAMFILES="Program Files"
POL_LoadVar_PROGRAMFILES 
#--------INSTALLATION 
POL_SetupWindow_wait_next_signal "$INSTALLATION" "$NAME"
wine "$FILE" 
POL_SetupWindow_detect_exit
#--------END
POL_SetupWindow_reboot 
POL_SetupWindow_make_shortcut "$PREFIX" "$PROGRAMFILES/TI Education/Derive 6" "Derive6.exe" "" "$NAME"
Set_WineVersion_Assign "$WINE" "$NAME"
clean_tmp
POL_SetupWindow_message "$POLEND" "$NAME" 
POL_SetupWindow_Close
exit

Visto che non c’è molto da spiegare per l’installazione di Derive mi dilungherò un attimo (piccolo) su come funziona l’intero script.

Allora, lo script vero e proprio comincia da riga 11 (se non consideriamo le righe 8 e 9 dove vengono definite due variabili), attraverso il comando wget scarichiamo l’immagine per la prima facciata, cioè il logo di derive 6, che viene poi adattato alle giuste dimensioni.
Dalla riga 12 alla riga 16 vengono un paio di immagini del programma derive, giusto per abbellire il processo d’installazione, alla riga 18-20 vengono definite altre variabili e la riga 22 fa apparire la prima schermata, l’immagine di derive a destra, e un paio di informazioni sullo script (a quale programma serve lo script, chi la fatto, e il sito del programma per maggiori informazioni).
Le linee di codice 24-25 servono per determinare il file d’installazione, successivamente (righe 27-33) viene preparato l’ambiente adatto installando la versione di wine indicata, creando il prefisso e determinando parte del percorso in cui andranno installati i programmi.
Subito dopo (linea 35-37) viene eseguito il file d’installazione, la schermata rimarrà bloccata finche il processo d’installazione non sarà terminato
Dopo l’installazione (linea 39) viene anche simulato un riavvio, e poi creata una scorciatoia nel vostro menu di PlayOnLinux (purtroppo ancora mancante di icona adeguata), viene infine assegnata la versione di wine adatta per far partire il programma, vengono rimossi eventuali file temporanei di PlayOnLinux, infine viene notificato che l’installazione è avvenuta con successo (linea 43), viene chiusa l’ultima finestra e lo script si completa.

A questo punto non mi resta chesegnalarvi i link che mi sono serviti per creare lo script, qui possiamo trovare un lissta delle funzioni che ci vengono messe a disposizione (veramente tante e tutte molto utili), qui gli script ammessi ufficialmente, e infine qui una sorta di introduzione fatta molto bene, che quindi eviterò di scopiazzare e poi vi sono delle FAQ. Esiste anche una sorta di wiki non ufficiale, che sinceramente ho scoperto mentre stavo scrivendo l’articolo

Una piccola, ma (a mio parere) importante nota:
A prima vista Wine e i suoi derivati mi stanno antipatici, insomma, non siamo su Windows, quindi mi sembra più giusto creare programmi alternativi a quelli che ci servono al posto di tentare di far funzionare i nostri vecchi e quindi dare via risorse in questo modo. Detto questo potranno quindi apparire contradittori i miei articoli su Wine e derivati, ma si considerando diversi aspetti possiamo accorgergi che invece questo progetto non ha niente da invidiare da altri, vediamo alcuni di questi aspetti.
1) Uno potrebbe essere legato ad una applicazione in particolare
2) Non siamo su Windows, quindi OGNI alternativa possibile dovrebbe venir presa in considerazione
3) Alcuni programmi non hanno alternative (magari causa formati proprietari)
4) Insieme a Wine crescono e si sviluppano altri progetti completamente differenti (ad esempio ReactOS) e molto interessanti
5) Potrebbe attirare nuovi sviluppatori a programmare per Gnu/Linux, ad esempio potrebbero un giorno scoprire che i loro programmi funzionano anche su Gnu/Linux grazie a Wine, e quindi tenterebbero magari dapprima di scrivere le nuove versioni in modo che continuino a funzionare, poi magari implementerebbero Wine in alcune parti del programma per farlo funzionare ufficialmente sotto Gnu/Linux e infine farebbero una versione dedicata (Pensate sia idea troppo surreale? Io no, anche perchè gia successo(/sta succedendo) in qualche occasione)

Personalmente tento di NON USARE MAI PlayOnLinux e Wine, e se sono installati sul mio pc è perchè penso che siano un progetto veramente interessante e ben fatto (se si pensa che sono applicazioni scritte per Windows e funzionano senza problemi (a parte i giochi che richiedono molte risorse e qualche altro programa) su altri Sistemi Operativi…).

Se adesso, dopo questo articolo, state pensando che volete creare anche voi uno script (anche se semplice come il mio, non importa, è comunque un contributo alla comunità), vi consiglio allora questa pagina, dove trovate un elenco di apllicazioni che funzionano con wine (chiaramente non sono solo quelle) oppure dei consigli e trucchi per farle funzionare, ne scegliete una e provate a fare uno script per automatizzare i passaggi che siete obbligati a fare altrimetni manualmente. Se avete bisogno di aiuto basta chiedere al forum di PlayOnLinux oppure al team di wine.





PlayOnLinux – Wine ottimizzato

29 04 2010

Sicuramente tutti avrete sentito parlare almeno una volta di Wine (programma che tenta di installare (non emulare!) applicazioni pensate per Windows su Gnu/Linux), e chi lo ha provato ad usare si sarà accorto che purtroppo non sempre tutto funziona al primo colpo.
Magari per installare il primo programma dovete seguire qualche guida particolare e copiare vari files (e già qui si hanno le prime difficoltà), di seguito si vuole magari installare un secondo programma e di nuovo si seguono guide varie, e se si devono cambiare le configurazioni di Wine magari il primo non funziona più…
Insomma, installando più programmi possono nascere problemi di natura diversa (la soluzione migliore sarebbe non usare programmi installati con Wine, però magari vi accorgete che ne avete uno che vi serve in modo particolare e allora siete disposti a tentare…)

PlayOnLinux non è nient’altro che una applicazione che si può riassumere attraverso una sola immagine:

Quest’altra invece vi mostra come lavora wine (NB: PlayOnLinux lavora su wine!)

Come possiamo vedere, usando Wine i programmi sono installati tutti insieme, mentre con PlayOnLinux vengono creati dei “prefissi” differenti per ogni installazione, cosi ché se una va male, oppure se si deve configurare wine in modo particolare, questo non incida con le altre installazione già effettuate.
Anche la rimozione di un programma diventa così molto più semplice, basta infatti cancellare il prefisso, mentre da wine la disinstallazione di un programma non è mai andata a buon fine (parlando per esperienza personale).

Il secondo vantaggio di PlayOnLinux (il primo è quello dei prefissi separati), è quello di includere in se una raccolta di script che vi aiutano nell’installazione di vari programmi.
Se vogliamo ad esempio installare un gioco o un programma che appare nell’elenco, come ad esempio Firefox, basterà allora cliccare sull’aplicazione che c’interessa che una intuitiva interfaccia ci guiderà durante l’installazione, scaricherà da solo i file necessari reperibili in internet, e se necessario (ad esempio per un gioco su cd/dvd) chiederà dove si trovano i file d’installazione.

Chiaramente possiamo poi installare anche programmi che non appaiono nell’elenco, potendo così creare comunque un prefisso per ogni programma che tentiamo di installare.

Inoltre sul sito ufficiale sono presenti (pochi) plugins che possiamo installare per aumentare le potenzialità di PlayOnLinux, anche se sinceramente al momento non mi sembrano particolarmente interessanti (almeno nei miei casi).

Se vi state chiedendo perché in PlayOnLinux troviamo l’applicazione Firefox (oppure Blender, 7zip e altri), nonostante sappiamo tutti che esiste anche la versione nativa per Gnu/Linux (e quindi non oso immaginare chi lo installerebbe con Wine), beh, sappiate che nemmeno io ho risposta a questa domanda, se non forse per mostrare le potenzialità di Wine e avere un elenco applicazioni più lungo in PlayOnLinux ;)

Last but not least:
Un ultimo aspetto positivo, per chi sperimenta molto con wine, è la possibilità di inviare il proprio script al team di PlayOnLinux, così al posto di scrivere complicate e poco pratiche guide ai vostri lettori che vogliono installare un programma potete dire di aver “donato” lo script a PlayOnLinux, e per chi è comunque un po’ interessato a sapere come avete fatto potete tranquillamente spiegare il vostro sorgente pezzo per pezzo.

Se siete interessati (e ve lo consiglio fortemente se usate Wine) ad usare PlayOnLinux, vi rimando alla pagina di download che spiega molto bene come è possibile installare questo programma su quasi qualsiasi distro (oltre alla possibilità di poter scaricare i sorgenti, differenti edizioni di wine come estensioni per PlayOnLinux e altri script)