当我执行 .run 文件时效果很好。如果我 sudo 运行它,它无法检测到 Java

当我执行 .run 文件时效果很好。如果我 sudo 运行它,它无法检测到 Java

我正在尝试执行一个 .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.

这是应用程序错误而不是系统错误。

答案1

运行sudo visudo或打开/etc/sudoers

检查线路secure_paths="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

如果您的 Java 位于其他位置,请将该路径添加到此列表中。

相关内容