Shiny-server 即使在示例页面中也不显示 rmarkdown(已安装 rmarkdown 包)

Shiny-server does not show rmarkdown even in the example page (rmarkdown package installed)

我在 Amazon AWS EC-2(Amazon Linux AMI 2015.09.1 (HVM),SSD 卷类型 - ami-60b6c60a)上安装了一个 shiny-server。服务器适用于 Shiny 应用程序,但不呈现 .rmd,甚至不呈现示例页面中的 rmd。

我只看到这个错误:

Error: error in running command

在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版本,还是一样。

我在 github issues page of shiny-server 的帮助下解决了这个问题 sjpascual 如何说,只需安装软件包:compat-gmp4compat-libffi5 来修复它。

现在工作正常。

对于 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

解决了

这是一个旧的 post 但以防万一有人遇到类似的问题。您可以尝试以 root 身份而不是在 RStudio 中从控制台安装 RMarkdown 包,以使该包可用于 Shiny 服务器:

sudo su - -c "R -e \"install.packages('rmarkdown', repos='http://cran.rstudio.com/')\""

这帮助我加载了测试页面中的 RMarkdown 示例应用程序...

对于 CentOS 7,安装 gmp-devellibffi-devel 并重新启动 Shiny Server 解决了问题。