pandoc 文档转换失败,错误 127
Posted
技术标签:
【中文标题】pandoc 文档转换失败,错误 127【英文标题】:pandoc document conversion failed with error 127 【发布时间】:2016-04-13 17:24:21 【问题描述】:我不确定如何制作一个可重现的示例,但我很想知道是否有其他人遇到过这个问题。我在运行 Ubuntu 的 EC2 实例上通过闪亮的服务器托管了一个 R Markdown 文件。几天来一切正常,现在当我尝试在浏览器中查看文档时突然出现以下错误:
pandoc document conversion failed with error 127
我没有转换为 pdf,没有推送任何更改,并且它在几个小时前就可以工作了。我没有在网上找到很多关于这个错误代码的东西,所以我不知道如何调试这个问题。以前有人遇到过这种情况吗?
【问题讨论】:
这里有类似的错误,在私有 ubuntu 服务器上使用 knit2pdf。重启服务器有帮助。 是的,当多人同时访问一个闪亮的应用程序时,我经常收到这个错误。我认为这与内存有关。 在自托管的 Ubuntu VM 上获取此信息。绝对是我的内存,因为它还说:“系统调用失败:无法分配内存”。 “错误 127”是不透明且无用的,甚至不确定它来自哪里。好吧,我重新启动了 RStudio,它再次工作,所以我假设内存泄漏(是的,第一次free
实际上显示正在使用的交换空间)
【参考方案1】:
如果没有示例,很难确定您要问什么,但我在尝试从 RStudio 的 EC2 实例“编织到 html”时遇到了同样的错误。
这对我有用:
library("rmarkdown")
render("filename.Rmd", "html_document")
【讨论】:
【参考方案2】:在使用安装了 Ubuntu 16.04 LTS 并运行闪亮应用的 aws EC2 实例时,我遇到了同样的错误。
我的解决方法:我的 app.R 文件的 ui 和服务器功能之外还有一些代码。我将所有外部代码移到服务器函数中,并且不再发生错误。
让我感到困惑的是,即使某些代码在这两个函数之外,该应用程序仍然可以在大部分时间运行!
您可以尝试的另一件事: 一些消息来源指出,此错误是由于内存不足而发生的。为了帮助 aws 实例上的有限内存情况,您应该提供系统可用于释放内存的交换空间。默认情况下,aws EC2 实例上的 Ubuntu 的交换空间为零!您可以使用这些说明,google 也显示很多:http://www.thegeekstuff.com/2010/08/how-to-add-swap-space/
【讨论】:
【参考方案3】:当分配给 R 会话的 RAM 完全用完时,就会发生这种情况。
您的代码中可能存在内存泄漏。
最简单的修复方法是重新启动会话。
【讨论】:
【参考方案4】:我今天遇到了类似的问题(请参阅下面的 .log 文件):
Warning in system(command) : system call failed: Cannot allocate memory
Warning: Error in : pandoc document conversion failed with error 127
Stack trace (innermost first):
105: pandoc_convert
104: convert
103: render
102: discover_rmd_resources
101: find_external_resources
100: copy_render_intermediates
99: output_format$intermediates_generator
98: <Anonymous>
97: do.call
96: contextFunc
95: .getReactiveEnvironment()$runWith
94: shiny::maskReactiveContext
93: <reactive>
82: doc
81: shiny::renderUI
80: func
79: origRenderFunc
78: output$__reactivedoc__
3: <Anonymous>
2: do.call
1: rmarkdown::run
我也在 EC2 实例上通过 Ubuntu 运行 Shiny Server,特别是 t2.micro
。我在这里按照票数最高的答案解决了这个问题:How do you add swap to an EC2 instance?
sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
sudo /sbin/mkswap /var/swap.1
sudo chmod 600 /var/swap.1
sudo /sbin/swapon /var/swap.1
添加到/etc/fstab
:
/var/swap.1 swap swap defaults 0 0
简而言之,您可以在 EBS 上创建交换(内存)空间(因为 t2.micro
实例没有临时存储),这应该缓解您的内存问题(无需向上移动到更大的 EC2 实例)。
【讨论】:
【参考方案5】:当我尝试使用 RStudio 从 RMarkdown 文件生成 pdf_document 时,我遇到了类似的错误。据我所知:错误 127 表示“找不到文件”。文件不存在或路径不正确。
就我而言,我得到了额外的信息,即找不到 ghostscript
。我最近用 Homebrew 安装了新版本的 MacTex。但是
Homebrew 确实……与 MacTex 安装的 ghostscript 冲突 https://github.com/Homebrew/homebrew-core/issues/11368
我的解决方案是按照此处的建议创建指向ghostscript
的符号链接:
Ghostscript not writable
sudo chown -R `whoami` /usr/local/share/ghostscript
brew link --overwrite ghostscript
【讨论】:
【参考方案6】:推荐的解决方案如下: 1.检查R的安装位置(假设是C盘) 2. 在 C 盘中腾出一些空间,建议至少 10 GB 3.快乐编码
【讨论】:
【参考方案7】:使用 knitr::kable() 将 tibble 转换为表格时出现此错误
错误:pandoc 文档转换失败,错误 127 6. stop("pandoc 文档转换失败并出现错误", result, call. = FALSE) 5. rmarkdown::pandoc_convert(输入 = rmarkdown::pandoc_path_arg(mdfile), to = "html", 输出 = rmarkdown::pandoc_path_arg(htmlfile)) 4. print.knit_asis(knitr::asis_output(x)) 3. 打印(knitr::asis_output(x)) 2. print.knitr_kable(x) 1. (function (x, ...) UseMethod("print"))(x)
我已经尝试过:
a) 重新启动会话以刷新内存 b) 安装最后一个 pandocs 版本
但是还是不行……
非常感谢。
【讨论】:
您好 Delhoyo,欢迎来到 SO,如果您发布一个新问题,您将会有更好的运气,如果您想成为一名优秀的 SO 用户并收到您应该做的回复并表现出一些努力meta.***.com/questions/261592/… 并始终格式化您的代码,使其看起来美观且易于阅读【参考方案8】:我知道这是一个老问题,但正如 vivek 所说,重新启动服务器对我有用:
sudo systemctl restart shiny-server
【讨论】:
以上是关于pandoc 文档转换失败,错误 127的主要内容,如果未能解决你的问题,请参考以下文章
使用 pandoc 进行文档转换(markdown转word)