2016-07-18 8 views
0

Kurze Frage: Ich möchte die postgresqlWriteTable Funktion in der RPostgreSQL-Paket bearbeiten und installieren Sie es auf R auf einem Ubuntu-Rechner ausgeführt.Änderung der Funktion in R-Paket und Installation unter Ubuntu

Lange Erklärung:

Die Wurzel meines Problems ist, dass ich auf eine Postgres-Tabelle mit einem automatischen Primärschlüsselspalt von R zu schreiben versuchen mit dbWriteTable von RPostgreSQL Paket.

Ich las diesen Beitrag: How do I write data from R to PostgreSQL tables with an autoincrementing primary key?, die eine Lösung für mein Problem vorgeschlagen, indem Sie die Funktion postgresqlWriteTable in der RPostgreSQL-Paket ändern. Es funktioniert, wenn ich interaktiv fixInNamespace in OSX-Umgebung verwende und die Funktion bearbeite.

Leider muss ich mein Skript auf einer AWS-Instanz ausführen, die R auf Ubuntu ausführt. Ich habe RPostgreSQL an dieser Stelle auf meiner Maschine installiert: /usr/local/lib/R/site-library/RPostgreSQL. Ich installierte es durch Aufruf R CMD install RPostgreSQL_0.4-1.tar.gz

Jetzt versuche ich, die Funktion postgresqlWriteTable zu finden. Es soll in der Datei PostgreSQLSupport.R sein. Ich habe die ganze Bibliothek durchsucht - es gibt keine solche Datei.

Ich erkannte, dass auf meinem lokalen Computer im OSX Finder, wenn ich den tar.gz Paketordner entzippen, kann ich die Datei PostgreSQLSupport.R sehen, wo ich die Funktion ändern soll.

Also habe ich die Funktion geändert. Dann entfernte ich die installierte RPostgreSQL von meinem Ubuntu-Rechner und kopierte die neuen Ordner (von meinem lokalen Rechner) in meine Ubuntu-Maschine und versuchte devtools zu verwenden, um das Paket zu installieren, wie hier in der Post vorgeschlagen: Loading an R Package from a Custom directory

hier ist das, was passiert ist:

> library("devtools") 
> install("/usr/local/lib/R/site-library/RPostgreSQL") 
Error: Can't find '/usr/local/lib/R/site-library/RPostgreSQL'. 
> install("RPostgreSQL", "/usr/local/lib/R/site-library/RPostgreSQL") 
Installing RPostgreSQL 
'/usr/lib/R/bin/R' --no-site-file --no-environ --no-save --no-restore --quiet \ 
    CMD INSTALL '/datasci/nikhil/RPostgreSQL' \ 
    --library='/usr/local/lib/R/site-library' --install-tests 

* installing *source* package ‘RPostgreSQL’ ... 
file ‘R/PostgreSQLSupport.R’ has the wrong MD5 checksum 
ERROR: 'configure' exists but is not executable -- see the 'R Installation and Administration Manual' 
* removing ‘/usr/local/lib/R/site-library/RPostgreSQL’ 
Error: Command failed (1) 

Ich bin am Ende meines Witzes!

+0

@ dirk.eddelbuettel Willst du da reinkommen, da du einer der Mitwirkenden bist? –

+0

Bitte beachten Sie auch [die Paketautoren kontaktieren] (http://dirk.eddelbuettel.com/code/rpostgresql.html) und vielleicht [ein Problem einreichen] (https://code.google.com/archive/p/rpostgresql /) (obwohl diese Seite eher inaktiv aussieht), falls Sie glauben, dass Ihre Einstellung anderen Benutzern nutzen könnte, ohne die aktuelle Funktionalität zu beeinträchtigen. – MichaelChirico

+0

ehrlich gesagt, ich bin nicht fortgeschritten genug, um das zu wissen, aber @ dirk.eddelbuettel ist einer der Mitwirkenden zu 'RPostgreSQL' und er wurde getaggt. – vagabond

Antwort

2
  1. Kopieren Sie die Datei pacakge .tar.gz auf die AWS-Maschine.
  2. Entpacken Sie diese Datei, damit Sie eine Verzeichnisstruktur haben.
  3. Bearbeiten Sie die Funktion in der Datei und speichern Sie Ihre Änderungen. Möglicherweise müssen Sie auch die Versionsnummer in der Datei DESCRIPTION erhöhen.
  4. Verwenden Sie devtools::build, um eine neue .tar.gz Datei zu erstellen.
  5. Installieren Sie diese aktualisierte Version des Pakets.
+0

Kann ich die Änderung vornehmen und lokal erstellen, dann .tar.gz auf Ubuntu-Maschine verschieben und installieren? – vagabond

+1

@vagabond Sicher, das wird auch funktionieren. –

+0

kann ich dir nicht genug danken! – vagabond

Verwandte Themen