Visualizzazione post con etichetta wine. Mostra tutti i post
Visualizzazione post con etichetta wine. Mostra tutti i post

lunedì 2 settembre 2013

Avviare al boot un programma con wine che necessita di finestre

Per avviare un software studiato per windows sul proprio server Ubuntu si deve dapprima avere installato wine con il comando
sudo apt-get install wine
se possibile installare l'ultima versione aggiungendo un file col nome ppawine.list (o altro nome la cosa importante è che il file termini con .list) dentro /etc/apt/sources.list.d/ e dentro ci scrivi gli indirizzi del repository cercandoli alla pagina https://launchpad.net/~ubuntu-wine/+archive/ppa (ad oggi NDR l'ultima versione è la 1.4) per la propria distribuzione es.
deb http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu lucid main
deb-src http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu lucid main
se dovesse venir richiesta una chiave si deve aggiungerla con il comando
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com CHIAVE
dove CHIAVE è il numero della chiave pubblica che compare nell'errore dopo aver fatto
sudo apt-get update
lanciare il programma all' avvio con una delle 2 modalità dapprima si crea un file .sh dove verranno inseriti i comandi che ci servono per far partire l'applicazione poi si deve dargli i permessi di esecuzione tramite il comando
sudo chmod a+x nomefile.sh
ed ecco le due strade
  1. Se il programma non ha "urgenza" di essere avviato o per meglio dire non ha priorità specifiche è sufficiente aggiungereal file /etc/rc.local il lancio del nostro file
  2. copiare il file in /etc/init.d/ e succesivamente lanciare
sudo update-rc.d nomescript.sh defaults
per eliminare
sudo update-rc.d nomescript.sh remove
esempio file .sh
/usr/bin/wine /var/provaserver/programma.exe 2>/home/utente/log_provaserver.log
il 2> serve per avere in un file gli eventuali errori
il problema nasce dal fatto che wine o meglio il software che avviamo da wine deve aprire una finestra sul display e quindi lanciandolo dal boot si otterrà questo errore nel file di log
Application tried to create a window, but no driver could be loaded.
Make sure that your X server is running and that $DISPLAY is set correctly.
err:systray:initialize_systray Could not create tray window
per ovviare a questo problema ci viene in aiuto xvfb che tramite il comando xvfb-run avvia ad un server X virtuale il comando, dobbiamo quindi modificare il nostro fle sh nel seguente modo
xvfb-run/usr/bin/wine /var/provaserver/programma.exe 2> /home/utente/log_provaserver.log
risolvendo il problema e facendo funzionare il nostro programma. 

Se come nel nostro caso il computer dovesse non proseguire con il boot a causa del programma che abbiamo avviato dovremmo inserire la & dopo il comando ma prima di 2> e per sicurezza utilizziamo anche nohup che ci permette di avviarlo senza creare un terminale riducendo le possibilità di terminare involotariamente l'esecuzione del programma:
nohup xvfb-run/usr/bin/wine /var/provaserver/programma.exe & 2> /home/utente/log_provaserver.log