Rhel

當我以 <user> 身份執行 .run 文件時,它工作正常。如果我 sudo 執行它,它無法檢測到 Java

  • July 14, 2015

我正在嘗試執行將安裝一些應用程序的 .run 文件。我正在 /opt/ 中安裝應用程序…當我在沒有 sudo 的情況下執行它時,安裝程序可以正確執行,但無法寫入 /opt/。當我使用 sudo 執行它時,安裝程序抱怨它無法在機器上找到有效的 Java 安裝。

Java 是使用 oracle rpm 安裝的

$rpm -ivh --prefix=javapath jdk1.7.0_75.x86_64.rpm   

$ which java
/usr/bin/java
$ echo $JAVA_HOME
/usr/lib/java-1.7.0/jdk1.7.0_75
$ sudo echo $JAVA_HOME
/usr/lib/java-1.7.0/jdk1.7.0_75
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/java-1.7.0/jdk1.7.0_75/bin
$ sudo echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/java-1.7.0/jdk1.7.0_75/bin
$ java -version
java version "1.7.0_75"
Java(TM) SE Runtime Environment (build 1.7.0_75-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.75-b04, mixed mode)
$ javac -version
javac 1.7.0_75

在此之後,一個

$ ./installer.run

可以正常工作,但是

$ sudo ./installer.run

將返回

Error: There has been an error.
The installer could not find a valid JAVA(tm) on this machine.

這是應用程序錯誤而不是系統錯誤。

執行sudo visudo或打開/etc/sudoers

檢查線路secure_paths="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

如果您的 Java 位於其他地方,請將該路徑添加到此列表中。

引用自:https://unix.stackexchange.com/questions/215969