计划执行与检查节点
executing-plans
按既定实施计划完成工作,保持过程检查和反馈。
manage-renv-dependencies【效率与协作】R-Paketabhaengigkeiten mit renv fuer reproduzierbare Umgebungen verwalten. Behandelt Initialisierung, Snapshot/Restore-Workflow, Fehlersuche bei haeufigen Problemen und CI/CD-Integration. Anwenden bei der Initialisierung der Abhaengigkeitsverwaltung fuer ein neues R-Projekt, beim Hinzufuegen oder Aktualisieren von Paketen, beim Wiederherstellen einer…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Reproduzierbare R-Paketumgebungen mit renv einrichten und pflegen.
renv.lock-Datei (fuer Wiederherstellung)renv::init()
Dies erstellt:
renv/-Verzeichnis (Bibliothek, Einstellungen, Aktivierungsskript)renv.lock (Abhaengigkeits-Snapshot).Rprofile um renv beim Laden zu aktivierenErwartet: Projektlokale Bibliothek erstellt. renv/-Verzeichnis und renv.lock vorhanden. .Rprofile mit Aktivierungsskript aktualisiert.
Bei Fehler: Wenn es haengt, die Netzwerkverbindung pruefen. Wenn es bei einem bestimmten Paket fehlschlaegt, dieses Paket zuerst manuell mit install.packages() installieren und dann renv::init() erneut ausfuehren.
Pakete wie gewohnt installieren:
install.packages("dplyr")
renv::install("github-user/private-pkg")
Dann einen Snapshot erstellen um den Zustand festzuhalten:
renv::snapshot()
Erwartet: renv.lock mit neuen Paketen und deren Versionen aktualisiert. renv::status() zeigt keine nicht-synchronisierten Pakete.
Bei Fehler: Wenn renv::snapshot() Validierungsfehler meldet, renv::dependencies() ausfuehren um zu pruefen welche Pakete tatsaechlich verwendet werden, dann renv::snapshot(force = TRUE) um die Validierung zu umgehen.
renv::restore()
Erwartet: Alle Pakete in den exakten Versionen aus renv.lock installiert.
Bei Fehler: Haeufige Probleme: GitHub-Pakete schlagen fehl (GITHUB_PAT in .Renviron setzen), Systemabhaengigkeiten fehlen (unter Linux mit apt-get installieren), Timeouts bei grossen Paketen (options(timeout = 600) vor der Wiederherstellung setzen) oder Binaerpakete nicht verfuegbar (renv kompiliert aus Quellcode; sicherstellen dass Build-Werkzeuge installiert sind).
# Update a specific package
renv::update("dplyr")
# Update all packages
renv::update()
# Snapshot after updates
renv::snapshot()
Erwartet: Zielpakete auf ihre neuesten kompatiblen Versionen aktualisiert. renv.lock spiegelt nach dem Snapshot die neuen Versionen wider.
Bei Fehler: Wenn renv::update() fuer ein bestimmtes Paket fehlschlaegt, es direkt mit renv::install("package@version") installieren und dann einen Snapshot erstellen.
renv::status()
Erwartet: "No issues found" oder eine klare Liste nicht-synchronisierter Pakete mit umsetzbaren Hinweisen.
Bei Fehler: Wenn der Status Pakete meldet die verwendet aber nicht erfasst sind, renv::snapshot() ausfuehren. Wenn Pakete erfasst aber nicht installiert sind, renv::restore() ausfuehren.
.Rprofile fuer bedingte Aktivierung konfigurierenif (file.exists("renv/activate.R")) {
source("renv/activate.R")
}
Dies stellt sicher dass das Projekt auch funktioniert wenn renv nicht installiert ist (CI-Umgebungen, Mitarbeiter).
Erwartet: R-Sitzungen aktivieren renv automatisch beim Start im Projektverzeichnis. Sitzungen ohne installiertes renv starten weiterhin fehlerfrei.
Bei Fehler: Wenn .Rprofile Fehler verursacht, sicherstellen dass die file.exists()-Pruefung vorhanden ist. Nie source("renv/activate.R") bedingungslos aufrufen.
Diese Dateien versionieren:
renv.lock # Immer committen
renv/activate.R # Immer committen
renv/settings.json # Immer committen
.Rprofile # Committen (enthaelt renv-Aktivierung)
Diese ignorieren (bereits in renvs .gitignore):
renv/library/ # Maschinenspezifisch
renv/staging/ # Temporaer
renv/cache/ # Maschinenspezifischer Cache
Erwartet: renv.lock, renv/activate.R und renv/settings.json werden von Git versioniert. Maschinenspezifische Verzeichnisse (renv/library/, renv/cache/) werden ignoriert.
Bei Fehler: Wenn renv/library/ versehentlich committet wurde, mit git rm -r --cached renv/library/ entfernen und zu .gitignore hinzufuegen.
In GitHub Actions die renv-Cache-Action verwenden:
- uses: r-lib/actions/setup-renv@v2
Dies stellt automatisch aus renv.lock mit Caching wieder her.
Erwartet: CI-Pipeline stellt Pakete aus renv.lock mit aktiviertem Caching wieder her. Nachfolgende Durchlaeufe sind durch gecachte Pakete schneller.
Bei Fehler: Wenn die CI-Wiederherstellung fehlschlaegt, pruefen dass renv.lock committet und aktuell ist. Fuer private GitHub-Pakete sicherstellen dass GITHUB_PAT als Repository-Secret gesetzt ist.
renv::status() meldet keine Problemerenv.lock ist in die Versionskontrolle committetrenv::restore() funktioniert bei einem sauberen Checkout.Rprofile aktiviert renv bedingtrenv.lock fuer die Abhaengigkeitsaufloesungrenv::init() im falschen Verzeichnis ausfuehren: Immer zuerst getwd() verifizierenrenv::init() nur die Projektbibliothek verwendenrenv::snapshot() ausfuehren--vanilla-Flag: Rscript --vanilla ueberspringt .Rprofile, sodass renv nicht aktiviert wirdrenv.lock ist als diffbares JSON konzipiertrenv::install("bioc::PackageName") verwenden und sicherstellen dass BiocManager konfiguriert istcreate-r-package -- beinhaltet renv-Initialisierungsetup-github-actions-ci -- CI-Integration mit renvsubmit-to-cran -- Abhaengigkeitsverwaltung fuer CRAN-Pakete