【发布时间】:2020-06-10 09:42:23
【问题描述】:
这里的目标是在 AWS Linux 机器上安装 dplyr-snowflakedb R 包。问题是 rJava 包将无法安装,它失败并显示以下错误消息:
“installation of package ‘rJava’ had non-zero exit status”
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)
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.
不清楚如何从源代码安装rJava 或将其链接到Java 8。
这个相关问题:Can't install rJava on ubuntu system 建议运行以下命令:
sudo apt-get install r-cran-rjava
然而AWS Linux不使用apt-get,它使用yum,和yum等效的命令找不到包:
sudo yum install r-cran-rjava
>>> No package r-cran-rjava available.
也许问题在于 JAVA_HOME 设置为 JupyterSystemEnv 而不是 R 环境?
【问题讨论】:
-
仅与您的问题间接相关。但万一你还不知道。对于 aws+linux 上的 R(Studio),有一张很棒的图片:louisaslett.com/RStudio_AMI。我很确定它应该在那里预先配置。
-
尝试开发版本(使用
install.packages("rJava",,"http://rforge.net"))并考虑根据此问题/答案将 R 降级到 v3.4:superuser.com/questions/1498373/… -
对抗 jared_mamrot,降级到 R v3.4 似乎是多余的。只需确保适当的 jre、jdk、jdbc 驱动程序和这些和 R 的依赖项就足以使包工作,类似于为 ubuntu 所做的工作。
-
您使用哪种 AWS Linux ami?
-
您是否尝试过我的回答中的解决方案?
标签: java r amazon-web-services dplyr snowflake-cloud-data-platform