我在 VirtualBox 的帮助下使用 Cloudera 训练虚拟机创建了一台 CentOS 机器。然后,因为我想在虚拟机上使用spark,所以我按照以下给出的确切步骤安装了java 1.8版本技术管理网。
我能够成功安装 java,但是每次启动 Spark 时,我都必须按照上面链接中的建议执行以下三个命令。
export JAVA_HOME=/opt/jdk1.8.0_91
export JRE_HOME=/opt/jdk1.8.0_91/jre
export PATH=$PATH:/opt/jdk1.8.0_91/bin:/opt/jdk1.8.0_91/jre/bin
如果我在启动spark之前不执行上述命令,spark会自动使用java 1.6版本并会抛出异常。如果我执行上面的命令,那么它运行得很好。
在上面教程的最后,提到我应该将环境设置命令放在文件中,/etc/environment
以便机器在启动时使用这些变量。
我将所有三个命令都放入/etc/environment
文件中,但是执行此操作后,机器无法启动,始终停留在启动阶段,并出现以下错误:
Starting jexec servicesDevice, "eth0" does not exist
怎么了?
答案1
/etc/environment
不是一个shell脚本,它是一个配置文件pam_env
并且有不同的语法。/etc/environment
(并且每个用户文件~/.pam_environment
只能包含 形式的简单行。您不得使用 shell 功能,例如使用.VARIABLE=VALUE
export
VARIABLE
如果您想使用/etc/environment
,则必须PATH
完整拼写,并且 root 不能有不同的值(与sbin
目录)。最好将 shell 脚本放入其中/etc/profile.d
:这是在登录期间执行的,并且由 shell 执行,因此它使用 shell 语法(但要注意,如果您在未登录的情况下执行命令,例如在 cron 作业中,则不会执行它)。