即使在示例页面中,Shiny-server 也不显示 rmarkdown(已安装 rmarkdown 包)
Posted
技术标签:
【中文标题】即使在示例页面中,Shiny-server 也不显示 rmarkdown(已安装 rmarkdown 包)【英文标题】:Shiny-server does not show rmarkdown even in the example page (rmarkdown package installed) 【发布时间】:2016-04-19 22:08:25 【问题描述】:我在 Amazon AWS EC-2 上安装了一个闪亮的服务器(Amazon Linux AMI 2015.09.1 (HVM),SSD 卷类型 - ami-60b6c60a)。服务器在 Shiny 应用程序中运行良好,但不呈现 .rmd
,甚至是示例页面中的 rmd。
我只看到这个错误:
错误:运行命令出错
在 html 中:
<div id="__reactivedoc__" class="shiny-html-output shiny-bound-output shiny-output-error">error in running command</div>
我已经安装了 rmarkdown 包,它在 Rstudio 上运行良好。 (我对 Rstudio 和 Shiny 服务器使用相同的用户)。
我不知道如何获取有关错误的更多信息,我没有看到其他消息。
有人有想法吗?
新信息: 我调查来自服务器的日志: 这是 /var/log/shiny-server/ 的输出:
su: ignore --preserve-environment, it's mutually exclusive to --login.
Listening on http://127.0.0.1:52294
/opt/shiny-server/ext/pandoc/pandoc: error while loading shared libraries: libgmp.so.3: cannot open shared object file: No such file or directory
Warning: Error in system: error in running command
Stack trace (innermost first):
97: system
96: force
95: with_pandoc_safe_environment
94: get_pandoc_version
93: FUN
92: lapply
91: find_pandoc
90: pandoc_available
89: <Anonymous>
88: do.call
87: contextFunc
86: .getReactiveEnvironment()$runWith
85: shiny::maskReactiveContext
84: reactive reactive(
out <- rmd_cached_output(file, encoding)
output_dest <- out$dest
if (out$cached)
if (nchar(out$resource_folder) > 0)
shiny::addResourcePath(basename(out$resource_folder),
out$resource_folder)
return(out$shiny_html)
if (!file.exists(dirname(output_dest)))
dir.create(dirname(output_dest), recursive = TRUE, mode = "0700")
resource_folder <- knitr_files_dir(output_dest)
perf_timer_reset_all()
dependencies <- list()
shiny_dependency_resolver <- function(deps)
dependencies <<- deps
list()
output_opts <- list(self_contained = FALSE, copy_resources = TRUE,
dependency_resolver = shiny_dependency_resolver)
message("\f")
args <- merge_lists(list(input = reactive_file(), output_file = output_dest,
output_dir = dirname(output_dest), output_options = output_opts,
intermediates_dir = dirname(output_dest), runtime = "shiny"),
render_args)
result_path <- shiny::maskReactiveContext(do.call(render,
args))
if (!dir_exists(resource_folder))
dir.create(resource_folder, recursive = TRUE)
shiny::addResourcePath(basename(resource_folder), resource_folder)
dependencies <- append(dependencies, list(create_performance_dependency(resource_folder)))
write_deps <- base::file(file.path(resource_folder, "shiny.dep"),
open = "wb")
on.exit(close(write_deps), add = TRUE)
serialize(dependencies, write_deps, ascii = FALSE)
if (!isTRUE(out$cacheable))
shiny::onReactiveDomainEnded(shiny::getDefaultReactiveDomain(),
function()
unlink(result_path)
unlink(resource_folder, recursive = TRUE)
)
shinyHTML_with_deps(result_path, dependencies)
)
73: doc
72: shiny::renderUI
71: func
70: output$__reactivedoc__
3: <Anonymous>
2: do.call
1: rmarkdown::run
在 /opt/shiny-server/ext/pandoc/ 我有这些:
-rwxrwxr-x 1 root root 37191008 Feb 3 2014 pandoc
-rwxrwxr-x 1 root root 38520576 Feb 3 2014 pandoc-citeproc
drwxrwxr-x 2 root root 4096 Jan 13 15:15 static
I tried to install "gmp.x86_64", but the results are:
> yum install gmp.x86_64
Loaded plugins: priorities, update-motd, upgrade-helper
amzn-main/latest | 2.1 kB 00:00
amzn-updates/latest | 2.3 kB 00:00
epel/x86_64/metalink | 3.0 kB 00:00
epel/x86_64 | 4.3 kB 00:00 ...
epel/x86_64/updateinfo | 715 kB 00:00
epel/x86_64/primary_db | 5.8 MB 00:01
949 packages excluded due to repository priority protections
Package gmp-6.0.0-11.16.amzn1.x86_64 already installed and latest version
Nothing to do
仍然无法正常工作....也许还有另一个包? 在我的“/usr/lib64/”中,我有 libgmp.so.10.2.0,但我认为我没有 libgmp.so.3。 即使安装了i686版本,还是一样。
【问题讨论】:
【参考方案1】:对于 Fedora 23,我遇到了同样的问题
[root@pjux shiny-server]# ldd -d /opt/shiny-server/ext/pandoc/pandoc
linux-vdso.so.1 (0x00007ffff9eb0000)
libz.so.1 => /lib64/libz.so.1 (0x00007fc20bd55000)
librt.so.1 => /lib64/librt.so.1 (0x00007fc20bb4d000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007fc20b949000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fc20b745000)
libgmp.so.3 => not found
libffi.so.5 => not found
libm.so.6 => /lib64/libm.so.6 (0x00007fc20b442000)
libc.so.6 => /lib64/libc.so.6 (0x00007fc20b081000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fc20ae63000)
/lib64/ld-linux-x86-64.so.2 (0x0000561bb7c14000)
但是
ln -s /lib64/libffi.so.6.0.2 /lib64/libffi.so.5
ln -s /lib64/libgmp.so.10.2.0 /lib64/libgmp.so.3
解决了
【讨论】:
太好了,谢谢。我对ldd
不是很熟悉,我就这样运行那个命令吗?
就我而言,由于我已经安装了compat-libffi.x86_64 3.0.10-7-fc23
,我只需要第二个ln -s
。【参考方案2】:
我在github issues page of shiny-server 的帮助下解决了这个问题 sjpascual 怎么说,只需安装软件包:compat-gmp4 和 compat-libffi5 即可修复它。
现在工作正常。
【讨论】:
对fedora有什么建议吗?我设法安装了compat-libffi.x86_64 3.0.10-7.fc23
,但没有安装compat-gmp4
。
很遗憾没有……也许在 Github 上也有人帮助你。打开一个问题并将您的日志放在那里。
@bquast,paul-j 有一个针对 Fedora 的解决方案。我希望这对你有用。【参考方案3】:
这是一篇旧帖子,但以防有人遇到类似问题。您可以尝试以 root 身份从控制台安装 RMarkdown 包,而不是在 RStudio 中,以使该包可用于 Shiny 服务器:
sudo su - -c "R -e \"install.packages('rmarkdown', repos='http://cran.rstudio.com/')\""
这帮助我在测试页面中加载了 RMarkdown 示例应用程序...
【讨论】:
这对我在Ubuntu 18.04.2 LTS
上运行 R version 3.4.4
在配置闪亮服务器时有效。【参考方案4】:
对于 CentOS 7,安装 gmp-devel
和 libffi-devel
并重新启动 Shiny Server 解决了该问题。
【讨论】:
以上是关于即使在示例页面中,Shiny-server 也不显示 rmarkdown(已安装 rmarkdown 包)的主要内容,如果未能解决你的问题,请参考以下文章
为啥电脑好多应用程序(firefox、delphi)背景全都跟窗口背景一样了,个别字体变大,关闭窗口的x也不显
在 Shiny-Server 中发布后如何在 Rmarkdown 中启用表情符号