X11

Ciao a tutti,
ho un’applicazione “deployata” in produzione con Capistrano che usa
Passenger.
Ho necessità di creare dei grafici con R (ma credo che il problema
persisterebbe anche se usassi GnuPlot) tramite la gemma RSRuby, ma non è
possibile in quanto il terminale x11 non viene rilevato, come se
l’utente del server (‘rails_user’ nel mio caso) non possiede accesso a
tale risorsa.
Accedendo in ssh al server su cui l’applicazione viene pubblicata e
provando a generare i grafici “a mano” non ci sono problemi, come pure
non ci sono problemi nel server in development. E’ come se l’utente
‘rails_user’ perdesse l’accesso alla risorsa; può essere perché tutti i
comandi lanciati da Capistrano vengono eseguiti in una nuova shell?
(es.: sh -c ‘env’ mostra una lista ridotta di variabili d’am-biente…)

Spero di essere stato chiaro, e spero ancora di più che qualcuno possa
darmi un suggerimento utile.

Grazie a tutti fin d’ora.

Iwan B.

Iwan, se ho ben capito la configurazione del tuo sistema hai un server
di produzione, il tuo sistema da cui ti colleghi in ssh ed un server X11
(banalizzando: uno schermo). Dato che il programma gira sul server di
produzione, il server X11 di default è il suo ma uno schermo con
relativo server X11 ce l’ha oppure è una macchina (fisica o virtuale) in
un rack magari senza neppure la scheda grafica? Per verificarlo, il
processo del server normalmente è /usr/X11R6/bin/X o qualcosa del
genere.
Se ci fosse rimane poi da vedere se il tuo utente ha i permessi per
collegarcisi. Trovi delle informazioni qui
http://www.xfree86.org/current/Xserver.1.html#sect10

Paolo

Iwan B. wrote:

Ciao a tutti,
ho un’applicazione “deployata” in produzione con Capistrano che usa
Passenger.
Ho necessità di creare dei grafici con R (ma credo che il problema
persisterebbe anche se usassi GnuPlot) tramite la gemma RSRuby, ma non è
possibile in quanto il terminale x11 non viene rilevato, come se
l’utente del server (‘rails_user’ nel mio caso) non possiede accesso a
tale risorsa.
Accedendo in ssh al server su cui l’applicazione viene pubblicata e
provando a generare i grafici “a mano” non ci sono problemi, come pure
non ci sono problemi nel server in development. E’ come se l’utente
‘rails_user’ perdesse l’accesso alla risorsa; può essere perché tutti i
comandi lanciati da Capistrano vengono eseguiti in una nuova shell?
(es.: sh -c ‘env’ mostra una lista ridotta di variabili d’am-biente…)

Spero di essere stato chiaro, e spero ancora di più che qualcuno possa
darmi un suggerimento utile.

Grazie a tutti fin d’ora.

Iwan B.

La questione è che le istanze (i processi) del server Rails (ovvero
l’utente che ne è il proprietario) non hanno accesso alla risorsa xterm
anche se in realtà l’utente (accedendo remotamente) dovrebbe averla.
Vedo di spiegare meglio: se io accedo al server tramite ssh come utente
‘rails_user’ (nome arbitrariamente scelto), ho accesso alla risorsa
display (perché specificato come opzione ‘forward x11’ nella connessione
ssh). Tuttavia lo stesso utente proprietario dei processi eseguiti dal
server in produzione (che utilizza la medesima configurazione di accesso
ssh, quindi con l’opzione menzionata), NON ha accesso alla risorsa X11
(in qualche modo la perde), e questo impedisce di eseguire processi che
in un modo o nell’altro hanno necessità di accedere ad essa come per
esempio creare dei grafici con R.
Ho visto che è possibile aggirare questo problema facendo generare i
grafici al volo dal server web (quindi da un utente diverso), ma questo
comporta varie limitazioni.

Ora il problema è stato risolto, o meglio aggirato: ho abbandonato
l’utilizzo di R per abbracciare l’uso di GnuPlot (che può fare uso della
risorsa x11 o generare autonomamente grafici su file).
Ed è stata comunque una bella scoperta, GnuPlot è straordinario!

Se qualcuno è in grado di fornirmi qualche ragguaglio sul problema con
X11 è il benvenuto.

Saluti a tutti,
iwan

Se così fosse sarebbe avvalorata la mia impressione che sul server
remoto non ci sia nessun server X11 attivo, da cui la mia domanda
originale: ma il server remoto ha una scheda grafica ed uno schermo o è
una macchina da rack?

Paolo

E’ una macchina da rack con Red Hat, ci ho sempre interagito tramite
terminale, dubito che abbia una scheda grafica…

Può darsi che io stia scrivendo una sciocchezza (dovresti chiedere su
forum dedicati a X11 o a ssh), ma l’opzione ForwardX11 dovrebbe rendere
disponibile il tuo server X11 locale (lo schermo su cui stai leggendo
ora) al programma che gira sul server remoto. Cito da un’URL googlata or
ora:

