R seems to mangle LD_LIBRARY_PATH

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

R seems to mangle LD_LIBRARY_PATH

Ross Boylan
I am trying to ensure that a directory is searched first, but it gets
stuck at the end of LD_LIBRARY_PATH:

$ export LD_LIBRARY_PATH=~/install/lib

$ R

R version 3.0.2 (2013-09-25) -- "Frisbee Sailing"
Copyright (C) 2013 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
# banner omitted

> Sys.getenv(c("PATH", "LD_LIBRARY_PATH"))

PATH

"/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"

LD_LIBRARY_PATH
"/usr/lib64/R/lib:/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server:/home/ross/install/lib"
>


I've seen some reference to $R_HOME/etc/ldpaths but I don't have access
to system files, and I definitely don't want this visible to other
users.

I ran into this under Open MPI, but the previous example didn't use MPI
at all.

I'm picking up the wrong libraries; what do I need to do so that my
personal library is searched first?


Running Debian squeeze.

Thanks.
Ross Boylan

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Reply | Threaded
Open this post in threaded view
|

Re: R seems to mangle LD_LIBRARY_PATH

Rolf Turner

Can't hazard a guess as to why R is tacking on those other components to
LD_LIBRARY_PATH but it seems that if you use Sys.setenv() from within R
you can put your personal directory first. Something like:

Sys.setenv(LD_LIBRARY_PATH=paste("~/install/lib",
                            Sys.getenv("LD_LIBRARY_PATH"),sep=":"))

You could put that line into your .Rprofile so that you wouldn't need to
enter it on each startup.

HTH

cheers,

Rolf Turner


On 12/03/14 16:00, Ross Boylan wrote:

> I am trying to ensure that a directory is searched first, but it gets
> stuck at the end of LD_LIBRARY_PATH:
>
> $ export LD_LIBRARY_PATH=~/install/lib
>
> $ R
>
> R version 3.0.2 (2013-09-25) -- "Frisbee Sailing"
> Copyright (C) 2013 The R Foundation for Statistical Computing
> Platform: x86_64-pc-linux-gnu (64-bit)
> # banner omitted
>
>> Sys.getenv(c("PATH", "LD_LIBRARY_PATH"))
>
> PATH
>
> "/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
>
> LD_LIBRARY_PATH
> "/usr/lib64/R/lib:/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server:/home/ross/install/lib"
>>
>
>
> I've seen some reference to $R_HOME/etc/ldpaths but I don't have access
> to system files, and I definitely don't want this visible to other
> users.
>
> I ran into this under Open MPI, but the previous example didn't use MPI
> at all.
>
> I'm picking up the wrong libraries; what do I need to do so that my
> personal library is searched first?
>
>
> Running Debian squeeze.

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Reply | Threaded
Open this post in threaded view
|

Re: R seems to mangle LD_LIBRARY_PATH

Ross Boylan
On Wed, 2014-03-12 at 18:30 +1300, Rolf Turner wrote:

> Can't hazard a guess as to why R is tacking on those other components to
> LD_LIBRARY_PATH but it seems that if you use Sys.setenv() from within R
> you can put your personal directory first. Something like:
>
> Sys.setenv(LD_LIBRARY_PATH=paste("~/install/lib",
>                             Sys.getenv("LD_LIBRARY_PATH"),sep=":"))
>
> You could put that line into your .Rprofile so that you wouldn't need to
> enter it on each startup.
>
> HTH
>
> cheers,
>
> Rolf Turner

That helps some; lsof now indicates the R has both the versions
in /usr/lib/openmpi and ~/install of libmpi.so, libopen-pal.so, and
libopen-rte.so.

Does anyone know how to tell which version it actually is using?  The
libraries are different versions.

The library that it is picking up isn't on LD_LIBRARY_PATH, and so I
think something else is going on.  Specifically, if I library("Rmpi")
and do lsof on the process I see (among other things)
R       17538 ross  txt    REG                8,1     5648   3058294 /usr/lib/R/bin/exec/R
R       17538 ross  mem    REG                8,1   335240   3105336 /usr/lib/openmpi/lib/libopen-pal.so.0.0.0
R       17538 ross  mem    REG                8,1   304576   3105337 /usr/lib/openmpi/lib/libopen-rte.so.0.0.0
R       17538 ross  mem    REG                8,1   679992   3105332 /usr/lib/openmpi/lib/libmpi.so.0.0.2
R       17538 ross  mem    REG              254,2  2802579 152045867 /home/ross/install/lib/libmpi.so.1.3.0
R       17538 ross  mem    REG              254,2   106626 152046481 /home/ross/Rlib-3.0.1/Rmpi/libs/Rmpi.so

BTW, ldd on the rmpi.so above gives (among other things)
       libmpi.so.1 => /home/ross/install/lib/libmpi.so.1 (0x00007ff609d68000)
and neither it nor ldd libmpi.so (my personal version) have references to /usr/lib/openmpi.

Rmpi.so does reference some of the libraries in /usr/lib/openmpi.  ldd mentions
        libopen-rte.so.7 => /home/ross/install/lib/libopen-rte.so.7 (0x00007ff608d07000)
but not libopen-pal

I believe the paths indicated by ldd are simply hints to the dynamic loader about where to look.

BTW, Rmpi was installed with

R CMD INSTALL Rmpi --configure-args='--with-Rmpi-include=/home/ross/install/include --with-Rmpi-libpath=/home/ross/install/lib --with-mpi=/home/ross/install --with-Rmpi-type=OPENMPI'

Maybe the --with-mpi path needs a /lib.

Ross

>
>
> On 12/03/14 16:00, Ross Boylan wrote:
>
> > I am trying to ensure that a directory is searched first, but it gets
> > stuck at the end of LD_LIBRARY_PATH:
> >
> > $ export LD_LIBRARY_PATH=~/install/lib
> >
> > $ R
> >
> > R version 3.0.2 (2013-09-25) -- "Frisbee Sailing"
> > Copyright (C) 2013 The R Foundation for Statistical Computing
> > Platform: x86_64-pc-linux-gnu (64-bit)
> > # banner omitted
> >
> >> Sys.getenv(c("PATH", "LD_LIBRARY_PATH"))
> >
> > PATH
> >
> > "/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
> >
> > LD_LIBRARY_PATH
> > "/usr/lib64/R/lib:/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server:/home/ross/install/lib"
> >>
> >
> >
> > I've seen some reference to $R_HOME/etc/ldpaths but I don't have access
> > to system files, and I definitely don't want this visible to other
> > users.
> >
> > I ran into this under Open MPI, but the previous example didn't use MPI
> > at all.
> >
> > I'm picking up the wrong libraries; what do I need to do so that my
> > personal library is searched first?
> >
> >
> > Running Debian squeeze.
>

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.