- 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:
- Ontwikkelaars pushen de broncode van de applicatie.
- De server installeert benodigde R‑packages.
- Sommige packages worden lokaal gecompileerd.
- Ontbrekende system libraries veroorzaken compileerfouten.
- Het vooraf installeren van development packages voorkomt de meeste problemen.