pandoc - पंडोक संस्करण 1.12.3 या उच्चतर की आवश्यकता है और पाया नहीं गया था(आर चमकदार)




r-markdown shiny-server (5)

RStudio का उपयोग नहीं करने वालों के लिए, आपको बस अपने सिस्टम पर pandoc स्थापित करने की आवश्यकता हो सकती है। मेरे लिए यह था

sudo pacman -S pandoc

और यह काम किया (आर्क लिनक्स)।

मुझे अपने ऐप चमकदार से एक पीडीएफ रिपोर्ट बनाने में समस्या है जो एक सर्वर पर होस्ट की जाती है।

ऐप ठीक काम करता है लेकिन जब मैं रिपोर्ट डाउनलोड करने के लिए बटन दबाता हूं, मुझे यह त्रुटि मिलती है:

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

समस्या यह है कि अगर मैं pandoc -v टाइप pandoc -v हूं तो मुझे यह मिलता है:

 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.

इसलिए मुझे लगता है कि मेरे पास इसके लिए सही संस्करण है। TexLive भी स्थापित है और पथ $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 * में किसी भी प्रकार की गणना शामिल नहीं है, यह केवल पाठ है। पीडीएफ पीढ़ी मेरे स्थानीय संस्करण (MacOS) पर ठीक काम करती है, लेकिन सर्वर पर नहीं।

अग्रिम धन्यवाद, और यदि आवश्यक हो तो अन्य जानकारी देने के लिए मैं यहां हूं।

डेनियल


RStudio में जाएं और RSTUDIO_PANDOC के लिए सिस्टम वातावरण चर RSTUDIO_PANDOC

Sys.getenv("RSTUDIO_PANDOC")

फिर रेंडर कमांड को कॉल करने से पहले अपनी आर स्क्रिप्ट में रखें।

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

यह मेरे लिए काम करने के बाद मुझे पता लगाने के लिए संघर्ष कर रहा था कि रैंडम कैसे पैंडॉक पाता है। मुझे स्रोत को देखने के लिए गीथब की जांच करनी थी।


अरे मैंने इस त्रुटि को हरा दिया है। मैंने इसे 2 पंडोक फ़ाइलों को हटाकर, "पंडोक" और "पंडोक-सिटप्रो" को चमकदार-सर्वर फ़ोल्डर से हटा दिया। मैंने तब rstudio- सर्वर फ़ोल्डर से इन फ़ाइलों में से प्रत्येक के लिए एक लिंक बनाया। इसने एक जादू की तरह काम किया। यह मेरे लिए एक मुद्दा था जब मैं एक लिनक्स मशीन पर एक चमकदार-सर्वर चलाने से रेकॉर्डडाउन दस्तावेजों में लीफलेट एम्बेड करने की कोशिश कर रहा था। मुझे यह अजीब लगा कि जब मैंने इसे उसी लाइनक्स मशीन पर rstudio में चलाया तो यह ठीक काम किया, लेकिन तब नहीं जब मैंने इसे चमकदार-सर्वर का उपयोग करके चलाया। तो पंडोक का चमकदार-सर्वर स्थापित पुराना / पुराना है। चियर्स


इस मुद्दे को हल करने का सबसे आसान तरीका आरएमकेडाउन कॉल करने से पहले crontab कमांड के अंदर Sys.setenv (..) कमांड पास करना है :: रेंडर। आपको अर्धविराम वाले दो आदेशों को अलग करना होगा:

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

(याद रखें कि rstudio- सर्वर पथ गैर-सर्वर संस्करण से भिन्न होता है)


यदि आप विंडोज पर कमांड लाइन से स्क्रिप्ट चलाने की कोशिश कर रहे हैं, तो आपको पैठ चर * में निर्देशिका पथ की आवश्यकता है। आप RSTUDIO_PANDOC नाम से एक अलग उपयोगकर्ता चर भी बना सकते हैं और इस चर को निर्देशिका * दे सकते हैं। फिर सिस्टम पथ को ताज़ा करने के लिए किसी भी टर्मिनल को बंद करें और फिर से खोलें। **

* एक अनुगामी के साथ प्रयोग करें / यदि आप समस्या कर रहे हैं। ** मैं एक UNC पथ को इंगित करने में असमर्थ था। पथ की शुरुआत में // rmarkdown पैकेज पंडोक फ़ंक्शंस को hosed किया। यदि आप एक यूएनसी पथ का उपयोग कर रहे हैं, तो आपको इसे एक ड्राइव पर मैप करना होगा और ड्राइव अक्षर को संदर्भित करना होगा। इसे गतिशील रूप से करने के तरीके हैं। मैं एक डॉस / बैच स्क्रिप्ट का उपयोग करता हूं जो मुझे Google के माध्यम से मिली।