gpt4 book ai didi

r - PNG 图像在 linux 服务器节点上但不在头节点上时生成错误

转载 作者:太空宇宙 更新时间:2023-11-04 11:54:11 26 4
gpt4 key购买 nike

我的最终目标是在我大学的 Linux 服务器上呈现 R Markdown 文档,该服务器使用 SLURM 进行队列管理。但是,使用 PNG 图形设备会产生错误,而 PDF 图形设备会提供不适当的输出。

请注意,我有一台 Windows 计算机,并且正在使用 PuTTY 与服务器通信。 Xming 已安装,PuTTY 已启用 X11 转发。

当我运行时

salloc --ntasks 1 --partition <partition_name>
srun Rscript -e "png('test.png'); plot(1,1); dev.off()"`

没有保存绘图,我收到以下警告消息:

1: In png("test.png") :

unable to load shared object '/opt/exp_soft/R- 3.5.2/lib64/R/library/grDevices/libs//cairo.so': /lib64/libcairo.so.2: undefined symbol: FT_Get_Var_Design_Coordinates

2: In png("test.png") : 加载cairo DLL失败

空设备

但是,当我只删除 srun 命令并运行时

salloc --ntasks 1 --partition <partition_name>
srun Rscript -e "png('test.png'); plot(1,1); dev.off()"`

然后保存文件test.png。此外,输出 PDF 而不是 PNG 也能正确生成绘图 (Rscript -e "pdf( 'test.pdf'); plot(1,1); dev.off()") .

同理,一开始不使用srun,使用Rscript -e "('test.Rmd')"渲染Rmd文档,会正确渲染Rmd医生。但是把 srun 放在开头不会生成 Rmd 文档,只会生成警告信息:

File test2_files/figure-html/unnamed-chunk-1-1.svg not found in resource path

Error: pandoc document conversion failed with error 99

In addition: Warning messages:

1: In grDevices::png(f) : unable to load shared object '/opt/exp_soft/R-3.5.2/lib64/R/library/grDevices/libs//cairo.so': /lib64/libcairo.so.2: undefined symbol: FT_Get_Var_Design_Coordinates

2: In grDevices::png(f) : failed to load cairo DLL

3: In (function (filename = if (onefile) "Rplots.svg" else "Rplot%03d.svg", : failed to load cairo DLL

Execution halted

srun: error: srvcnthpc100: task 0: Exited with exit code 1

如果我将 dev='pdf' 设置为 knitr block 选项,则会呈现 Rmd 文档,但 html 文档中的绘图非常奇怪,因为它有一个滚轮和一个灰色背景(dev_equals_png_rmd_output)。

我注意到上述错误消息“FT_Get_Var_Design_Coordinates”中的“ undefined symbol ”是 FreeType 库的一部分。但是,我不确定这可能意味着什么,或者如果它意味着什么我会怎么做。

我重新安装了 Cairo R 包,但这并没有改变错误消息。

由于 PNG 图像呈现在头节点上(即没有 srun)而不是在服务器节点上(即有 srun),所以在我看来RSLURM 和服务器节点之间的通信中断,而不是某些文件或程序丢失。

我还认为 pandoc 会抛出错误,因为运行 R 代码时未生成 png 图像。

请注意,当使用 sbatch 而不是 srun 时也会产生上述错误(即代码以批处理而不是交互模式运行)。

任何帮助将不胜感激!我刚开始使用 Linux,并且开始喜欢上它了!

在服务器上运行 Rscript -e "sessionInfo()" 产生:

R version 3.5.2 (2018-12-20)

Platform: x86_64-pc-linux-gnu (64-bit)

Running under: CentOS Linux 7 (Core)

Matrix products: default BLAS: /usr/lib64/libblas.so.3.4.2 LAPACK: /usr/lib64/liblapack.so.3.4.2

locale:

1 LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C

[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8

[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8

[7] LC_PAPER=en_US.UTF-8 LC_NAME=C

[9] LC_ADDRESS=C LC_TELEPHONE=C

[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

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

other attached packages: 1 rmarkdown_1.11

loaded via a namespace (and not attached): 1 compiler_3.5.2 tools_3.5.2 htmltools_0.3.6 Rcpp_1.0.0 [5] knitr_1.21 xfun_0.5 digest_0.6.18 evaluate_0.13

当我运行 Rscript -e capabilities() 时,我得到以下信息:

jpeg         png        tiff       tcltk         X11        aqua
TRUE TRUE TRUE TRUE TRUE FALSE
http/ftp sockets libxml fifo cledit iconv
TRUE TRUE TRUE TRUE FALSE TRUE
NLS profmem cairo ICU long.double libcurl
TRUE FALSE TRUE TRUE TRUE TRUE

最佳答案

所以,问题确实出在 FreeType 上。以前的 FreeType 库坏了(不确定具体是什么意思,但系统管理员是这么说的),系统管理员推出了更新和修复的 FreeType。然而,他一不小心只在头节点和他测试的服务器节点上做了这个。一旦他更新了整个集群,代码就按预期运行了。直接的 PNG 图和渲染带有图形的 Rmd 文档都工作正常。

关于r - PNG 图像在 linux 服务器节点上但不在头节点上时生成错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54987284/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com