quarto
Web page https://quarto.org/ (Guide)
It is an open-source scientific and technical publishing system; the Linux version is able to run a script in TypeScript, R, Python, or Lua.
Installation
1.4.549
This fixed the problem on GLIBC_2.18 as in 1.3.450.
wget -qO- https://github.com/quarto-dev/quarto-cli/releases/download/v1.4.549/quarto-1.4.549-linux-rhel7-amd64.tar.gz | \
tar xvfz -
giving quarto-1.4.549/ with bin/quarto
, among others.
1.3.450
It requires CentOS 8 (icelake, or login-q-*); otherwise it fails with message: GLIBC_2.18
not found.
To enter icelake, simply issue ssh login-q-1
, say. Now, we obtain the package as usual,
wget -qO- https://github.com/quarto-dev/quarto-cli/releases/download/v1.3.450/quarto-1.3.450-linux-amd64.tar.gz | \
tar xvfz -
For R, we take advantage of the module,
module load R/4.3.1-icelake
but saw this error message,
$ R
> dyn.load("/usr/local/Cluster-Apps/R/4.3.1-icelake/lib64/R/modules//R_X11.so")
Error in dyn.load("/usr/local/Cluster-Apps/R/4.3.1-icelake/lib64/R/modules//R_X11.so") :
unable to load shared object '/usr/local/Cluster-Apps/R/4.3.1-icelake/lib64/R/modules//R_X11.so':
/rds/user/jhz22/hpc-work/lib/libgnutls.so.30: undefined symbol: mpn_copyi, version HOGWEED_6
> dyn.load("/usr/local/Cluster-Apps/R/4.3.1-icelake/lib64/R/library/grDevices/libs//cairo.so")
Error in dyn.load("/usr/local/Cluster-Apps/R/4.3.1-icelake/lib64/R/library/grDevices/libs//cairo.so") :
unable to load shared object '/usr/local/Cluster-Apps/R/4.3.1-icelake/lib64/R/library/grDevices/libs//cairo.so':
/rds/user/jhz22/hpc-work/lib/libgnutls.so.30: undefined symbol: mpn_copyi, version HOGWEED_6
>
It turns out gnutls
relies on nettle
and in turn on libhogweed
; the /usr/lib64/hogweed.so.2
conflicts with libhogweed.so.6
.
nettle
Web: https://ftp.gnu.org/gnu/nettle
Our script is slightly more involved as follows,
./configure --prefix=$HPC_WORK LDFLAGS=-L$HPC_WORK/lib64 LIBS=-lhogweed --disable-openssl \
--with-lib-path=/usr/local/Cluster-Apps/ceuadmin/gmp/6.2.1/lib \
--with-include-path=/usr/local/Cluster-Apps/ceuadmin/gmp/6.2.1/include
make
make install
gnutls
The syntax for configuration is as follows,
./configure --prefix=$HPC_WORK --with-included-unistring --with-nettle-mini --enable-ssl3-support \
CFLAGS=-I$HPC_WORK/include LDFLAGS=-L$HPC_WORK/lib LIBS=-lhogweed LIBS=-lunbound LIBS=-ltspi \
--enable-sha1-support --disable-guile
make
make install
It is necessary to edit lib/pkcs11_privkey.c
to make ck_rsa_pkcs_pss_params
definition explicit. Then there is error with guile so we use –disable-guile.
jupyter
Web: https://jupyter.org/
module load python/3.8.11/gcc/pqdmnzmw
python3 -m pip install jupyter --target=${PWD}/python
export PYTHONPATH=${PWD}/python:$PYTHONPATH
R
To enable rmarkdown
, we need to get around issue of no Internet on icelake with the following before entering login-q-1
,
packages <- c("base64enc","bslib","cachem","cli","digest",
"ellipsis","evaluate","fastmap","fontawesome","fs",
"glue","htmltools","jquerylib","jsonlite","knitr",
"lifecycle","memoise","mime","R6","rappdirs",
"rlang","rmarkdown","sass","stringi","stringr",
"tinytex","vctrs","xfun","yaml")
download.packages(packages,".")
install.packages(dir(pattern="tar.gz"),lib="R",repos=NULL)
somewhat repetitive nonetheless successful since some are package dependencies.
Add ${PWD} to R_LIBS
. Furthermore, to allow for generality, python and R directories are symbollically linked.
ceuadmin/quarto
The cumbersome steps above have been wrapped in the named module.
module load ceuadmin/quarto
Loading ceuadmin/quarto/1.3.450-icelake
Loading requirement: libmd/1.0.3/gcc/pwhyd3ij libbsd/0.11.3/gcc/tpfgc3ec expat/2.4.1/gcc/qkcdojqk ncurses/6.2/gcc/givuz2aq
readline/8.1/gcc/bumlt4j6 gdbm/1.21/gcc/owivzl33 libiconv/1.16/gcc/4miyzf3w libxml2/2.9.12/gcc/eizlvpgn gettext/0.21/gcc/qnrcglqo
libffi/3.3/gcc/6f53tcd4 sqlite/3.36.0/gcc/nvjhfk62 tcl/8.6.11/gcc/n7xje3xl inputproto/2.3.2/gcc/f3ah2nfx kbproto/1.0.7/gcc/vmr33qom
libpthread-stubs/0.4/gcc/hk2rtxtr xproto/7.0.31/gcc/d6patqa5 libxau/1.0.8/gcc/svcqvn56 libxdmcp/1.1.2/gcc/bpi3jojs
xcb-proto/1.14.1/gcc/xanx7ixn libxcb/1.14/gcc/ebmzubym xextproto/7.3.0/gcc/aahfrcpd xtrans/1.3.5/gcc/snbqxol5 libx11/1.7.0/gcc/oovez2cu
font-util/1.3.2/gcc/im7lvzz3 libpng/1.6.37/gcc/bkdpz5q4 freetype/2.11.0/gcc/jdz5khbp util-linux-uuid/2.36.2/gcc/wjrz5f3u
fontconfig/2.13.93/gcc/7fyscyaq renderproto/0.11.1/gcc/2akuvanz libxrender/0.9.10/gcc/5e3iug2k libxft/2.3.2/gcc/ucporpzv
libxext/1.3.3/gcc/eq7cyrku scrnsaverproto/1.2.2/gcc/sbkbtjzo libxscrnsaver/1.2.2/gcc/6hjlwbjv tk/8.6.11/gcc/i5j46nlm
python/3.8.11/gcc/pqdmnzmw R/4.3.1-icelake
quarto check
[✓] Checking versions of quarto binary dependencies...
Pandoc version 3.1.1: OK
Dart Sass version 1.55.0: OK
[✓] Checking versions of quarto dependencies......OK
[✓] Checking Quarto installation......OK
Version: 1.3.450
Path: /usr/local/Cluster-Apps/ceuadmin/quarto/1.3.450-icelake/bin
[✓] Checking basic markdown render....OK
[✓] Checking Python 3 installation....OK
Version: 3.8.11
Path: /usr/local/software/spack/spack-views/rhel8-icelake-20211027_2/python-3.8.11/gcc-11.2.0/pqdmnzmwkrtp4e3gjibmcxho7g6ekpat/bin/python3
Jupyter: 5.3.1
Kernels: python3
[✓] Checking Jupyter engine render....OK
[✓] Checking R installation...........OK
Version: 4.3.1
Path: /usr/local/Cluster-Apps/R/4.3.1-icelake/lib64/R
LibPaths:
- /usr/local/Cluster-Apps/ceuadmin/quarto/R
- /usr/local/Cluster-Apps/R/4.3.1-icelake/lib64/R/library
- /rds/project/jmmh2/rds-jmmh2-public_databases/software/R
- /rds/project/jmmh2/rds-jmmh2-public_databases/software/R-4.3.1/library
knitr: 1.43
rmarkdown: 2.23
[✓] Checking Knitr engine render......OK
texlive
This is necessary for rendering PDF, which is enabled as usual,
module load texlive/2015
Usage
module load ceuadmin/quarto
quarto --help
Usage: quarto
Version: 1.3.450
Description:
Quarto CLI
Options:
-h, --help - Show this help.
-V, --version - Show the version number for this program.
Commands:
render [input] [args...] - Render files or projects to various document types.
preview [file] [args...] - Render and preview a document or website project.
serve [input] - Serve a Shiny interactive document.
create [type] [commands...] - Create a Quarto project or extension
create-project [dir] - Create a project for rendering multiple documents
convert <input> - Convert documents to alternate representations.
pandoc [args...] - Run the version of Pandoc embedded within Quarto.
run [script] [args...] - Run a TypeScript, R, Python, or Lua script.
add <extension> - Add an extension to this folder or project
install [target...] - Installs an extension or global dependency.
publish [provider] [path] - Publish a document or project. Available providers include:
check [target] - Verify correct functioning of Quarto installation.
help [command] - Show this help or the help of a sub-command.
We can prooceed with a test.qmd
with
quarto render test.qmd
to obtain test.html
. It is also possible to obtain other formats, e.g., quarto render test.qmd --to docx
.
We can also invoke RStutio
, which embeds quarto
, e.g., module load ceuadmin/rstudio; rstudio
and render the document there.