Como definir JAVA_HOME para todos os usuários para o programa “elasticsearch”?

2

Estou tentando definir JAVA_HOME para elasticsearch , mas sem sorte até agora.

Eu tentei definir em .bashrc , etc/environment , etc/.profile todos falharem.

este é o comando que eu uso para executar o elasticsearch:

sudo /etc/init.d/elasticsearch start

Eu tentei depurar a variável JAVA_HOME no terminal assim:

  1. echo $JAVA_HOME
  2. sudo echo $JAVA_HOME

Eu obtive o resultado /home/mockie/softwares/jdk1.8.0_45 para ambos, que é o caminho correto para o meu JAVA.

Eu também tentei depurar /etc/init.d/elasticsearch assim:

echo "$JAVA_HOME/dodol"
exit 1

e o resultado ficou vazio e só retorna "/ dodol".

este é o código completo para etc/init.d/elasticsearch : link

e este é meu 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

mas quando eu tento isso:

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

e funciona! mas o que eu quero é usar sudo /etc/init.d/elasticsearch start sem sudo su primeiro. é possível?

    
por Kakashi 02.07.2015 / 19:06

3 respostas

2

O problema acabou sendo o script SysV /etc/init.d/elasticsearch .

No script, a variável PID_DIR está definida como:

PID_DIR=/var/run/elasticsearch 

mas não existe tal diretório e existe um comando para criá-lo no script também.

Os NAME e PID_FILE estão definidos como:

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

Então, quando o PID_FILE está tentando criar um arquivo "$PID_DIR/$NAME.pid" ( /var/run/elasticsearch/elasticseach.pid ) em $PID_DIR ( /var/run/elasticsearch/ ), está ficando:

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

erro porque o diretório /var/run/elasticsearch ainda não existe.

Sobre a variável JAVA_HOME , o script /etc/init.d/elasticsearch não está usando a variável do sistema, em vez de usar / criar sua própria versão da variável que está bem definida no script.

De acordo com o script, se JAVA_HOME não estiver definido em /etc/default/elasticsearch , ele tentará configurá-lo manualmente procurando determinados arquivos em determinados diretórios, caso contrário, ele ficará em branco.

    
por heemayl 02.07.2015 / 23:17
1

Como mencionado aqui EnvironmentVariables

Você pode definir variáveis ambientais em todo o sistema de três maneiras:

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

Você poderia usar, por exemplo, o / etc / profile. Execute isso na sua máquina

sudo echo "JAVA_HOME=/home/mockie/softwares/jdk1.8.0_45" >> /etc/profile
    
por Mohsen Ibrahim 02.07.2015 / 20:53
0

Eu tive o mesmo problema, o que eu fiz foi criar um arquivo / etc / default / elástico com a próxima linha dentro:

JAVA_HOME=/pathto/jdk
    
por Ignacio Cañon 06.07.2016 / 11:26