Bugzilla – Bug 4275
globus-gram-local-proxy-tool fails on Solaris
Last modified: 2008-02-28 14:09:14
You need to log in before you can comment on or make changes to this bug.
globus-gram-local-proxy-tool fails on Solaris. I'm using Solaris 9 for my WS container (WS GRAM server). Thus, my WS GRAM request including "globusrun-ws -job-delegate" fails on WS GRAM server. globus-gram-local-proxy-tool is /bin/sh script. On Linux, there are "set -C" command. But on Solaris, there are no "set -C" command. bash$ /bin/sh $ set -C -C: bad option(s) $ $ $GLOBUS_LOCATION/libexec/globus-gram-local-proxy-tool \ $GLOBUS_LOCATION -write $PWD/tmpfile Generating a 512 bit RSA private key ...........++++++++++++ .......++++++++++++ writing new private key to stdout ----- -----BEGIN CERTIFICATE REQUEST----- MIHMMHgCAQAwEzERMA8GA1UEAxMISm9obiBEb2UwXDANBgkqhkiG9w0BAQEFAANL ADBIAkEA1/XxPSvc/iODOffv3ZUTgY2zOvgy3HwX3lqH4QilRrh5SF7N2ztUbDmW GldVUqJe5Gc+rJlrZ7sb4FISEFl2swIDAQABoAAwDQYJKoZIhvcNAQEEBQADQQBX NChqdcW0BBNXte/GEy0JGG9je9u9tv74rQjfk17ipIs4/8nMtDTevRtvCV1+Z5M7 6gMNHa9ni/YGH7e/ug3N -----END CERTIFICATE REQUEST----- /home/somewhere/gt4/libexec/globus-gram-local-proxy-tool: -C: bad option(s) $ Just commenting out the "set -C" from the shell script worked fine for me. I attach the shell script jobrun.sh to reproduce the problem. Usage: % ./jobrun.sh your-host your-port subject delegate Giving "delegate" argument causes an error. Giving no "delegate" argument causes no-error. jobrun.sh uses uuidgen command. But Solaris has no uuidgen. please prepare uuidgen command or just uuid-string yourself. sorry. My WS container error: ... 2006-03-10 11:32:48,781 ERROR factory.ManagedJobFactoryService [ServiceThread-15,createManagedJob:357] Job creation failed. java.lang.RuntimeException: Couldn't obtain a delegated credential. at org.globus.exec.service.job.ManagedJobResourceImpl.getJobCredential(M anagedJobResourceImpl.java:422) ... Caused by: java.io.IOException: Unable to change owner of file /home/myhome/.globus/gram_job_proxy_29bacf00-afde-11da-9f39-d79ea15d6311 to myna me. at org.globus.exec.service.utils.UserProxyCreator.run(UserProxyCreator.j ava:225) ... Thanks.
Created an attachment (id=866) [details] jobrun.sh jobrun.sh to reproduce the problem.
I also encountered this problem. I was able to fix it by changing the first line of globus-gram-local-proxy-tool from #!/bin/sh to #!/bin/bash It appears that /bin/bash is not standard on solaris. But nevertheless, changing the shell to bash seems to do the trick.
(In reply to comment #2) > #!/bin/sh > to > #!/bin/bash > It appears that /bin/bash is not standard on solaris. how about /bin/ksh.
Since we are planning pluggable job proxy creation (#3741), I'm turning this into a documentation bug in that there isn't a prerequeisite for Bourne shell. Once we implement the plugin interface, you'll be free to specify a plugin that uses a ksh script for Solaris. Either that or just install /bin/sh. I'm rather surprised Solaris doesn't include that by default.
This bug looks to have been a victim of a misunderstanding. "set -C" doesn't exist in bourne shell (sh), it only exists in the bourne-again shell (bash). It looks like the noclobber could be simulated by doing something like: if [ ! -e "$PROXYFILE.cert" ]; then cat > "$PROXYFILE.cert" fi and the like. This tool needs to either be sh-compatible or not pretend to be launched with /bin/sh.
Committed fix (avoid bash extensions) to 4.0 branch and trunk.