Einige Programmiersprachen verfügen über ein eigenes Paketverwaltungssystem. Im Fall von R wird der integrierte install.packages
Befehl aus dem CRAN-Repository installiert und behandelt Abhängigkeiten.
Parallel dazu wird das Betriebssystem mit eigenen Paketverwaltungssystemen geliefert, wie beispielsweise dem apt
Befehl für debian-basierte Linux-Distributionen.
Ich hatte entschieden, dass es besser ist, den Paketmanager der Distribution zu verwenden, um sicherzustellen, dass alles auf meinem System kompatibel ist (siehe /programming//a/31293955/1878788 ).
Aber bald kam ein Tag, an dem ich Dinge brauchte, die auf diese Weise nicht verfügbar waren. Zum Beispiel würde ein Bioinformatik-Programm, das nicht von meiner Distribution gepackt wurde, eine bestimmte Version von R benötigen. Es kam vor, dass das Programm über ein Projekt namens "bioconductor" verfügbar war, dessen Ziel es war, R-Pakete für die Bioinformatik bereitzustellen, um sicherzustellen, dass Pakete verfügbar waren miteinander kompatibel sein (siehe https://www.bioconductor.org/install/#why-biocLite ).
Deshalb habe ich beschlossen, mein Betriebssystem-Verpackungsmanagementsystem nicht für R zu verwenden und alles mithilfe des biocLite
Befehls zu installieren, der vom Bioconductor-Projekt bereitgestellt wird.
Dieser Ansatz verlief einige Zeit reibungslos, bis ich feststellte, dass sich einige Leute für das Conda-Paket-Management-System entschieden hatten, um ein kohärentes, gesundes und leicht wiederherstellbares Bioinformatik-Ökosystem zu erhalten. Dieses Projekt namens "bioconda" bietet nicht nur R-Pakete, sondern auch Dinge aus allen möglichen Sprachen, mit der Möglichkeit, Versionen einfach zu wechseln usw. (siehe https://bioconda.github.io/ ).
Ich entschied mich dann stattdessen für diesen Ansatz und er lief reibungslos, bis ich ein R-Paket benötigte, das nicht von Bioconda / Conda bereitgestellt wurde. Es ist angeblich sehr einfach, aber meine Versuche, ein Conda-Paket zu erstellen, scheiterten. Dann habe ich versucht, das Paket auf biologische Weise zu installieren, und es schlug erneut fehl. Ich habe den Eindruck, dass irgendwie die falsche R-Installation von den Paketerstellungsmechanismen verwendet wurde. Also entschied ich mich, meine (noch sehr junge) Conda-Installation zu löschen und zu meinem Bio-Leitersystem zurückzukehren.
Ich frage mich, wie lange ich von einem Ansatz zum anderen springen muss. Gibt es allgemeine bewährte Methoden für den Umgang mit diesen mehreren, störenden und überlappenden Ebenen der Paketverwaltung?
Bearbeiten (14.09.2017) : Eine weitere Option, die ich in Betracht gezogen habe, ist die Verwendung alternativer Paketmanager auf Betriebssystemebene wie Guix oder Nix .
Antworten:
Ich bin nicht sicher, was für R verfügbar ist (ich habe von REnv gehört), aber für Python habe ich mich für den pragmatischen Ansatz entschieden, dass jeder Benutzer für seine eigene Python-Umgebung verantwortlich ist
pyenv
(dasselbe gilt für Perl mitperlbrew
und Ruby mitRVM
). Auf diese Weise können Benutzer ohne meine Hilfe ihre eigene optimale Umgebung für jedes Projekt erstellen (pyenv
verwaltet Python-Installationen und kann dann verwendet werdenpip
, um Module lokal für diese bestimmte Python-Installation zu installieren).Systempakete werden nur für Systemanforderungen verwendet.
quelle
Normalerweise ist es besser, den Systempaket-Manager zu verwenden. Wenn Sie jedoch moderne Sprachen verwenden, werden diese sich schnell entwickelnden, stabilen Distributiven keine neuen Pakete und Versionen enthalten. Und nicht so beliebte Pakete können niemals in Repositories aufgenommen werden.
Also würde ich sagen, der beste Weg in diesem Fall ist die Verwendung der integrierten Sprachfunktionen. Wenn R-Creators ein offizielles Tool zum Verwalten von Paketen erstellen, wäre dies eine großartige Sache, aber die Verwendung nicht offizieller Tools ist ein gewisses Risiko.
quelle