【问题标题】:How do you install dplyr-snowflakedb and rJava on Amazon Linux?如何在 Amazon Linux 上安装 dplyr-snowflakedb 和 rJava?
【发布时间】: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


【解决方案1】:
  1. 确保您不仅安装了 JRE,还安装了 JDK:

    sudo yum install java-1.8.0-openjdk
    sudo yum install java-1.8.0-openjdk-devel

  2. 配置:
    sudo R CMD javareconf
  3. 在 R 中安装 rJava: install.packages("rJava")
  4. 安装 rJava 并验证它使用的是 Java 8 后,您可以安装 dplyr 和依赖项。 install.packages(c("RJDBC", "DBI", "dplyr"))
  5. 安装 dplyr.snowflakedb
    install.packages("devtools")
    devtools::install_github("snowflakedb/dplyr-snowflakedb")

如果您在安装 devtools 时遇到问题,请尝试安装依赖项或尝试另一个 repo:

  • install.packages("devtools", dependencies=TRUE)
  • install.packages('devtools',dependencies=TRUE, repos='https://stat.ethz.ch/CRAN/')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-04
    • 2017-05-14
    • 2016-03-18
    • 1970-01-01
    • 2015-02-05
    • 2017-04-02
    • 2014-09-19
    • 2020-12-24
    相关资源
    最近更新 更多