我在Ubuntu 22.04远程机器上运行R 4.3.2。我使用vscode SHH到它用于除R之外的所有编码目的,因为每次我运行一个Ubuntu Notebook并执行代码时,R内核都会立即崩溃。日志说:
unable to start device PNG
Calls: <Anonymous> ... evaluate -> dev.new -> do.call -> <Anonymous> -> ok_device
In addition: Warning message:
In ok_device(filename, ...) : unable to open connection to X11 display ''
Execution halted
字符串
这自然让我想到了this post,所以根据建议,我尝试了切换
options(bitmapType='cairo')
型
在我的~/.Rprofile
。这也不工作,但日志现在说:
13:52:48.798 [warn] StdErr from Kernel Process Error in dev.control(displaylist = "enable") :
dev.control() called without an open graphics device
Calls: <Anonymous> ... tryCatch -> tryCatchList -> evaluate -> dev.control
In addition: Warning message:
In ok_device(filename, ...) :
13:52:48.798 [warn] StdErr from Kernel Process type = "cairo" is unavailable. trying "Xlib"
Execution halted
型
在终端中运行R似乎很好,直到我尝试通过png()
与图形对话:
> png()
Error in .External2(C_X11, paste0("png::", filename), g$width, g$height, :
unable to start device PNG
In addition: Warning message:
In png() : could not open PNG file 'Rplot001.png'
型
我还确保安装了
sudo apt install libpng-dev
sudo apt install libcairo2-dev
sudo apt install libjpeg-dev
型
我认为我的$LD_LIBRARY_PATH也设置正确:
/usr/lib/x86_64-linux-gnu/libpng.so:/usr/lib/x86_64-linux-gnu/libcairo.so:/usr/lib/x86_64-linux-gnu/libpng.so:/usr/lib/x86_64-linux-gnu/libcairo.so:
型
我错过了什么?谢谢
编辑:capabilities()
的结果:
> capabilities()
jpeg png tiff tcltk X11 aqua
FALSE FALSE FALSE TRUE FALSE FALSE
http/ftp sockets libxml fifo cledit iconv
TRUE TRUE FALSE TRUE TRUE TRUE
NLS Rprof profmem cairo ICU long.double
TRUE TRUE FALSE FALSE TRUE TRUE
libcurl
TRUE
型
1条答案
按热度按时间7dl7o3gd1#
对于来世,我是这样解决的:
我检查了
capabilities()
作为@M。维京海盗建议在评论中,并看到PNG,但也开罗和X11是FALSE
,这是奇怪的,因为我已经手动安装它们。我意识到我的R dist可能是编译时没有这些功能的,出于一些奇怪的原因。因此,我重新编译并重新安装了R,如下所示:
字符串
然而,错误首先持续存在,因为
X11
仍然设置为FALSE
,所以我遵循常见的建议,通过追加切换到cairo
:型
到
~/.Rprofile
(或您的.Rprofile所在的任何位置)这就成功了:)