Hi list,
I am writing a wrapper for a Grinder, a Perl program installed
globally
on my Galaxy server.
Galaxy runs as user 'galaxy':
$ ps aux | grep paster
galaxy 26807 0.0 0.8 2636308 136364 ?? S 2:52PM 0:19.15
python ./scripts/paster.py serve universe_wsgi.ini
When logged in as user galaxy, I can run Grinder:
$ Grinder --help
Usage:
Grinder [options]
Grinder --help
Grinder --version
...
Grinder's location is:
$ which Grinder
/opt/local/bin/Grinder
In grinder.xml:
If I put: <command interpreter="perl">
In the Galaxy webinterface, I get the error: Can't open perl script
"/Users/galaxy/galaxy_dist/tools/ngs_simulation/Grinder": No such file
or directory
Obviously, here, Galaxy assumes wrongly that tool is installed under
the
Galaxy ~/tools/ngs_simulation/ folder.
So I tried to omit the interpreter: <command>
And I got the error: /bin/sh: Grinder: command not found
This is surprising, since Grinder is found if I run it on the
command-line as user galaxy
I noticed that I have the same issue with the Velvet wrapper (also
located in /opt/local/bin) and thought that this could be an
environment
issue. And indeed the environment within a wrapper is:
PERL=/usr/bin/perl
PATH=/usr/bin:/bin:/usr/sbin:/sbin
While on the command line, the environment is:
PERL=/opt/local/bin/perl
PATH=/opt/local/bin:/opt/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/sw/
bin
This difference in environment explains why Galaxy cannot find Grinder
or Velvet.
Does this make any sense? Does Galaxy modify the environment? Why
would
the environment be different?
Thanks for your help,
Florent