【问题标题】:LANG error knitting document in R Studio preview 0.98.864R Studio 预览版 0.98.864 中的 LANG 错误编织文档
【发布时间】:2014-07-14 02:59:58
【问题描述】:

我有一个 R Studio 服务器的预览版(0.98.864 Ubuntu 版本),在 AWS 上设置为 EC2 微实例。当我尝试编织一个简单的 .Rmd 文档时,我收到以下错误消息:

Error in with_pandoc_safe_environment({ : 
  The 'LANG' environment variable must be set before running Pandoc.
Calls: <Anonymous> ... FUN -> get_pandoc_version -> with_pandoc_safe_environment
Execution halted

我通过编辑/etc/environment 设置了语言变量,并且我安装了language-pack-en-base。现在,当我运行 locale 时,我得到:

LANG=en_US.UTF-8
LANGUAGE=en
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

所以看起来 LANG 环境变量已经设置好了。

确实,当我从命令行运行 R 时,我得到:

> Sys.getenv("LANG",unset=NA)
[1] "en_US.UTF-8"

它似乎也已为所有用户设置,因为当我以其他用户身份登录时使用

su - <username>

然后运行locale,我得到了上面的结果。

但是,当我重新启动服务器时:

sudo rstudio-server restart

然后以用户身份登录服务器,我得到:

> is.na(Sys.getenv("LANG", unset = NA))
[1] TRUE

我的语言设置适用于所有用户,但不知何故此信息无法到达服务器。

部分解决方法是以用户身份登录服务器并添加

Sys.setenv(LANG="en_US.UTF-8")

致我的.Rprofile。但是,这一次只适用于一个用户,我想一次性解决所有用户的问题。

有人能看出我哪里出错了吗?

或者R中是否有另一个必须修改的配置文件?我尝试创建各种命令并将其添加到/etc/rstudio/rserver.conf/etc/rstudio/rsession.conf(请参阅this document),但没有任何命令能够通过配置测试。

【问题讨论】:

  • 我认为您可能不需要编辑 /etc/environment.无论如何,我的 LANGUAGELC_ALL 默认是空的(Debian 和 Ubuntu)。这可能是原因。如果不编辑 /etc/environment,locale 会返回什么?
  • @Yihui,对于我(Ubuntu 14.04)来说,LC_ALL 和 LANGUAGE 默认为空也是如此。在注释掉/etc/environment 的语言编辑并重新登录后,locale 告诉我 LANGUAGE 和 LC_ALL 为空。 (LANG 是 en_US.UTF-8。)
  • 我刚刚在Debian上测试了最新的RStudio Server预览版,没有发现问题。由于locale 为您提供了正确的 LANG 变量,我不知道 RStudio Server 是如何识别它的。
  • @Yihui,我也很疑惑,不过现在我可以写一行bash代码,将需要的Sys.setenv()命令添加到我所有的.Rprofile中当前用户(所有人都希望 LANG 成为 en)。如果我遇到其他任何事情,我会告诉你的。

标签: r environment-variables knitr rstudio pandoc


【解决方案1】:

LANG 变量将在 rmarkdown 中设置为 en_US.UTF-8(如果尚未设置)。此更改是在提交 bb2d87f 中带来的。

【讨论】:

  • 应该这样做!谢谢!
猜你喜欢
  • 1970-01-01
  • 2014-08-02
  • 1970-01-01
  • 2022-06-14
  • 1970-01-01
  • 2017-01-10
  • 2020-02-22
  • 1970-01-01
  • 2015-01-22
相关资源
最近更新 更多