web-dev-qa-db-fra.com

pandoc version 1.12.3 ou supérieure est requise et n'a pas été trouvée (R brillant)

J'ai un problème pour générer un rapport pdf à partir de mon application brillante qui est hébergée sur un serveur. 

l'application fonctionne bien, mais lorsque j'appuie sur le bouton pour télécharger le rapport, le message d'erreur suivant s'affiche:

 pandoc version 1.12.3 or higher is required and was not found.

Le problème est que si je tape pandoc -v je reçois:

 pandoc 1.12.3.3
 Compiled with texmath 0.6.6, highlighting-kate 0.5.6.1.
Syntax highlighting is supported for the following languages:
    actionscript, ada, Apache, asn1, asp, awk, bash, bibtex, boo, c, changelog,
    clojure, cmake, coffee, coldfusion, commonlisp, cpp, cs, css, curry, d,
    diff, djangotemplate, doxygen, doxygenlua, dtd, eiffel, email, erlang,
    fortran, fsharp, gnuassembler, go, haskell, haxe, html, ini, Java, javadoc,
    javascript, json, jsp, Julia, latex, Lex, literatecurry, literatehaskell,
    lua, makefile, mandoc, markdown, matlab, maxima, metafont, mips, modelines,
    modula2, modula3, monobasic, nasm, noweb, objectivec, objectivecpp, ocaml,
    octave, Pascal, Perl, php, pike, postscript, prolog, python, r,
    relaxngcompact, restructuredtext, rhtml, roff, Ruby, Rust, scala, scheme,
    sci, sed, sgml, sql, sqlmysql, sqlpostgresql, tcl, texinfo, verilog, vhdl,
    xml, xorg, xslt, xul, yacc, yaml
 Default user data directory: /home/daniele/.pandoc
 Copyright (C) 2006-2013 John MacFarlane
 Web:  http://johnmacfarlane.net/pandoc
 This is free software; see the source for copying conditions.  There is no
 warranty, not even for merchantability or fitness for a particular purpose.

Donc, je suppose que j'ai la bonne version pour cela. TexLive est également installé et le chemin est dans $PATH.

Server.R

library(shiny)
library(drsmooth)
library(shinyBS)
library(knitr)
library(xtable)
library(rmarkdown)

shinyServer(function(input, output,session) { 

 output$downloadReport <- downloadHandler(
filename = function() {
  paste('report', sep = '.','pdf')
},

content = function(file) {
  src <- normalizePath('report.Rmd')

  # temporarily switch to the temp dir, in case you do not have write
  # permission to the current working directory
  owd <- setwd(tempdir())
  on.exit(setwd(owd))
  file.copy(src, 'report.Rmd')

  library(rmarkdown)
  out <- render('report.Rmd')
  file.rename(out, file)
})

output$tb <- renderUI({
             p(h4("Report")),
            "Dowload a the report of your analysis in a pdf format",
            tags$br(),downloadButton('downloadReport',label="Download report"),
            tags$em("This option will be available soon")
     })
})

* report.Rmd * ne contient aucun type de calcul, il ne s'agit que de texte . La génération pdf fonctionne correctement sur ma version locale (MacOS), mais pas sur le serveur.

Merci d'avance, et je suis ici pour donner d'autres informations si nécessaire.

Daniele

41
Daniele Avancini

Allez dans RStudio et trouvez la variable d’environnement système pour RSTUDIO_PANDOC

Sys.getenv("RSTUDIO_PANDOC")

Mettez ensuite cela dans votre script R avant d'appeler la commande de rendu.

Sys.setenv(RSTUDIO_PANDOC="--- insert directory here ---")

Cela a fonctionné pour moi après avoir eu du mal à trouver comment rmarkdown trouve pandoc. Je devais vérifier github pour regarder la source.

74
Chris

Une autre option pour que cela fonctionne pour tous vos scripts R consiste à définir cette variable globalement.

Sur Debian/Ubuntu, ajoutez la ligne suivante à votre fichier .bashrc:

export RSTUDIO_PANDOC=/usr/lib/rstudio/bin/pandoc

Sur macOS, ajoutez ce qui suit à votre fichier .bash_profile:

export RSTUDIO_PANDOC=/Applications/RStudio.app/Contents/MacOS/pandoc

Sous Windows (à l’aide de Git Bash ), ajoutez ce qui suit dans votre fichier .bashrc:

export RSTUDIO_PANDOC="/c/Program Files/RStudio/bin/pandoc/"
10
John Blischak

Le moyen le plus simple de résoudre ce problème consiste à passer la commande Sys.setenv (..) dans la commande crontab avant d'appeler RMarkdown :: render. Vous devez séparer les deux commandes par un point-virgule:

R -e "Sys.setenv(RSTUDIO_PANDOC='/usr/lib/rstudio-server/bin/pandoc'); rmarkdown::render('File.Rmd', output_file='output.html')"

(Rappelez-vous que le chemin du serveur rstudio est différent de la version non-serveur)

2
Thomas Goerner

Hey je viens de battre cette erreur. J'ai résolu ce problème en supprimant les deux fichiers pandoc "pandoc" et "pandoc-citeproc" du dossier shiny-server. J'ai ensuite créé un lien pour chacun de ces fichiers à partir du dossier rstudio-server. Ça a marché comme sur des roulettes. C'était un problème pour moi lorsque j'essayais d'incorporer un dépliant dans les documents rmarkdown à partir de l'exécution d'un serveur brillant sur une machine Linux. J'ai trouvé étrange que lorsque je l'ai lancé dans rstudio sur la même machine Linux, cela fonctionne bien, mais pas quand je l'ai utilisé avec un serveur brillant. Ainsi, l’installation de pandoc sur un serveur brillant est ancienne/obsolète .

1
DTakacs

Si vous essayez d'exécuter un script à partir de la ligne de commande sous Windows, il vous suffit d'indiquer le chemin du répertoire dans la variable PATH *. Vous pouvez également créer une variable utilisateur distincte nommée RSTUDIO_PANDOC et lui attribuer le répertoire *. Fermez et rouvrez les terminaux pour actualiser les chemins du système. **

* Expérience avec un trailing/si vous rencontrez des problèmes . ** Je ne pouvais pas indiquer un chemin UNC. Le // au début du chemin insère les fonctions pandoc du paquetage rmarkdown. Si vous utilisez un chemin UNC, vous devez le mapper sur un lecteur et faire référence à la lettre du lecteur. Il y a moyen de le faire de manière dynamique. J'utilise un script DOS/batch que j'ai trouvé via Google.

0
DonkeyKong

Pour ceux qui n'utilisent pas RStudio, vous devrez peut-être simplement installer pandoc sur votre système. Pour moi c'était

Sudo pacman -S pandoc

et cela a fonctionné (Arch Linux). 

0
haff

Si quelqu'un a ce problème et utilise également l'anaconda, il est possible qu'ils aient mon problème. Le shell rstudio ne charge pas le fichier .bashrc au démarrage. Cela signifie que si votre version de pandoc est installée dans anaconda, Rstudio ne le trouvera pas. Installer pandoc séparément avec une commande comme Sudo pacman -S pandoc a fonctionné pour moi!

0
Rowan Callahan