# While updating logstash 1.4.2 we encounter - Unable to find JRuby error

**URL:** <https://discuss.elastic.co/t/while-updating-logstash-1-4-2-we-encounter-unable-to-find-jruby-error/36152>\
**Category:** Logstash\
**Created:** [December 2, 2015, 11:00am UTC](https://discuss.elastic.co/t/while-updating-logstash-1-4-2-we-encounter-unable-to-find-jruby-error/36152 "2015-12-02T11:00:42Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![meet2datta](https://avatars.discourse-cdn.com/v4/letter/m/6de8d8/32.png) [@meet2datta](https://discuss.elastic.co/u/meet2datta)\
**Post date:** [December 2, 2015, 11:00am UTC](https://discuss.elastic.co/t/while-updating-logstash-1-4-2-we-encounter-unable-to-find-jruby-error/36152/1 "2015-12-02T11:00:42Z")

</div>

Hello Team,

We were trying to update logstash for 1.4.2 to 2.1.0 latest version.

We encounter below issues --

1. /opt/logstash/bin/logstash: line 22: dirname: command not found  
/opt/logstash/bin/logstash: line 22: //bin/logstash.lib.sh: No such file or directory

-- To resolve this we have edited LOGSTASH\_HOME with correct value in logstash.lib.sh & logstash.

1. /opt/logstash/bin/logstash.lib.sh: line 2: dirname: command not found  
Could not find any executable java binary. Please install java in your PATH or set JAVA\_HOME

This ERROR is because of below message we observed in configtest --

/opt/logstash/bin/logstash --configtest -f /etc/logstash/conf.d/logstash.conf  
Unable to find JRuby.  
If you are a user, this is a bug.  
If you are a developer, please run 'rake bootstrap'. Running 'rake' requires the 'ruby' program be available.

We are expecting help from this forum to resolve this.

As above update giving us issues we have tried with 1.4.2 to 1.5.1, 1.5.1 to 1.5.3, 1.5.3 to 2.1.0 .. in each update we were faced this issue.

Issue is not observed when we downgrade to logstash 1.4.2 [original version].

Appreciate immediate help.

Thanks,

Datta

---

<div class="post-metadata">

**Author:** ![magnusbaeck](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/magnusbaeck/32/44943_2.png) [@magnusbaeck](https://discuss.elastic.co/u/magnusbaeck)\
**Post date:** [December 2, 2015, 11:07am UTC](https://discuss.elastic.co/t/while-updating-logstash-1-4-2-we-encounter-unable-to-find-jruby-error/36152/2 "2015-12-02T11:07:27Z")

</div>

The root cause is that there's no dirname binary in the PATH. Why not? What operating system are you running?

On Debian-based systems dirname is installed to /usr/bin as part of the coreutils package so you really have to make an effort for it not to be available.

---

<div class="post-metadata">

**Author:** ![meet2datta](https://avatars.discourse-cdn.com/v4/letter/m/6de8d8/32.png) [@meet2datta](https://discuss.elastic.co/u/meet2datta)\
**Post date:** [December 2, 2015, 11:20am UTC](https://discuss.elastic.co/t/while-updating-logstash-1-4-2-we-encounter-unable-to-find-jruby-error/36152/3 "2015-12-02T11:20:26Z")

</div>

Hi,

We are having RHEL 6.7.

We can resolve that by updating LOGSTASH\_HOME.

Hurdle is for JRuby error..

Actual issue is why these issues are coming for updating logstash 1.4.2.  
And how to get to 2.1.0 latest logstash version.

Thanks,

Datta

---

<div class="post-metadata">

**Author:** ![magnusbaeck](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/magnusbaeck/32/44943_2.png) [@magnusbaeck](https://discuss.elastic.co/u/magnusbaeck)\
**Post date:** [December 2, 2015, 12:08pm UTC](https://discuss.elastic.co/t/while-updating-logstash-1-4-2-we-encounter-unable-to-find-jruby-error/36152/4 "2015-12-02T12:08:55Z")

</div>

If you fix the dirname issue I think the rest of your problems are going to go away. Logstash 1.4.2 and 2.1 run just fine on RHEL 6.7 without having to set LOGSTASH\_HOME.

---

<div class="post-metadata">

**Author:** ![meet2datta](https://avatars.discourse-cdn.com/v4/letter/m/6de8d8/32.png) [@meet2datta](https://discuss.elastic.co/u/meet2datta)\
**Post date:** [December 2, 2015, 12:57pm UTC](https://discuss.elastic.co/t/while-updating-logstash-1-4-2-we-encounter-unable-to-find-jruby-error/36152/5 "2015-12-02T12:57:03Z")

</div>

Hello,

Thanks for the update.

We have tried this, after resolving dirname we have faced below issues --

In ERROR logs -- Could not find any executable java binary. Please install java in your PATH or set JAVA\_HOME.

In configtest --

Unable to find JRuby.  
If you are a user, this is a bug.  
If you are a developer, please run 'rake bootstrap'. Running 'rake' requires the 'ruby' program be available.

There were couple of threads but no proper solution given --

> <https://github.com/elastic/logstash/issues/2817>

  

> <https://github.com/elastic/logstash/issues/2747>

Thanks,

Datta

---

<div class="post-metadata">

**Author:** ![magnusbaeck](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/magnusbaeck/32/44943_2.png) [@magnusbaeck](https://discuss.elastic.co/u/magnusbaeck)\
**Post date:** [December 2, 2015, 1:01pm UTC](https://discuss.elastic.co/t/while-updating-logstash-1-4-2-we-encounter-unable-to-find-jruby-error/36152/6 "2015-12-02T13:01:23Z")

</div>

> We have tried this, after resolving dirname we have faced below issues --

How did you solve the problem with the missing dirname?

> In ERROR logs -- Could not find any executable java binary. Please install java in your PATH or set JAVA\_HOME.

So... make sure the java binary is included in PATH?

---

<div class="post-metadata">

**Author:** ![meet2datta](https://avatars.discourse-cdn.com/v4/letter/m/6de8d8/32.png) [@meet2datta](https://discuss.elastic.co/u/meet2datta)\
**Post date:** [December 2, 2015, 1:19pm UTC](https://discuss.elastic.co/t/while-updating-logstash-1-4-2-we-encounter-unable-to-find-jruby-error/36152/7 "2015-12-02T13:19:12Z")

</div>

Hi,

We have changed below parameter as mentioned & tried which resolved dirname related issue --

basedir=$(cd dirname $0/..; pwd)

basedir=/opt/logstash

This change done for - logstash bin file & logstash.lib.sh file.

Thanks,

Datta

---

<div class="post-metadata">

**Author:** ![meet2datta](https://avatars.discourse-cdn.com/v4/letter/m/6de8d8/32.png) [@meet2datta](https://discuss.elastic.co/u/meet2datta)\
**Post date:** [December 2, 2015, 1:22pm UTC](https://discuss.elastic.co/t/while-updating-logstash-1-4-2-we-encounter-unable-to-find-jruby-error/36152/8 "2015-12-02T13:22:35Z")

</div>

Additional details ..

If we update from logstash 1.4.2 to any upstream version this issue occurs.

Our requirement is to update to latest logstash - 2.1.0

---

<div class="post-metadata">

**Author:** ![magnusbaeck](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/magnusbaeck/32/44943_2.png) [@magnusbaeck](https://discuss.elastic.co/u/magnusbaeck)\
**Post date:** [December 2, 2015, 1:33pm UTC](https://discuss.elastic.co/t/while-updating-logstash-1-4-2-we-encounter-unable-to-find-jruby-error/36152/9 "2015-12-02T13:33:16Z")

</div>

Do not "fix" the problem by modifying the Logstash scripts. The scripts are fine. Your problem is either that you don't have a dirname binary or that your PATH is screwed up so that the dirname that you have isn't available. Fix that. I have nothing more to add in this matter.

---

<div class="post-metadata">

**Author:** ![meet2datta](https://avatars.discourse-cdn.com/v4/letter/m/6de8d8/32.png) [@meet2datta](https://discuss.elastic.co/u/meet2datta)\
**Post date:** [December 4, 2015, 4:43am UTC](https://discuss.elastic.co/t/while-updating-logstash-1-4-2-we-encounter-unable-to-find-jruby-error/36152/10 "2015-12-04T04:43:20Z")

</div>

Hello,

We have fixed the dirname issue.

Now we are getting below ERROR --

#tail -f /var/log/logstash/logstash.err  
Could not find any executable java binary. Please install java in your PATH or set JAVA\_HOME.

Below are the contents of logstash.lib.sh --

setup\_java() {  
if [-z "$JAVACMD"] ; then  
if [-n "$JAVA\_HOME"] ; then  
JAVACMD="$JAVA\_HOME/bin/java"  
else  
JAVACMD="java"  
JAVACMD="$(which java 2\> /dev/null)"  
fi

# elif ["$(basename $JAVACMD)" = "drip"] ; then

# export DRIP\_INIT\_CLASS="org.jruby.main.DripMain"

fi

# Resolve full path to the java command.

if [-f "$JAVACMD"] ; then  
JAVACMD=$(which $JAVACMD 2\>/dev/null)  
fi

# JAVACMD=/usr/bin/java

if [! -x "$JAVACMD"] ; then  
echo "Could not find any executable java binary. Please install java in your PATH or set JAVA\_HOME." 1\>&2  
exit 1  
fi

Our java details are as below --

# java -version

openjdk version "1.8.0\_65"  
OpenJDK Runtime Environment (build 1.8.0\_65-b17)  
OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode)

# ls -l /usr/bin/java

lrwxrwxrwx 1 root root 72 Dec 3 08:09 /usr/bin/java -\> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-0.b17.el6\_7.x86\_64/jre/bin/java

So Could you please help in this regards.

Thanks,

Datta

Could you please help in fixing this.

---

<div class="post-metadata">

**Author:** ![meet2datta](https://avatars.discourse-cdn.com/v4/letter/m/6de8d8/32.png) [@meet2datta](https://discuss.elastic.co/u/meet2datta)\
**Post date:** [December 4, 2015, 5:57am UTC](https://discuss.elastic.co/t/while-updating-logstash-1-4-2-we-encounter-unable-to-find-jruby-error/36152/11 "2015-12-04T05:57:30Z")

</div>

Additional Information --

I have one more environment having same configuration works well with version 2.1.0.  
This environment got update from version 1.5.3.

Like above here no configuration changes required.

Now for above issue we did update from 1.4.2 to 2.1.0.

Can somebody help in understanding what could be the cause.

Thanks,

Datta

---

<div class="post-metadata">

**Author:** ![magnusbaeck](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/magnusbaeck/32/44943_2.png) [@magnusbaeck](https://discuss.elastic.co/u/magnusbaeck)\
**Post date:** [December 4, 2015, 6:51am UTC](https://discuss.elastic.co/t/while-updating-logstash-1-4-2-we-encounter-unable-to-find-jruby-error/36152/12 "2015-12-04T06:51:45Z")

</div>

Are you setting JAVA\_HOME? What's the contents of JAVACMD just as the shell script bails out?

---

<div class="post-metadata">

**Author:** ![meet2datta](https://avatars.discourse-cdn.com/v4/letter/m/6de8d8/32.png) [@meet2datta](https://discuss.elastic.co/u/meet2datta)\
**Post date:** [December 4, 2015, 7:04am UTC](https://discuss.elastic.co/t/while-updating-logstash-1-4-2-we-encounter-unable-to-find-jruby-error/36152/13 "2015-12-04T07:04:39Z")

</div>

JAVA\_HOME, JAVACMD are not set at system level.

In the working environment also it is not set.

---

<div class="post-metadata">

**Author:** ![magnusbaeck](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/magnusbaeck/32/44943_2.png) [@magnusbaeck](https://discuss.elastic.co/u/magnusbaeck)\
**Post date:** [December 4, 2015, 7:10am UTC](https://discuss.elastic.co/t/while-updating-logstash-1-4-2-we-encounter-unable-to-find-jruby-error/36152/14 "2015-12-04T07:10:20Z")

</div>

What's the value of those variables _in the script_? Instead of running `/opt/logstash/bin/logstash`, run `sh -x /opt/logstash/bin/logstash` to get additional debugging output.

---

<div class="post-metadata">

**Author:** ![meet2datta](https://avatars.discourse-cdn.com/v4/letter/m/6de8d8/32.png) [@meet2datta](https://discuss.elastic.co/u/meet2datta)\
**Post date:** [December 4, 2015, 8:02am UTC](https://discuss.elastic.co/t/while-updating-logstash-1-4-2-we-encounter-unable-to-find-jruby-error/36152/15 "2015-12-04T08:02:45Z")

</div>

# sh -x /opt/logstash/bin/logstash

- unset CDPATH
- . /etc/sysconfig/logstash  
++ JAVACMD=/usr/bin/java  
++ KILL\_ON\_STOP\_TIMEOUT=0
- . /opt/logstash/bin/logstash.lib.sh  
++ unset CDPATH  
++ LOGSTASH\_HOME=/opt/logstash  
++ export LOGSTASH\_HOME  
++ LS\_HEAP\_SIZE=1g
- setup
- '[' /usr/bin/java ']'
- echo 'checking JAVACMD'  
checking JAVACMD
- echo /usr/bin/java  
/usr/bin/java  
++ basename /usr/bin/java
- '[' java = drip ']'
- '[' '' = 1 ']'
- '[' '' = 1 ']'
- echo 'checking setup java call'  
checking setup java call
- setup\_java
- '[' -z /usr/bin/java ']'
- '[' -f /usr/bin/java ']'  
++ which /usr/bin/java
- JAVACMD=/usr/bin/java
- '[' '!' -x /usr/bin/java ']'
- '[' '' ']'
- JAVA\_OPTS=-XX:+UseParNewGC
- JAVA\_OPTS='-XX:+UseParNewGC -XX:+UseConcMarkSweepGC'
- JAVA\_OPTS='-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=true'
- JAVA\_OPTS='-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75'
- JAVA\_OPTS='-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly'
- JAVA\_OPTS='-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError'
- JAVA\_OPTS='-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/logstash/heapdump.hprof'
- '[' '' ']'
- '[' 1g ']'
- JAVA\_OPTS='-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/logstash/heapdump.hprof -Xmx1g'
- '[' '' ']'
- export JAVACMD
- export JAVA\_OPTS
- setup\_vendored\_jruby
- JRUBY\_BIN=/opt/logstash/vendor/jruby/bin/jruby
- '[' '!' -f /opt/logstash/vendor/jruby/bin/jruby ']'
- VENDORED\_JRUBY=1
- case $1 in
- ruby\_exec /opt/logstash/lib/bootstrap/environment.rb logstash/runner.rb
- '[' -z 1 ']'
- '[' '' ']'  
++ jruby\_opts  
++ printf %s --1.9  
++ for i in '$JAVA\_OPTS'  
++ printf %s ' -J-XX:+UseParNewGC'  
++ for i in '$JAVA\_OPTS'  
++ printf %s ' -J-XX:+UseConcMarkSweepGC'  
++ for i in '$JAVA\_OPTS'  
++ printf %s ' -J-Djava.awt.headless=true'  
++ for i in '$JAVA\_OPTS'  
++ printf %s ' -J-XX:CMSInitiatingOccupancyFraction=75'  
++ for i in '$JAVA\_OPTS'  
++ printf %s ' -J-XX:+UseCMSInitiatingOccupancyOnly'  
++ for i in '$JAVA\_OPTS'  
++ printf %s ' -J-XX:+HeapDumpOnOutOfMemoryError'  
++ for i in '$JAVA\_OPTS'  
++ printf %s ' -J-XX:HeapDumpPath=/opt/logstash/heapdump.hprof'  
++ for i in '$JAVA\_OPTS'  
++ printf %s ' -J-Xmx1g'
- exec /opt/logstash/vendor/jruby/bin/jruby --1.9 -J-XX:+UseParNewGC -J-XX:+UseConcMarkSweepGC -J-Djava.awt.headless=true -J-XX:CMSInitiatingOccupancyFraction=75 -J-XX:+UseCMSInitiatingOccupancyOnly -J-XX:+HeapDumpOnOutOfMemoryError -J-XX:HeapDumpPath=/opt/logstash/heapdump.hprof -J-Xmx1g /opt/logstash/lib/bootstrap/environment.rb logstash/runner.rb  
No command given

---

<div class="post-metadata">

**Author:** ![magnusbaeck](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/magnusbaeck/32/44943_2.png) [@magnusbaeck](https://discuss.elastic.co/u/magnusbaeck)\
**Post date:** [December 4, 2015, 12:24pm UTC](https://discuss.elastic.co/t/while-updating-logstash-1-4-2-we-encounter-unable-to-find-jruby-error/36152/16 "2015-12-04T12:24:37Z")

</div>

So... what's the problem again? Logstash is apparently starting for you.

---

<div class="post-metadata">

**Author:** ![meet2datta](https://avatars.discourse-cdn.com/v4/letter/m/6de8d8/32.png) [@meet2datta](https://discuss.elastic.co/u/meet2datta)\
**Post date:** [December 7, 2015, 5:53am UTC](https://discuss.elastic.co/t/while-updating-logstash-1-4-2-we-encounter-unable-to-find-jruby-error/36152/17 "2015-12-07T05:53:47Z")

</div>

No It is still not starting getting below ERROR message --

tail -f /var/log/logstash/logstash.err  
Could not find any executable java binary. Please install java in your PATH or set JAVA\_HOME.

sh -x /opt/logstash/bin/logstash is stuck at below point --

++ printf %s ' -J-Xmx1g'

- exec /opt/logstash/vendor/jruby/bin/jruby --1.9 -J-XX:+UseParNewGC -J-XX:+UseConcMarkSweepGC -J-Djava.awt.headless=true -J-XX:CMSInitiatingOccupancyFraction=75 -J-XX:+UseCMSInitiatingOccupancyOnly -J-XX:+HeapDumpOnOutOfMemoryError -J-XX:HeapDumpPath=/opt/logstash/heapdump.hprof -J-Xmx1g /opt/logstash/lib/bootstrap/environment.rb logstash/runner.rb  
No command given

Usage: logstash [command args]  
Run a command with the --help flag to see the arguments.  
For example: logstash agent --help

Available commands:  
agent - runs the logstash agent  
version - emits version info about this logstash

---

<div class="post-metadata">

**Author:** ![magnusbaeck](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/magnusbaeck/32/44943_2.png) [@magnusbaeck](https://discuss.elastic.co/u/magnusbaeck)\
**Post date:** [December 7, 2015, 6:26am UTC](https://discuss.elastic.co/t/while-updating-logstash-1-4-2-we-encounter-unable-to-find-jruby-error/36152/18 "2015-12-07T06:26:32Z")

</div>

No. Logstash _is_ starting. The "No command given" text and everything that follows comes from Logstash. The "Could not find any executable java binary" message at the end of logstash.err must be from previous runs.

---

<div class="post-metadata">

**Author:** ![meet2datta](https://avatars.discourse-cdn.com/v4/letter/m/6de8d8/32.png) [@meet2datta](https://discuss.elastic.co/u/meet2datta)\
**Post date:** [December 7, 2015, 6:58am UTC](https://discuss.elastic.co/t/while-updating-logstash-1-4-2-we-encounter-unable-to-find-jruby-error/36152/19 "2015-12-07T06:58:43Z")

</div>

Actually service mentioned not running --

#service logstash status  
logstash is not running

# tail -f /var/log/logstash/logstash.err

Could not find any executable java binary. Please install java in your PATH or set JAVA\_HOME.

Everytime we restart the logstash service we get mentioned logstash ERROR

---

<div class="post-metadata">

**Author:** ![magnusbaeck](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/magnusbaeck/32/44943_2.png) [@magnusbaeck](https://discuss.elastic.co/u/magnusbaeck)\
**Post date:** [December 7, 2015, 7:06am UTC](https://discuss.elastic.co/t/while-updating-logstash-1-4-2-we-encounter-unable-to-find-jruby-error/36152/20 "2015-12-07T07:06:57Z")

</div>

So Logstash starts when run from the shell but not when run as a service. You need to make sure PATH and/or JAVA\_HOME is correctly set also in the init script.

[Next page](https://discuss.elastic.co/t/while-updating-logstash-1-4-2-we-encounter-unable-to-find-jruby-error/36152.md?page=2)
