Rok*_*jic 6 java r amazon-web-services dplyr snowflake-cloud-data-platform
这里的目标是在 AWS Linux 机器上安装dplyr-snowflakedb R包。问题是该rJava软件包无法安装,失败并显示以下错误消息:
“installation of package ‘rJava’ had non-zero exit status”
Run Code Online (Sandbox Code Playgroud)
该dplyr.snowflakedb软件包提出以下建议:
需要安装 rJava 包并使用 Java 8 来支持 SnowflakeDB JDBC 要求。这可能需要:
安装 Java 8
运行 R CMD javareconf 所以 R 使用 Java 8 作为它的 JAVA_HOME
从源代码安装 rJava,以便它可以与 Java 8 链接
尽管尝试了这些策略,rJava 仍然无法安装在 AWS linux 上。
AWS linux 实例运行的是 Java 8:
conda activate ~/anaconda3/envs/R
(R) [ec2-user@ip-xx-xx-xx-xx ~]$ java -version
>>> openjdk version "1.8.0_152-release"
>>> OpenJDK Runtime Environment (build 1.8.0_152-release-1056-b12)
>>> OpenJDK 64-Bit Server VM (build 25.152-b12, mixed mode)
Run Code Online (Sandbox Code Playgroud)
该R CMD javareconf命令被执行:
Java interpreter : /home/ec2-user/anaconda3/envs/JupyterSystemEnv/jre/bin/java
Java version : 1.8.0_152-release
Java home path : /home/ec2-user/anaconda3/envs/JupyterSystemEnv
Java compiler : /home/ec2-user/anaconda3/envs/JupyterSystemEnv/bin/javac
Java headers gen.: /home/ec2-user/anaconda3/envs/JupyterSystemEnv/bin/javah
Java archive tool: /home/ec2-user/anaconda3/envs/JupyterSystemEnv/bin/jar
trying to compile and link a JNI program
detected JNI cpp flags : -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux
detected JNI linker flags : -L$(JAVA_HOME)/jre/lib/amd64/server -ljvm
x86_64-conda_cos6-linux-gnu-cc -I"/home/ec2-user/anaconda3/envs/R/lib/R/include" -DNDEBUG -I/home/ec2-user/anaconda3/envs/JupyterSystemEnv/include -I/home/ec2-user/anaconda3/envs/JupyterSystemEnv/include/linux -DNDEBUG -D_FORTIFY_SOURCE=2 -O2 -I/home/ec2-user/anaconda3/envs/R/include -Wl,-rpath-link,/home/ec2-user/anaconda3/envs/R/lib -fpic -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -I/home/ec2-user/anaconda3/envs/R/include -fdebug-prefix-map=/tmp/build/80754af9/r-base_1570124924484/work=/usr/local/src/conda/r-base-3.6.1 -fdebug-prefix-map=/home/ec2-user/anaconda3/envs/R=/usr/local/src/conda-prefix -c conftest.c -o conftest.o
x86_64-conda_cos6-linux-gnu-cc -shared -L/home/ec2-user/anaconda3/envs/R/lib/R/lib -Wl,-O2 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,--disable-new-dtags -Wl,--gc-sections -Wl,-rpath,/home/ec2-user/anaconda3/envs/R/lib -Wl,-rpath-link,/home/ec2-user/anaconda3/envs/R/lib -L/home/ec2-user/anaconda3/envs/R/lib -Wl,-rpath-link,/home/ec2-user/anaconda3/envs/R/lib -o conftest.so conftest.o -L/home/ec2-user/anaconda3/envs/JupyterSystemEnv/jre/lib/amd64/server -ljvm -L/home/ec2-user/anaconda3/envs/R/lib/R/lib -lR
JAVA_HOME : /home/ec2-user/anaconda3/envs/JupyterSystemEnv
Java library path: /home/ec2-user/anaconda3/envs/JupyterSystemEnv/jre/lib/amd64/server
JNI cpp flags : -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux
JNI linker flags : -L$(JAVA_HOME)/jre/lib/amd64/server -ljvm
Updating Java configuration in /home/ec2-user/anaconda3/envs/R/lib/R
Done.
Run Code Online (Sandbox Code Playgroud)
目前尚不清楚如何rJava从源代码安装或将其链接到 Java 8。
这个相关问题:Can't install rJava on ubuntu system建议运行以下命令:
sudo apt-get install r-cran-rjava
Run Code Online (Sandbox Code Playgroud)
但是 AWS Linux 不使用apt-get,它使用yum,并且与 yum 等效的命令找不到包:
sudo yum install r-cran-rjava
>>> No package r-cran-rjava available.
Run Code Online (Sandbox Code Playgroud)
也许问题是 JAVA_HOME 设置为JupyterSystemEnv而不是Renv?
确保不仅安装 JRE,还安装 JDK:
sudo yum install java-1.8.0-openjdk
sudo yum install java-1.8.0-openjdk-devel
sudo R CMD javareconfinstall.packages("rJava")install.packages(c("RJDBC", "DBI", "dplyr"))install.packages("devtools")devtools::install_github("snowflakedb/dplyr-snowflakedb")如果您在安装 devtools 时遇到问题,请尝试安装依赖项或尝试另一个存储库:
install.packages("devtools", dependencies=TRUE) install.packages('devtools',dependencies=TRUE,
repos='https://stat.ethz.ch/CRAN/')