[R-sig-Geo] can't initiate Grass with initGRASS()

Roger Bivand Roger.Bivand at nhh.no
Sat Aug 28 19:57:53 CEST 2010


On Sat, 28 Aug 2010, William McCoy wrote:

> On 08/28/2010 01:15 PM, Roger Bivand wrote:
>> On Sat, 28 Aug 2010, William McCoy wrote:
>> 
>>> Roger,
>>> 
>>> I think your suspicions are correct. Here is the output from debug
>>> after the PATH setting if():
>>> 
>>> 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)
>>> 
>>> 
>>> Since I last used spgrass6 many months ago, I have installed
>>> grass64svn along with grass63, which was long ago installed as a
>>> fedora rpm. So my PATH looks like this:
>>> 
>>> 
>>> [wdmccoy at 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
>>> 
>>> 
>>> 
>>> But my LD_LIBRARY_PATH looks like this:
>>> 
>>> [wdmccoy at 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:
>>> 
>>> /usr/local/grass-6.4.0svn/lib
>>> 
>>> 
>>> What do you recommend?
>> 
>> This is a bit difficult to say, but trying to set LD_LIBRARY_PATH before
>> starting R to the correct value:
>> 
>> export LD_LIBRARY_PATH=/usr/local/grass-6.4.0svn/lib
>> 
>> and/or ensuring that ldconfig was run, might help.
>> 
>> Have you tried using gisBase = "/usr/local/grass-6.4.0svn" without the
>> terminating "/"?
>> 
>> Hope this goes in the right direction,
>> 
>> Roger
>> 
>
> Yes, I had already tried gisBase = "/usr/local/grass-6.4.0svn" without the 
> terminating "/".  In fact, that's what I had used when I did the debugging on 
> initGRASS().  So that doesn't seem to help.
>
> I think ldconfig is always run on startup, but I ran it again just now and it 
> made no difference.  And setting and exporting LD_LIBRARY_PATH doesn't help 
> either.
>
> I should also mention that I had tried to use my grass63 installation for 
> gisBase a couple of times and that gave me the same results.
>
> In case I didn't mention it, this is all being done on Fedora 13.  The last 
> time that I used spgrass6 successfully was on Fedora 12 on the same computer.
>
> Any other ideas?

Trying ldd on GRASS modules when running GRASS outside R to work out which 
shared object library they are using. I run Fedora 13 (among others) so I 
doubt that it is the system, rather some changes in your installed 
software that occurred at around the same time. Using ldd may help. When I 
type:

> ldd /home/rsb/topics/grass/g64_rc6/grass-6.4.0RC6/bin/g.region

I see an extra directory level before the /bin, /lib, etc., both in the 
input and the output, but your mileage may vary.

Roger

PS: Could I suggest moving this thread to statsgrass, which is 
specifically for the R/GRASS interface? Could you summarise there to 
attract attention from GRASS people (who are not too busy with FOSS4G in 
Barcelona)?

>
>
> Thanks, Bill
>
>
>>> 
>>> 
>>> Thanks, Bill
>>> 
>>> 
>>> On 08/28/2010 05:41 AM, Roger Bivand wrote:
>>>> On Fri, 27 Aug 2010, William McCoy wrote:
>>>> 
>>>>> 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:
>>>> 
>>>> 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
>>>> 
>>>> 
>>>>> 
>>>>>> 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
>>>>> 
>>>>> 
>>>>> Any ideas about what I am doing wrong?
>>>>> 
>>>>> Thanks, Bill
>>>>> 
>>>>> 
>>>> 
>>> 
>>> 
>>> 
>> 
>
>
>

-- 
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Helleveien 30, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: Roger.Bivand at nhh.no



More information about the R-sig-Geo mailing list