Я пытаюсь установить JAVA_HOME для elasticsearch
но никакая удача до настоящего времени.
Я пытался установить его в .bashrc
, etc/environment
, etc/.profile
весь сбой.
это - команда, которую я использую для выполнения elasticsearch:
sudo /etc/init.d/elasticsearch start
Я попробовал, отлаживают переменную JAVA_HOME в терминале как это:
echo $JAVA_HOME
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
сначала. действительно ли это возможно?
Проблема оказалась сценарием 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
это попытается установить его вручную путем поиска определенных файлов в определенных каталогах, иначе это будет, оставил его незаполненный.
Как упомянуто здесь EnvironmentVariables
можно установить переменные окружения в масштабе всей системы с тремя путями:
Вы могли использовать, например,/etc/profile. Выполните это на своей машине
sudo echo "JAVA_HOME=/home/mockie/softwares/jdk1.8.0_45" >> /etc/profile
У меня была та же проблема, что я сделал должен был создать/etc/default/elastic файл со следующей строкой внутри:
JAVA_HOME=/pathto/jdk
У меня была проблема, решения, предоставленные выше, вероятно, работы. однако в случае, если кто-либо хочет сделать, вещь, не перезапуская сервер, имеющий всего , установила 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 команде для изменения их файлов, ясно у меня нет бизнеса, изменяющего файлы по умолчанию.