What is the correct way to add nonstandard directories to execute external commands?
We have many external converter executables that are not in /bin
, /usr/bin
or the usual other locations. I've tried to set PATH
in a few places with no luck:
/etc/init.d/nuxeo
(This is installed from the Nuxeo APT repository)/var/lib/nuxeo/server/bin/nuxeoctl
has aPATH
defined in it. I modified it but with no luck.
Either of these settings do nothing; the system still behaves as if the executable cannot be found. I have also modified /etc/environment
with no luck as far as Nuxeo goes. My command line shell finds the binaries just fine.
Can anyone point me in the right direction?
I figured out my problem; it had nothing to do with the system path. I am posting it as an answer in case it is helpful for someone else.
What I was seeing was a ConverterCheckResult
error from an external tool that used the default setting for tester
, which is SystemPathTester
and defined by org.nuxeo.ecm.platform.commandline.executor.service.cmdtesters.SystemPathExistTester
.
The error just contained the installation message, so it looked as though it was unable to find the executable. However, I had another tool with a custom tester
defined, that also used the path, and it always worked fine. So, I reasoned that it couldn't just be the path.
My problem was that my XML contribution did not require the SystemPathTester
code. When I added the following to the beginning of the file that declares my command line commands, everything worked fine:
<require>org.nuxeo.ecm.platform.commandline.executor.service.defaultContrib</require>
Anyway, this was always my own mistake – though maybe the error handling/reporting in the Nuxeo command line classes could be improved to make the mistake clearer.
/etc/environment
. But it turns out that my issue had nothing to do with the path. I'll say more in my answer.