Как установить JAVA_HOME для всех пользователей для “elasticsearch” программы?

Я пытаюсь установить JAVA_HOME для elasticsearch но никакая удача до настоящего времени.

Я пытался установить его в .bashrc, etc/environment, etc/.profile весь сбой.

это - команда, которую я использую для выполнения elasticsearch:

sudo /etc/init.d/elasticsearch start

Я попробовал, отлаживают переменную JAVA_HOME в терминале как это:

  1. echo $JAVA_HOME
  2. sudo echo $JAVA_HOME

Я получил результат /home/mockie/softwares/jdk1.8.0_45 для обоих, который является корректным путем для моего JAVA.

Я также попробовал отладку /etc/init.d/elasticsearch как это:

echo "$JAVA_HOME/dodol"
exit 1

и результат был пуст, и только возвратите "/dodol".

это - полный код для etc/init.d/elasticsearch : https://gist.github.com/mockiemockiz/c9547aee791ee04c2e1d

и это - мой etc/environment:

    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

    JAVA_HOME=/home/mockie/softwares/jdk1.8.0_45

но когда я пробую это:

$ sudo su
$ /etc/init.d/elasticsearch start

и это работает! но то, что я хочу, должно использовать sudo /etc/init.d/elasticsearch start без sudo su сначала. действительно ли это возможно?

4
задан 3 July 2015 в 00:19

4 ответа

Проблема оказалась сценарием SysV /etc/init.d/elasticsearch самостоятельно.

В сценарии PID_DIR переменная установлена как:

PID_DIR=/var/run/elasticsearch 

но нет такого каталога, существует и существует команда для создания его в сценарии также.

NAME и PID_FILE установлены как:

NAME=elasticsearch
PID_FILE="$PID_DIR/$NAME.pid" 

Таким образом, когда PID_FILE попытка состоит в том, чтобы создать файл "$PID_DIR/$NAME.pid" (/var/run/elasticsearch/elasticseach.pid) в $PID_DIR (/var/run/elasticsearch/), это добирается:

touch: cannot touch ‘/var/run/elasticsearch/elasticsearch.pid’: No such file or directory 

ошибка как каталог /var/run/elasticsearch не делает уже существует.

О JAVA_HOME переменная, сценарий /etc/init.d/elasticsearch не использует переменную системы, довольно использующую/создающую ее собственную версию переменной, которая четко определена в сценарии.

Согласно сценарию, если JAVA_HOME не установлен в /etc/default/elasticsearch это попытается установить его вручную путем поиска определенных файлов в определенных каталогах, иначе это будет, оставил его незаполненный.

4
ответ дан 1 December 2019 в 09:22

Как упомянуто здесь EnvironmentVariables

можно установить переменные окружения в масштабе всей системы с тремя путями:

  • /etc/environment
  • /etc/profile
  • /etc/profile.d / *.sh

Вы могли использовать, например,/etc/profile. Выполните это на своей машине

sudo echo "JAVA_HOME=/home/mockie/softwares/jdk1.8.0_45" >> /etc/profile
1
ответ дан 1 December 2019 в 09:22

У меня была та же проблема, что я сделал должен был создать/etc/default/elastic файл со следующей строкой внутри:

JAVA_HOME=/pathto/jdk
1
ответ дан 1 December 2019 в 09:22

У меня была проблема, решения, предоставленные выше, вероятно, работы. однако в случае, если кто-либо хочет сделать, вещь, не перезапуская сервер, имеющий всего , установила Java, можно сделать то, что я сделал (который является, вероятно, неправильным, но это работало).

Измените:

/etc/systemd/system/multi-user.target.wants/elasticsearch.service

добавляют эту строку:

Environment=JAVA_HOME=/usr/lib/jvm/jdk-11.0.4/

в [сервис] разделу You, вероятно, придется заменить/usr/lib/jvm/jdk-11.0.4/Вашей фактической установкой Java.

я надеюсь, что это помогает, и я приношу извинения elasticsearch команде для изменения их файлов, ясно у меня нет бизнеса, изменяющего файлы по умолчанию.

0
ответ дан 1 December 2019 в 09:22

Другие вопросы по тегам:

Похожие вопросы: