[GRASS-dev] what dependencies does GRASS actually need to run?

Moritz Lennert mlennert at club.worldonline.be
Wed Apr 15 12:58:17 EDT 2009


On 15/04/09 18:40, Michael Barton wrote:
> 
> 
> On Apr 15, 2009, at 8:40 AM, Moritz Lennert wrote:
> 
>> On 15/04/09 17:13, Michael Barton wrote:
>>> It would be useful to know for binary installations which 
>>> dependencies that GRASS actually needs to *run* as a binary (i.e., 
>>> not dependencies needed to compile).
>>> AFAICT, it must have PROJ and PROJ requires GDAL (though I don't 
>>> think GRASS requires GDAL)
>>
>> r.*.gdal, v.*.ogr require GDAL...
> 
> I thought that GRASS now compiles its own r.out.gdal and r.in.gdal and 
> so doesn't need GDAL for these. 

It doesn't need the GDAL binary tools (gdal_translate, etc), but it 
still needs the GDAL libaries which is what r.out.gdal is based on.

> I don't know about v.*.ogr

ditto.

> 
>>
>>
>>> Some other dependencies may be for specific I/O
>>> Anything else it needs just to run if is is already a compiled binary?
>>
>> Well, that kind of depends on how you compile it, i.e. the configure 
>> statement before compilation.
> 
> Even if you compile with libtif do you need to have libtif to run? On 
> Windows? On Mac?

You can use libraries in a static or in a dynamic way. If you use them 
statically, then all of the library is compiled into your executable, 
making it easy to install without many dependencies, but often making it 
fairly big, especially since your dependencies might depend on something 
else and so on. And you have to do the same for all programs, even if 
they use the same libaries (e.g. GDAL for GRASS, QGIS, etc, etc)

So, generally, the choice is to compile with dynamic libraries, meaning 
that the executable finds the relevant command in the libary binary 
during execution. This allows different programs to share one version of 
the library, which reduces size, but can lead to dependency issues, 
especially if you compile against a different version of the library 
than the one you use for running the program.

>> AFAIK, most libraries used in GRASS (including the system libraries) 
>> are used as dynamic libraries, so you need those. It also depends on 
>> what parts of GRASS you want to use, as, for example, the gdal example 
>> shows. nviz has specific requirements and so do some other modules.
>>
>> As an example, check the required packages for the installation of the 
>> GRASS Debian package:
>>
>> http://packages.debian.org/lenny/grass
>>
>> Not all of these packages are actually required to run the grass 
>> binary, as long as you don't use all of the modules.
> 
> This is what I'm asking about. What is a minimal set of dependencies to 
> do most things?

Define "most things" ;-)

You definitely will need libc, I guess proj, don't know about zlib. 
Don't know if you could create a working GRASS installation (working, 
but stripped down in its functionality) with just those... If you want 
some sort of output, you probably need libnpng.

But I'll leave this to the experts. Glynn ?

Moritz


More information about the grass-dev mailing list