Erreur dans R: impossible d'ouvrir la connexion à X11

9

Je viens de configurer une distribution fedora sur mon ordinateur et j'essaye lentement d'apprendre à travailler à partir de la ligne de commande. Je testais Rce qui s'est bien passé, sauf pour une raison quelconque lorsque j'ai essayé à nouveau, je semble soudainement incapable de dessiner des parcelles. Je reçois l'erreur:

> x = 1:5
> y = x^2
> plot(x,y)
No protocol specified
Error in X11(d$display, d$width, d$height, d$pointsize, d$gamma, d$colortype,  : 
  unable to start device X11cairo
In addition: Warning message:
In function (display = "", width, height, pointsize, gamma, bg,  :
  unable to open connection to X11 display ''

et quand je vérifie les capacités que je vois X11est FALSE:

> capabilities()
No protocol specified
    jpeg      png     tiff    tcltk      X11     aqua http/ftp  sockets 
    TRUE     TRUE     TRUE     TRUE    FALSE    FALSE     TRUE     TRUE 
  libxml     fifo   cledit    iconv      NLS  profmem    cairo 
    TRUE     TRUE     TRUE     TRUE     TRUE    FALSE     TRUE 

Bien que je ne sache pas si ceux-ci sont connectés ou non, il semble que le X11 devrait être allumé?

Partout où je cherchais, ces gens semblaient avoir ce problème en travaillant sur une connexion ssh (je n'ai pas encore regardé ce que c'est exactement: $).

J'espère que quelqu'un qui sait de quoi il s'agit pourrait être si gentil de m'expliquer le problème et de proposer une solution.

Jóhann
la source
1
Avant de commencer R, pouvez-vous publier la sortie deecho $DISPLAY
Karlson
Cette commande donne ´: 0´
Jóhann
1
Que diriez-vous de R:Sys.getenv("DISPLAY")
Karlson
hmm, cela ne me donne que bash: syntax error near unexpected token "DISPLAY" ''
Jóhann
Faites ceci: Sys.getenv(DISPLAY)ou ceci: Sys.getenv('DISPLAY')ouSys.getenv(c("DISPLAY"))
Karlson

Réponses:

6

Il existe de nombreux autres threads liés au package Cairo.

L'un d'eux mentionne le changement de type X11 mais la plupart déclarent que R ne sait pas ce qu'est l'affichage et suggèrent de faire:

Sys.setenv("DISPLAY"=":0.0")

ou, sur les anciens systèmes,

Sys.putenv("DISPLAY"=":0.0")
Karlson
la source
5
Malheureusement, ni cette solution, ni celle mentionnée dans l'autre thread ne semblent résoudre ce problème. : / Mon package insiste également pour que j'utilise Sys.setenv au lieu de putenv .. vous ne savez pas si la nouvelle commande est différente?
Jóhann
3
Sys.putenvest déconseillé en faveur deSys.setenv
Karlson
1
Cela a fonctionné la prochaine fois que j'ai essayé d'utiliser ceci :). Ça a dû être quelque chose d'étrange avec la dernière session
Jóhann
1

Si vous n'avez pas de serveur X local, vous pouvez installer le serveur framebuffer virtuel X11 comme indiqué ici :

apt-get install xvfb xauth xfonts-base

Ensuite, vous pouvez démarrer une nouvelle instance comme indiqué ici :

Xvfb :0 -ac -screen 0 1960x2000x24 &

Ensuite, si votre R est compilé avec l' with-xoption de configuration (activée par défaut), vous devriez avoir la capacité X11, et vous n'avez qu'à le déclarer dans R:

Sys.setenv("DISPLAY"=":0")
Anthony O.
la source