我是怎么在这里的。
opt/develop/spark-3.3.1$ sudo ./dev/make-distribution.sh -pHADOOP-3 Dhadoop.version=3.2.4 -Pyarn --name custom-spark --pip --r --tgz -Psparkr -Phive -Phive-thriftserver -Pmesos -Pyarn -Pkubernetes
脚本(make-distribution.sh)显然没有读取变量的值,即$JAVA_HOME。/opt/develop/spark-3.3.1$ echo $JAVA_HOME
显示预期结果: /usr/lib/jvm/jdk-19.0.1export JAVA_HOME="/usr/lib/jvm/jdk-19.0.1" export PATH=$PATH:$JAVA_HOME/bin
似乎没有改变运行命令的结果。注销和重新登录也无济于事。export JAVA_HOME="/usr/lib/jvm/jdk-19.0.1" export PATH=$PATH:$JAVA_HOME/bin
java --version
和javac --version
似乎运行良好。文件: /opt/develop/dev/make-distribution.sh如下:
set -o pipefail
set -e
set -x
# Figure out where the Spark framework is installed
SPARK_HOME="$(cd "`dirname "$0"`/.."; pwd)"
DISTDIR="$SPARK_HOME/dist"
MAKE_TGZ=false
MAKE_PIP=false
MAKE_R=false
NAME=none
MVN="$SPARK_HOME/build/mvn"
function exit_with_usage {
set +x
echo "make-distribution.sh - tool for making binary distributions of Spark"
echo ""
echo "usage:"
cl_options="[--name] [--tgz] [--pip] [--r] [--mvn <mvn-command>]"
echo "make-distribution.sh $cl_options <maven build options>"
echo "See Spark's \"Building Spark\" doc for correct Maven options."
echo ""
exit 1
}
# Parse arguments
while (( "$#" )); do
case $1 in
--tgz)
MAKE_TGZ=true
;;
--pip)
MAKE_PIP=true
;;
--r)
MAKE_R=true
;;
--mvn)
MVN="$2"
shift
;;
--name)
NAME="$2"
shift
;;
--help)
exit_with_usage
;;
--*)
echo "Error: $1 is not supported"
exit_with_usage
;;
-*)
break
;;
*)
echo "Error: $1 is not supported"
exit_with_usage
;;
esac
shift
done
if [ -z "$JAVA_HOME" ]; then # THIS SHOULD EVALUATE FALSE.
# Fall back on JAVA_HOME from rpm, if found
if [ $(command -v rpm) ]; then
RPM_JAVA_HOME="$(rpm -E %java_home 2>/dev/null)"
if [ "$RPM_JAVA_HOME" != "%java_home" ]; then
JAVA_HOME="$RPM_JAVA_HOME"
echo "No JAVA_HOME set, proceeding with '$JAVA_HOME' learned from rpm"
fi
fi
if [ -z "$JAVA_HOME" ]; then
if [ `command -v java` ]; then
# If java is in /usr/bin/java, we want /usr
JAVA_HOME="$(dirname $(dirname $(which java)))"
fi
fi
fi
if [ -z "$JAVA_HOME" ]; then # This SHOULD EVALUATE FALSE. APPARENTLY, IT DOES NOT
echo "Error: JAVA_HOME is not set, cannot proceed."
# I Should not be here, but I am!
exit -1
fi
`
发布于 2022-11-27 06:21:16
您的问题在于您正在使用sudo
执行脚本,这在默认情况下不会保留环境变量。
作为一个小的示范,请考虑以下几点:
someone@somewhere:~/my-path$ export SOMEVAR="testmyvar"
someone@somewhere:~/my-path$ echo $SOMEVAR
testmyvar
someone@somewhere:~/my-path$ sudo bash -c 'echo $SOMEVAR'
如您所见,在使用sudo执行命令时,并不会保留所有的环境变量。
幸运的是,有一个非常简单的解决方法:使用sudo -E
(确实保留环境变量,您可以在sudo的手册页中找到该选项)。
所以,在我们的小例子中,稍微高一点:
someone@somewhere:~/my-path$ sudo -E bash -c 'echo $SOMEVAR'
testmyvar
您可以看到-E
选项执行您希望它做的事情!
希望这能解决你的问题:)
https://stackoverflow.com/questions/74579660
复制相似问题