http://www.linuxjournal.com/article/6602

X11 Forwarding

You can encrypt X sessions over SSH. Not only is the traffic encrypted, but
the DISPLAY environment variable on the remote system is set properly. So, if
you are running X on your local computer, your remote X applications
magically appear on your local screen.

Se così fosse sarebbe avvalorata la mia impressione che sul server
remoto non ci sia nessun server X11 attivo, da cui la mia domanda
originale: ma il server remoto ha una scheda grafica ed uno schermo o è
una macchina da rack?

Paolo

Iwan B. wrote:

La questione è che le istanze (i processi) del server Rails (ovvero
l’utente che ne è il proprietario) non hanno accesso alla risorsa xterm
anche se in realtà l’utente (accedendo remotamente) dovrebbe averla.
Vedo di spiegare meglio: se io accedo al server tramite ssh come utente
‘rails_user’ (nome arbitrariamente scelto), ho accesso alla risorsa
display (perché specificato come opzione ‘forward x11’ nella connessione
ssh). Tuttavia lo stesso utente proprietario dei processi eseguiti dal
server in produzione (che utilizza la medesima configurazione di accesso
ssh, quindi con l’opzione menzionata), NON ha accesso alla risorsa X11
(in qualche modo la perde), e questo impedisce di eseguire processi che
in un modo o nell’altro hanno necessità di accedere ad essa come per
esempio creare dei grafici con R.
Ho visto che è possibile aggirare questo problema facendo generare i
grafici al volo dal server web (quindi da un utente diverso), ma questo
comporta varie limitazioni.

Ora il problema è stato risolto, o meglio aggirato: ho abbandonato
l’utilizzo di R per abbracciare l’uso di GnuPlot (che può fare uso della
risorsa x11 o generare autonomamente grafici su file).
Ed è stata comunque una bella scoperta, GnuPlot è straordinario!

Se qualcuno è in grado di fornirmi qualche ragguaglio sul problema con
X11 è il benvenuto.

Saluti a tutti,
iwan

Anche le macchina rack hanno una scheda grafica, per quanto minimale.
Ricordo qualche anno fa che mi era capitato di dover utilizzare su un
server qualche software che necessitava di X11 per funzionare (credo
qualche libreria grafica che richiamavo da uno script ruby per elaborare
delle immagini direttamente sul server) e avevo utilizzato un fake X11,
un demone che simula la presenza di X11 pur senza visualizzare nulla
sulla scheda grafica.
Su google credo tu possa trovare i riferimenti necessari.
ciao

francesco

Paolo M. ha scritto:

Di conseguenza un programma che necessita di un server X11 non ci
girerà , a meno di non fare come avevi inavvertitamente fatto tu:
lanciarlo da una sessione ssh con l’xforwarding proveniente da una
macchina con un server X11 attivo. In quel modo userà la macchina di
partenza dell’ssh per le elaborazioni che richiedono X11 (pare che R lo
usi per i font). Come approccio generale su un server però eviterei
qualsiasi software che richieda X11 o comunque la presenza di un sistema
grafico.

Paolo

PS: l’architettura di X ha sempre causato questi malintesi perché non si
è portati a pensare allo schermo come ad un server né a pensare che un
programma che gira in locale possa collegarsi ad uno o più schermi
(server X) di altri computer; però è un sistema efficace che permette di
fare tante cose senza ricorrere a vnc e compagnia.

Iwan B. wrote:

Se così fosse sarebbe avvalorata la mia impressione che sul server
remoto non ci sia nessun server X11 attivo, da cui la mia domanda
originale: ma il server remoto ha una scheda grafica ed uno schermo o è
una macchina da rack?

Paolo

E’ una macchina da rack con Red Hat, ci ho sempre interagito tramite
terminale, dubito che abbia una scheda grafica…

Paolo M. ha scritto:

Si, mi pare proprio di si.
Forse lo usavo rubymagick? Sinceramente non ricordo quale fosse la
libreria che necessitava di X11, sicuramente qualche elaborazione
grafica. Con questo sistema si risolve egregiamente senza dover
installare e lanciare X11 su di un server.

ciao

francesco

Francesco L. wrote:

Anche le macchina rack hanno una scheda grafica, per quanto minimale.
Ricordo qualche anno fa che mi era capitato di dover utilizzare su un
server qualche software che necessitava di X11 per funzionare (credo
qualche libreria grafica che richiamavo da uno script ruby per elaborare
delle immagini direttamente sul server) e avevo utilizzato un fake X11,
un demone che simula la presenza di X11 pur senza visualizzare nulla
sulla scheda grafica.

Molto interessante, grazie.
Forse è questo? Xvfb - Wikipedia

Paolo

Su google credo tu possa trovare i riferimenti necessari.
ciao

francesco