HowToInstallRSPerl: Difference between revisions

From BRF-Software
Jump to navigation Jump to search
imported>MichaelDondrup
No edit summary
imported>MichaelDondrup
No edit summary
Line 108: Line 108:
somebody# perl test1.pl; perl test2.pl; perl test3.pl; perl plot.pl
somebody# perl test1.pl; perl test2.pl; perl test3.pl; perl plot.pl


</nowiki></pre>




Here is another test script, that will reproduce the bug in the unpatched version:


[[Media:HowToInstallRSPerl$test4.pl]]


With 0.8.0.2 the output should look like this:
<pre><nowiki>
marvin:~/R> perl test.pl
1..1
ok 1
RSPERL 0.8.0 - May 26 2006, 17:32:28 initialized
Loaded RSPerl library
Evaluating command
print(version);
foo1 <<- function() return (data.frame(list(matrix(1))));
foo2 <<- function(x) { return(0) }
       
parseEval("\nprint(version);\n\nfoo1 <<- function() return (data.frame(list(matrix(1))));\n\nfoo2 <<- function(x) { return(0) } \n\n\t ")
              _                       
platform      sparc-sun-solaris2.9     
arch          sparc                   
os            solaris2.9               
system        sparc, solaris2.9       
status                                 
major          2                       
minor          3.0                     
year          2006                     
month          04                       
day            24                       
svn rev        37909                   
language      R                       
version.string Version 2.3.0 (2006-04-24)
Got the answer
function(x) { return(0) }
<environment: 61a8bc>
Calling R function name `foo1', # arguments: 1
Calling R
foo1()
Performed the call, result has length 1
Testing call: This works :)
Calling R function name `foo2', # arguments: 2
1) Arg type 3
Calling R
foo2(list(structure.1...Dim...c.1..1.. = 1))
Performed the call, result has length 1
Primitive, R type: 14, of length 1
[1] 0
Testing call with named arguments: This fails :(
Calling R function name `foo1', # arguments: 1
Calling R
foo1()
Performed the call, result has length 1
# of arguments: -1
# of named arguments 1
0) x  Arg type 6
foo2(x = list(structure.1...Dim...c.1..1.. = 1))
0 this does not work
</nowiki></pre>
</nowiki></pre>



Revision as of 17:17, 26 May 2006

Short Installation Instructions for RSPerl

NOTE

RSPerl -- The Omegahat interface for R and Perl.

Follow these instructions to install the RSPerl bidirections interface for use with the EMMA 2 software.

The RSPerl software is written and copyrighted by Duncan Temple Lang and distributed under the FreeBSD license. See the RSPerl homepage: http://www.omegahat.org/RSPerl/index.html

Please report any problems related to RSPerl to the omega help mailing list: omega-help@eeyore.ucdavis.edu

If you also want to use RSPerl for another purpose (e.g. Perl from R), you should also consider the original installation instructions.


! This page is meant for internal use at the CeBiTec. Any information in this document is provided without any warranty. !


Prerequisites

  • Perl >= 5.8.x
  • R >= 2.2.1

both installed and working.

R needs to be configured with --enable-R-shlib switch (which is the case by default).

Obtaining the Sources

-- MichaelDondrup DateTime(2006-05-22T13:37:36Z)

/!\ The current version (0.8-2) has a bug that prevents EMMA to function with it.

Please use the following patched version (0.8.0.2) until the problem is finally solved:

RSPerl_0.8.0.2.tar.gz

MD5 key: 508035fa31dc570bba6ea9517e003913

The patched version has been tested with

  • FreeBSD 5.4
  • Solaris 9 and 10 (sparc and i386)
  • Ubuntu Linux 5.10 (thanx to Johan Nylander)
  • R 2.2.1, R 2.3.0 (test on sparc solaris only)
  • Perl 5.8.x

-- MichaelDondrup DateTime(2006-05-26T16:11:33Z) Build attemps with R 2.3.0 were reported to fail, but I have tested a local install on solaris. No problems with building the 0.8-2 and 0.8.0.2, but the bug is still present in 0.8-2.

(Otherwise, you could: download the latest RSPerl package from http://www.omegahat.org/RSPerl/index.html.)

Installation

You need to be a privileged user to install RSPerl in the standard location of R libraries and Perl modules. At the console, type:


radmin#  R CMD INSTALL --configure-args='--with-in-perl --with-modules=""' RSPerl_X.tar.gz 

(replace X with the actual version) or

somebody# R CMD INSTALL -l <whereever> --configure-args='--with-in-perl --with-modules=""' RSPerl_X.tar.gz 

to install to another directory. This is recommended, for a first test of the package, and if you do not want to or cannot become privileged user.

Setting up the Environment

For RSPerl to execute R commands from within Perl you have to set LD_LIBRARY_PATH, PERL5LIB, and R_HOME.


export R_HOME=/usr/local/lib/R 
# or wherever you installed it
RSPERLDIR=$R_HOME/library/RSPerl 
# or wherever you put RSPerl 

export LD_LIBRARY_PATH=$RSPERLDIR/libs:$R_HOME/lib

export PERL5LIB=$RSPERLDIR/share/lib/site_perl
# check, that this directory contains R.pm and RReferences.pm


To avoid having to set PERL5LIB you could also copy the content of $RSPERLDIR/share/lib/site_perl/ to the site_perl directory of your local perl installation.

Testing R from Perl

After setting up the environment, try to execute the perl scripts in the tests/ subdirectory of the RSPerl installation.

somebody# perl test.pl
RSPERL 0.8.0 - May 23 2006, 12:27:13 initialized
[...no error message...] 
somebody# perl test1.pl; perl test2.pl; perl test3.pl; perl plot.pl


Here is another test script, that will reproduce the bug in the unpatched version:

Media:HowToInstallRSPerl$test4.pl

With 0.8.0.2 the output should look like this:

marvin:~/R> perl test.pl
1..1
ok 1
RSPERL 0.8.0 - May 26 2006, 17:32:28 initialized
Loaded RSPerl library
Evaluating command 
print(version);

foo1 <<- function() return (data.frame(list(matrix(1))));

foo2 <<- function(x) { return(0) } 

         
parseEval("\nprint(version);\n\nfoo1 <<- function() return (data.frame(list(matrix(1))));\n\nfoo2 <<- function(x) { return(0) } \n\n\t ")
               _                         
platform       sparc-sun-solaris2.9      
arch           sparc                     
os             solaris2.9                
system         sparc, solaris2.9         
status                                   
major          2                         
minor          3.0                       
year           2006                      
month          04                        
day            24                        
svn rev        37909                     
language       R                         
version.string Version 2.3.0 (2006-04-24)
Got the answer
function(x) { return(0) }
<environment: 61a8bc>
Calling R function name `foo1', # arguments: 1
Calling R
foo1()
Performed the call, result has length 1
Testing call: This works :) 
Calling R function name `foo2', # arguments: 2
1) Arg type 3
Calling R
foo2(list(structure.1...Dim...c.1..1.. = 1))
Performed the call, result has length 1
Primitive, R type: 14, of length 1
[1] 0
Testing call with named arguments: This fails :( 
Calling R function name `foo1', # arguments: 1
Calling R
foo1()
Performed the call, result has length 1
# of arguments: -1
# of named arguments 1
0) x  Arg type 6
foo2(x = list(structure.1...Dim...c.1..1.. = 1))
0 this does not work


Issues

  • The scripts RSPerl.bsh and RSPerl.csh in the scripts/ subdirectory are currently broken.
  • Too many environment variables have to be set.
  • The installation process should try to install the .pm files in the standard perl distribution
  • No build with R 2.3.0
  • -c or --clean will not completely clean up the files generated by configure.
  • I did not update the Changes file in the package.
  • The test scripts should be put in a single script and not use plot() because that requires X11 or gs

System specific issues

Solaris

There is a patch kindly provided by Björn Fischer from the CeBiTec support group, that will erase the need to set the LD_LIBRARY_PATH. The patch will appear here soon.

FreeBSD

RSPerl uses GNU make features. To be able to install RSPerl on systems, where make is not GNU make by default, do the following prior to running R CMD INSTALL (provided you are using bash):


radmin#  export MAKE=gmake