Skip to content

- Git deploy: - Shiny server

Hoe R / Shiny Package-installatie op de Server Werkt

Overzicht

Wanneer je een Shiny‑applicatie deployt met een workflow zoals:

git push → server build

is het de server, en niet RStudio, die verantwoordelijk is voor het installeren en compileren van benodigde R‑packages.

RStudio pusht alleen de broncode van je applicatie (R‑scripts, configuratiebestanden, enz.).

De server installeert daarna ontbrekende packages en compileert ze indien nodig.


Wat er tijdens deployment gebeurt

Typische workflow:

Mac / ontwikkelmachine
        │
        │ git push
        ▼
Server
        │
        │ install.packages()
        ▼
Compileer R‑packages indien nodig

De server heeft daarom een build‑omgeving nodig.


Twee soorten R‑packages

1. Pure R‑packages

Deze bevatten alleen R‑code.

Voorbeelden:

  • dplyr
  • shiny
  • ggplot2

Deze packages hoeven niet gecompileerd te worden. Installatie betekent simpelweg bestanden kopiëren.


2. Packages met gecompileerde code

Sommige packages bevatten C-, C++- of Fortran‑code.\ Deze moeten worden gecompileerd op de machine waar ze geïnstalleerd worden.

Voorbeelden:

  • RPostgres
  • curl
  • xml2
  • sf

Tijdens installatie wordt de broncode gecompileerd naar een shared library:

package.tar.gz → compile → package.so

Voorbeeldlocatie:

/usr/lib/R/library/pkg/libs/pkg.so

Waarom compileerfouten ontstaan

Als benodigde systeem‑headers ontbreken, mislukt de compilatie.

Typisch foutbericht:

fatal error: libpq-fe.h: No such file or directory

Dit betekent dat een development library ontbreekt.

Bijvoorbeeld:

Ontbrekende header Benodigd Debian package


libpq-fe.h libpq-dev openssl/ssl.h libssl-dev curl/curl.h libcurl4-openssl-dev zlib.h zlib1g-dev

Deze packages bevatten de C‑headers en libraries die nodig zijn om te compileren.


Waarom de server development libraries nodig heeft

Omdat CRAN meestal source packages distribueert in plaats van gecompileerde binaries.

Installatie doet dus:

download source → compile lokaal → install

Daarom moet de server beschikken over:

gcc
g++
gfortran
system headers
system libraries

Aanbevolen basis build‑omgeving voor een Shiny server

Het installeren van een basisset dependencies voorkomt de meeste deploy‑problemen.

Voorbeeld (Debian / Ubuntu):

sudo apt update
sudo apt install -y   build-essential   gfortran   pkg-config   libcurl4-openssl-dev   libssl-dev   libxml2-dev   libgit2-dev   libssh2-1-dev   libpq-dev   zlib1g-dev   libbz2-dev   liblzma-dev   libicu-dev   libcairo2-dev   libxt-dev

Dit dekt de meeste R‑package dependencies die je in Shiny apps tegenkomt.


Optionele GIS / spatial dependencies

Alleen nodig als je app geografische packages gebruikt zoals:

  • sf
  • terra
  • leaflet
  • rgdal

Installatie:

sudo apt install -y   libgdal-dev   libgeos-dev   libproj-dev   libudunits2-dev

Deze libraries ondersteunen verwerking van geografische data.


Waarom vooraf dependencies installeren helpt

In een workflow waarin:

  • ontwikkelaars code pushen
  • de server automatisch bouwt
  • deploy‑gebruikers geen sudo‑rechten hebben

is het vaak beter om vooraf een complete build‑toolchain te installeren.

Voordelen:

  • minder deployment‑fouten
  • eenvoudigere deploy‑hooks
  • geen privileged operaties tijdens git push

Samenvatting

RStudio pusht geen packages.

In plaats daarvan:

  1. Ontwikkelaars pushen de broncode van de applicatie.
  2. De server installeert benodigde R‑packages.
  3. Sommige packages worden lokaal gecompileerd.
  4. Ontbrekende system libraries veroorzaken compileerfouten.
  5. Het vooraf installeren van development packages voorkomt de meeste problemen.