R kann keine von Travis installierten Pakete finden

8

Wir versuchen, dem Caret-Paket einige Komponententests hinzuzufügen, die von travis, nicht aber von CRAN ausgeführt werden. Dies spart Bauzeit bei CRAN und reduziert die Anzahl der Abhängigkeiten, die sie installieren müssen, um unser Paket zu überprüfen, während wir eine vollständigere Testsuite auf travis ausführen können.

Ich dachte, ich könnte einfach die Anforderungen für den Test mit der r_packages: -Zeile in meinem travis installieren .yml-Datei :

%Vor%

Meine NOT_CRAN=TRUE Builds funktionieren jedoch immer noch nicht . (NOT_CRAN = FALSE läuft gut, da die problematischen Tests übersprungen werden)

Das ist wirklich seltsam, wie , wenn ich mir die Build-Logs anschaue sehe ich, dass Travis alle benötigten Pakete erfolgreich installiert:

%Vor%

Aber wenn meine Tests von diesen Paketen abhängen, kann R sie nicht finden:

%Vor%

(Ich denke) die relevante Zeile des Codes ist hier in Caret's Quellcode :

%Vor%

Warum kann die Funktion find.package keine von travis installierten Pakete finden? Gehen sie irgendwo in eine spezielle, separate Bibliothek?

Nebenbei, wie mache ich meine Travis Builds für weniger wortreich? Standardmäßig scheinen sie viel zu viele Informationen zu drucken (z. B. gibt es den gesamten Code, der von den Tests und manuell ausgeführt wird, sogar Code, der keinen Fehler enthält).

    
Zach 07.08.2015, 13:31
quelle

2 Antworten

9

Beim Testen Ihres Pakets auf Travis scheint R CMD check nach installierten Paketen am falschen Ort zu suchen.

Ich habe ein kleines Testpaket erstellt, um das herauszufinden:

Wenn Sie das Paket auf Travis mit R CMD check testen, enthält .libPaths() :

%Vor%

Wenn Sie das Paket auf Travis mit devtools::test() testen, enthält .libPaths() :

%Vor%

Standardmäßig werden R Pakete auf Travis in /usr/local/lib/R/site-library installiert (d. h. der erste Eintrag von .libPaths() ). Offensichtlich sucht R CMD check an der / den falschen Stelle (n).

Im Prinzip könnten wir das Argument --library für R CMD check verwenden, um auf den richtigen Platz zu zeigen. Wenn Sie jedoch --as-cran verwenden, wird --library standardmäßig auf /usr/lib/R/library gesetzt.

Die einfachste Lösung ist wahrscheinlich, alle Pakete (insbesondere die "zusätzlichen" Pakete ROSE und DMwR ) in /usr/lib/R/library zu installieren. Es gibt viele Möglichkeiten, dies zu tun. Eine Lösung ist das Hinzufügen von

%Vor%

zum before_install -Abschnitt Ihrer .travis.yml -Datei.

    
jtilly 11.08.2015, 02:56
quelle
2

Sie könnten das r-travis Repo klonen und nur von Ihrer Kopie beziehen. Das würde es dir erlauben, es weniger ausführlich zu machen.

Was "Pakete nicht gefunden" betrifft: weiß ich nicht. Aber die Travis-Instanz ist eine Vanilla-Ubuntu-Installation, so dass Sie Dinge steuern können, indem Sie in ein geeignetes ~/.Rprofile etc pp. Echo einfügen. Ich habe das alte r-travis-Setup gefunden um für mich bequemer zu sein und habe kürzlich über eine Möglichkeit gebloggt, die Testzeiten drastisch zu verkürzen , indem ich mich darauf berufe mehr zu vordefinierten r-cran-* .deb-Paketen.

Michael hat in seinem Repo weit über 1000, und Sie könnten auch Ihre eigenen über eine PPA bauen. Wenn es die Zeit erlaubt, schreibe ich vielleicht einen anderen Blog-Eintrag, der genau das beschreibt ...

    
Dirk Eddelbuettel 07.08.2015 13:41
quelle

Tags und Links