R `dev.new()` 冻结

R `dev.new()` freezes

这才刚刚开始发生:当我键入命令 dev.new() 时,window 保持冻结状态,我无法 Ctrl+c 停止它。我必须在另一个终端中终止 R 进程。我是 运行 64 位 CentOS 6.7R 3.2.1。这是 sessionInfo():

的输出
> sessionInfo()
R version 3.2.1 (2015-06-18)
Platform: x86_64-redhat-linux-gnu (64-bit)
Running under: CentOS release 6.7 (Final)
locale:
 [1] LC_CTYPE=en_US.utf8       LC_NUMERIC=C              LC_TIME=en_US.utf8        LC_COLLATE=en_US.utf8     LC_MONETARY=en_US.utf8
 [6] LC_MESSAGES=en_US.utf8    LC_PAPER=en_US.utf8       LC_NAME=C                 LC_ADDRESS=C              LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.utf8 LC_IDENTIFICATION=C

attached base packages:
[1] graphics  grDevices utils     datasets  stats     methods   base

other attached packages:
[1] ggplot2_1.0.1    data.table_1.9.4 plyr_1.8.3       reshape2_1.4.1   vimcom_0.9-9     setwidth_1.0-4   colorout_1.1-0

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.0      digest_0.6.8     MASS_7.3-44      chron_2.3-47     grid_3.2.1       gtable_0.1.2     magrittr_1.5     scales_0.3.0
 [9] stringi_0.5-5    proto_0.3-10     tools_3.2.1      stringr_1.0.0    munsell_0.4.2    colorspace_1.2-6

有人遇到过这个问题吗?也许相关,但我能够使用 GUI 应用程序将绘图设备创建为 cairoDevice,没有任何问题。


编辑:更多信息 - 当 运行 R --vanilla 时,会发生相同的行为。与直接调用 plot(例如 plot(rnorm(1e2)))和调用 ggplot.

相同

编辑 2:如果这还不够混乱,我可以在我的家庭系统上毫无问题地进行绘图(其中 sessionInfo 给出相同的输出,除了一些通过命名空间加载的包)。我相信也安装了相同的 CentOS 软件包。


编辑 3:要添加更多信息,除了我提到的 (RGtk2) GUI 仍然有效之外,我可以直接从命令行调用 Cairo 并且无需绘图即可工作那样发所以它似乎是特定于基础绘图的。

我在 SL6.7 上遇到了同样的问题。这不是 R 问题,而是 xorg-x11-server-Xorg 更新导致它崩溃。

只需降级软件包并重新启动您的 X-session 即可再次绘图。

~$ yum 降级 http://ftp.scientificlinux.org/linux/scientific/6.6/x86_64/updates/security/xorg-x11-server-Xorg-1.15.0-26.sl6.x86_64.rpm

永久禁用 yum.conf

中的软件包升级

~$ echo "exclude=xorg-x11-server-Xorg" >> /etc/yum.conf

实际上,R 的问题并不是 xorg-x11-server 中的错误。 它的更新(修复后备存储的 Always 模式)揭示了 X11 中的一个错误 R 的模块。更多细节可以在 R 的 bugzilla 中找到:

https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16497 (详见评论5)

已经提出了几个补丁来解决这个问题。