At the suggestion of Roger Bivand, I am moving this issue from r-sig-geo.

I am using spgrass6, but I can't seem to initiate a grass session. I
managed to do this correctly months ago, but can't seem to now. Here
is my code and sessionInfo:

library(spgrass6)
Loading required package: sp
Loading required package: rgdal
Geospatial Data Abstraction Library extensions to R successfully
loaded
Loaded GDAL runtime: GDAL 1.7.2, released 2010/04/23
Path to GDAL shared files: /usr/local/share/gdal
Loaded PROJ.4 runtime: Rel. 4.7.1, 23 September 2009
Path to PROJ.4 shared files: (autodetected)
Loading required package: XML
GRASS GIS interface loaded with GRASS version: (GRASS not running)
loc <- initGRASS(gisBase = "/usr/local/grass-6.4.0svn/", home =
tempdir())
g.gisenv: symbol lookup error: g.gisenv: undefined symbol:
G__no_gisinit
g.gisenv: symbol lookup error: g.gisenv: undefined symbol:
G__no_gisinit
g.gisenv: symbol lookup error: g.gisenv: undefined symbol:
G__no_gisinit
g.gisenv: symbol lookup error: g.gisenv: undefined symbol:
G__no_gisinit
g.gisenv: symbol lookup error: g.gisenv: undefined symbol:
G__no_gisinit
g.region: symbol lookup error: g.region: undefined symbol: G__gisinit
Error in if (file.exists(file) == FALSE) if (!missing(asText) &&
asText == :
argument is of length zero
Error in parseGRASS(cmd) : g.region not parsed

sessionInfo()
R version 2.11.1 (2010-05-31)
i386-redhat-linux-gnu

locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=C LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

attached base packages:
[1] stats graphics grDevices utils datasets methods base

other attached packages:
[1] spgrass6_0.6-19 XML_3.1-1 rgdal_0.6-28 sp_0.9-66

loaded via a namespace (and not attached):
[1] grid_2.11.1 lattice_0.18-8 tools_2.11.1


Note that dropping the final "/" in my argument to gisBase in the
initGRASS() call does not change the results.

This is on a Fedora 13 system that has both the grass63 package
installed via rpm and also I have grass64svn updated (as of 27 Aug 2010)
compiled and installed.  I have the same problem whether I set gisBase
to the grass63 installation or the grass64svn installation.

Roger responded to my initial message on r-sig-geo with the following:


Something has happened to your GRASS installation and/or the
LD_LIBRARY_PATH environment variable. The GRASS binary modules are
being found, but the libraries (shared objects) they call are not.
Try to set debug(initGRASS), then step through looking at what is in
environment variables, etc. After the if () for conditionally setting
the PATH, look at:

Sys.getenv("PATH") list.files(Sys.getenv("PATH"))

and similarly for LD_LIBRARY_PATH:

Sys.getenv("LD_LIBRARY_PATH")
list.files(Sys.getenv("LD_LIBRARY_PATH"))

I suspect that the test:

eLDPATH <- Sys.getenv("LD_LIBRARY_PATH")
grep(basename(Sys.getenv("GISBASE")), eLDPATH)

is not empty, so the LD_LIBRARY_PATH does not get edited to include
the actual locations of the *.so files.

Have you changed the definitions of these environment variables in a
.bashrc or similar between this working and no longer working?
Before starting R, say:

echo $PATH echo $LD_LIBRARY_PATH

to see if that sheds any light on things.

Hope this helps,

Roger


Here is the output from debug after the PATH-setting if() call:


Browse[2]> Sys.getenv("PATH")



PATH
"/usr/local/texlive/2009/bin/i386-linux:/usr/lib/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/wdmccoy/bin:/usr/local/grass-6.4.0svn/bin:/usr/local/grass-6.4.0svn/scripts"

Browse[2]> list.files(Sys.getenv("PATH"))
character(0)
Browse[2]> Sys.getenv("LD_LIBRARY_PATH")


LD_LIBRARY_PATH
"/usr/lib/R/lib:/usr/local/lib:/usr/lib/jvm/jre/lib/i386/server:/usr/lib/jvm/jre/lib/i386:/usr/lib/jvm/java/lib/i386:/usr/java/packages/lib/i386:/lib:/usr/lib:/usr/local/grass-6.4.0svn/lib"

Browse[2]> list.files(Sys.getenv("LD_LIBRARY_PATH"))
character(0)


Here is the output from 'echo $PATH' and 'echo $LD_LIBRARY_PATH':


[wdmc...@boreas ~]$ echo $PATH
/usr/local/texlive/2009/bin/i386-linux:/usr/lib/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/wdmccoy/bin




[wdmc...@boreas ~]$ echo $LD_LIBRARY_PATH



I.e., there is nothing in LD_LIBRARY_PATH. The reason grass64 works by
itself (outside of R) is because I have a grass64.conf file in
/etc/ld.so.conf.d and that .conf file contains the single line:

/usr/local/grass-6.4.0svn/lib


I have checked that ldconfig is run and I have tried setting and exporting LD_LIBRARY_PATH before running R -- all to no avail.

Does anyone have any ideas about getting this to work in R?


Thanks, Bill


--
William D. McCoy
Geosciences
University of Massachusetts
Amherst, MA 01003
_______________________________________________
grass-stats mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/grass-stats

Reply via email to