首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只有当从RStudio调用时,soffice才会失败

只有当从RStudio调用时,soffice才会失败
EN

Stack Overflow用户
提问于 2020-11-09 21:09:23
回答 1查看 154关注 0票数 2

我正在Ubuntu20.04的机器上使用RStudio版本1.3.1093。我的R版本是4.0.3。

当我从RStudio内部调用这一行代码时,有一种意想不到的行为:

代码语言:javascript
复制
system("soffice --headless --convert-to xlsx --outdir files/ files/EGP.xlsb")

它在以下消息中失败:

代码语言:javascript
复制
/usr/lib/libreoffice/program/javaldx: error while loading shared libraries: libreglo.so: cannot open shared object file: No such file or directory
Warning: failed to read path from javaldx
/usr/lib/libreoffice/program/soffice.bin: error while loading shared libraries: libreglo.so: cannot open shared object file: No such file or directory
Warning message:
In system("soffice --headless --convert-to xlsx --outdir files/ files/EGP.xlsb") :
  error in running command

如果从RStudio的终端(soffice --headless --convert-to xlsx --outdir files/ files/EGP.xlsb)调用“裸”命令,则错误完全相同:

代码语言:javascript
复制
user@machine:~/Right/Path/To/File$ soffice --headless --convert-to xlsx --outdir files/ files/EGP.xlsb
/usr/lib/libreoffice/program/javaldx: error while loading shared libraries: libreglo.so: cannot open shared object file: No such file or directory
Warning: failed to read path from javaldx
/usr/lib/libreoffice/program/soffice.bin: error while loading shared libraries: libreglo.so: cannot open shared object file: No such file or directory

但是,如果我从一个终端执行相同的调用,它只是在没有错误的情况下工作,并产生预期的输出:

代码语言:javascript
复制
user@machine:~/Right/Path/To/File$ soffice --headless --convert-to xlsx --outdir files/ files/EGP.xlsb
convert /home/user/Right/Path/To/File/files/EGP.xlsb -> /home/user/Right/Path/To/File/files/EGP.xlsx using filter : Calc Office Open XML
Overwriting: /home/user/Right/Path/To/File/files/EGP.xlsx

我遵循了this ask Ubuntu question中的建议,强调需要更新$LD_LIBRARY_PATH,但问题并没有解决。

RStudio是否错过了查找libreoffice库的路径,这对系统来说是明确的(因为终端没有找到它们的问题)?我怎么才能修好它?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-30 12:10:45

下面是Roah的评论:shared library issue with the system function in R

在R脚本中添加Sys.setenv位对我有用:

代码语言:javascript
复制
Sys.setenv(LD_LIBRARY_PATH = "/usr/lib/libreoffice/program/")
system('soffice --convert-to odt table.html')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64759305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档