Я размещаю блестящее приложение («альфа») на удаленной платформе Ubuntu 16.04 LTS. При загрузке каталога Shiny App, который полностью работает при локальном запуске, функция генерирования .pdf не работает. В частности, браузер возвращает следующее сообщение об ошибке:
Firefox не может найти файл в http://IP/alpha/session/88c0e307e045e4b519908a73b85476f4/download/report?w=.
Сначала я подозревал, что это проблема с правами пользователя, и подарил «блестящему» пользователю (который запускает приложение по умолчанию в Ubuntu) доступ на чтение-запись-exec к папке / tmp /, учитывая, что для создания .pdf используется временная папка для генерации отчета.
sudo setfacl -m 'u:shiny:rwx' /tmp/
К сожалению, проблема остается. Ниже приведены мои версии пакета:
knitr "knitr" "/usr/local/lib/R/site-library" "1.20"
rmarkdown "rmarkdown" "/usr/local/lib/R/site-library" "1.10"
shiny "shiny" "/usr/local/lib/R/site-library" "1.1.0"
tinytex "tinytex" "/usr/local/lib/R/site-library" "0.8"
/opt/shiny-server/ext/pandoc/pandoc --version pandoc 1.19.2.1
Пакет Pandoc был скомпилирован после установки Shiny Server, а пакет TinyTex был установлен следующим образом: https://yihui.name/tinytex/.
Вот журнал ошибок, созданный Shiny Server:
Listening on http://127.0.0.1:43458
165: ispresent
164: scatter3D
163: renderPlot [/srv/shiny-server/alpha/server.R#254]
161: func
121: drawPlot
107: <reactive:plotObj>
91: drawReactive
78: origRenderFunc
77: output$dist
1: runApp
processing file: report.Rmd
output file: report.knit.md
sh: 1: pdflatex: not found
Warning: Error in : Failed to compile /tmp/Rtmp25Y4aU/file5bf19f9dd9f.tex. [No stack trace available]
Я прилагаю downloadHandler ниже. Как указано выше, он полностью функционирует локально.
output$report = downloadHandler(
filename = 'xxx.pdf',
content = function(file) {
tempReport <- file.path(tempdir(), "report.Rmd")
file.copy("report.Rmd", tempReport, overwrite = TRUE)
# Set up parameters to pass to Rmd document
params <- list(mat = allocation_values$rendered[allocation_values$rendered$Allocation > 0])
rmarkdown::render(tempReport, output_file = file,
params = params,
envir = new.env(parent = globalenv()))
})
РЕДАКТИРОВАТЬ: Добавлен вывод> tinytex :: tlmgr_conf ()
=========================== version information ==========================
tlmgr revision 48522 (2018-08-31 06:03:37 +0200)
tlmgr using installation: /root/.TinyTeX
TeX Live (http://tug.org/texlive) version 2018
==================== executables found by searching PATH =================
PATH: /root/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
dvipdfmx: /root/bin/dvipdfmx
dvips: 0
fmtutil: /root/bin/fmtutil
kpsewhich: /root/bin/kpsewhich
luatex: /root/bin/luatex
mktexpk: /root/bin/mktexpk
pdftex: /root/bin/pdftex
tex: 0
tlmgr: /root/bin/tlmgr
updmap: /root/bin/updmap
xetex: /root/bin/xetex
=========================== active config files ==========================
Missing argument in sprintf at /root/bin/tlmgr line 6159.
config.ps: fmtutil.cnf: /root/.TinyTeX/texmf-dist/web2c/fmtutil.cnf
mktex.cnf: /root/.TinyTeX/texmf-dist/web2c/mktex.cnf
pdftexconfig.tex: /root/.TinyTeX/texmf-dist/tex/generic/tex-ini-files/pdftexconfig.tex
texmf.cnf: /root/.TinyTeX/texmf.cnf
texmf.cnf: /root/.TinyTeX/texmf-dist/web2c/texmf.cnf
updmap.cfg: /root/.TinyTeX/texmf-dist/web2c/updmap.cfg
============================= font map files =============================
kanjix.map: /root/.TinyTeX/texmf-var/fonts/map/dvipdfmx/updmap/kanjix.map
pdftex.map: /root/.TinyTeX/texmf-var/fonts/map/pdftex/updmap/pdftex.map
ps2pk.map: /root/.TinyTeX/texmf-var/fonts/map/dvips/updmap/ps2pk.map
psfonts.map: /root/.TinyTeX/texmf-var/fonts/map/dvips/updmap/psfonts.map
=========================== kpathsea variables ===========================
ENCFONTS=.:{/usr/share/R/share/texmf,/root/.TinyTeX/texmf-config,/root/.TinyTeX/texmf-var,/root/.TinyTeX/texmf-home,!!/root/texmf-local,!!/root/.TinyTeX/texmf-config,!!/root/.TinyTeX/texmf-var,!!/root/.TinyTeX/texmf-dist}/fonts/enc//
SYSTEXMF=/root/.TinyTeX/texmf-var:/root/texmf-local:/root/.TinyTeX/texmf-dist
TEXCONFIG={/usr/share/R/share/texmf,/root/.TinyTeX/texmf-config,/root/.TinyTeX/texmf-var,/root/.TinyTeX/texmf-home,!!/root/texmf-local,!!/root/.TinyTeX/texmf-config,!!/root/.TinyTeX/texmf-var,!!/root/.TinyTeX/texmf-dist}/dvips//
TEXFONTMAPS=.:{/usr/share/R/share/texmf,/root/.TinyTeX/texmf-config,/root/.TinyTeX/texmf-var,/root/.TinyTeX/texmf-home,!!/root/texmf-local,!!/root/.TinyTeX/texmf-config,!!/root/.TinyTeX/texmf-var,!!/root/.TinyTeX/texmf-dist}/fonts/map/{kpsewhich,pdftex,dvips,}//
TEXMF={/usr/share/R/share/texmf,/root/.TinyTeX/texmf-config,/root/.TinyTeX/texmf-var,/root/.TinyTeX/texmf-home,!!/root/texmf-local,!!/root/.TinyTeX/texmf-config,!!/root/.TinyTeX/texmf-var,!!/root/.TinyTeX/texmf-dist}
TEXMFCONFIG=/root/.TinyTeX/texmf-config
TEXMFDBS={!!/root/texmf-local,!!/root/.TinyTeX/texmf-config,!!/root/.TinyTeX/texmf-var,!!/root/.TinyTeX/texmf-dist}
TEXMFDIST=/root/.TinyTeX/texmf-dist
TEXMFHOME=/root/.TinyTeX/texmf-home
TEXMFLOCAL=/root/texmf-local
TEXMFMAIN=/root/.TinyTeX/texmf-dist
TEXMFSYSCONFIG=/root/.TinyTeX/texmf-config
TEXMFSYSVAR=/root/.TinyTeX/texmf-var
TEXMFVAR=/root/.TinyTeX/texmf-var
TEXPSHEADERS=.:{/usr/share/R/share/texmf,/root/.TinyTeX/texmf-config,/root/.TinyTeX/texmf-var,/root/.TinyTeX/texmf-home,!!/root/texmf-local,!!/root/.TinyTeX/texmf-config,!!/root/.TinyTeX/texmf-var,!!/root/.TinyTeX/texmf-dist}/{dvips,fonts/{enc,type1,type42,type3}}//
VARTEXFONTS=/root/.TinyTeX/texmf-var/fonts
WEB2C={/usr/share/R/share/texmf,/root/.TinyTeX/texmf-config,/root/.TinyTeX/texmf-var,/root/.TinyTeX/texmf-home,!!/root/texmf-local,!!/root/.TinyTeX/texmf-config,!!/root/.TinyTeX/texmf-var,!!/root/.TinyTeX/texmf-dist}/web2c
==== kpathsea variables from environment only (ok if no output here) ====