Estoy tratando de hacer que la actualización 3 de Oracle Java 7 funcione correctamente en Debian 6. He descargado y configurado los archivos /usr/java/jre1.7.0_03
. También he establecido las siguientes dos líneas al final de /etc/bash.bashrc
:
export JAVA_HOME=/usr/java/jre1.7.0_03
export PATH=$PATH:$JAVA_HOME/bin
Iniciar sesión como otros usuarios y root está bien, Java se puede encontrar:
chris@mc:~$ java -version
java version "1.7.0_03"
Java(TM) SE Runtime Environment (build 1.7.0_03-b04)
Java HotSpot(TM) 64-Bit Server VM (build 22.1-b02, mixed mode)
Sin embargo, hay dos casos en los que Java no se puede encontrar como se detalla a continuación. Tenga en cuenta que ambos funcionaron bien cuando anteriormente instalé OpenJDK Java 6 a través de aptitude, pero necesito Oracle Java 7 por varias razones.
Lo más importante, no puedo ejecutar comandos como otro usuario a través
su
, a pesar de que la RUTA muestra que Java debería estar presente. El usuario fue creado conadduser chris
root@mc:~# su chris -c "echo $PATH" /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/java/jre1.7.0_03/bin:/bin root@mc:~# su chris -c "java -version" bash: java: command not found root@mc:~# su chris -c "/usr/java/jre1.7.0_03/bin/java -version" java version "1.7.0_03" ...
¿Cómo puede estar en el
PATH
pero no se puede encontrar? Actualización 05/04/2012: explicada por Daniel, que tiene que ver con que es un shell no interactivo para que los archivos como/etc/profile
y/etc/bash.bashrc
no se ejecuten. Hacer un intercambio completo a ese usuario y ejecutar Java funciona:root@mc:~# su chris chris@mc:/root$ java -version java version "1.7.0_03" ...
Ejecuto un script en el inicio que muestra problemas similares pero ligeramente diferentes. El script se encuentra en
/etc/init.d/start-mystuff.sh
y llama a un jar:#!/bin/bash # /etc/init.d/start-mystuff.sh java -jar /opt/Mars.jar
Puedo confirmar que el script se ejecuta al inicio y que el código de salida es 127, lo que indica que no se encontró el comando. Insertar una línea para imprimir / guardar los
PATH
programas que es:/sbin:/usr/sbin:/bin:/usr/bin
Este segundo problema no es tan importante porque puedo señalar directamente el ejecutable de Java en el script, ¡pero todavía tengo curiosidad!
He intentado configurar el completo PATH
y JAVA_HOME
explícitamente en el /etc/environment
que no ayudó. También he intentado configurarlos en los /etc/profile
que tampoco parece ayudar. He intentado iniciar y cerrar sesión de nuevo después de configurar PATH
en varias ubicaciones (¡duh!).
De todos modos, una publicación larga para lo que probablemente tendrá una solución simple de una línea :( Cualquier ayuda con esto sería muy apreciada, he pasado demasiado tiempo tratando de solucionarlo por mí mismo.
Motivación
El primer problema puede parecer oscuro, pero en mi sistema tengo usuarios a los que no se les permite el acceso SSH pero todavía quiero ejecutar procesos como ellos. Tengo un montón de scripts que funcionan de esta manera y no quiero tener que cambiarlos todos.