使用Docker安装rJava软件包

如何解决使用Docker安装rJava软件包

我正在尝试使用 Dockerfile 在我的 RStudio Docker映像中安装'rJava'软件包:

FROM rocker/tidyverse:3.6.1

RUN mkdir -p /rstudio
RUN mkdir -p /rscripts

RUN apt-get update && \
    apt-get install -y openjdk-11-jdk && \
    apt-get install -y liblzma-dev && \
    apt-get install -y libbz2-dev

RUN R -e "install.packages(c('rJava','mailR'))"

SO post之后,我在apt-get命令中添加了以上部分,但仍然出现相同的错误:

java库: '-L / usr / lib / jvm / java-8-openjdk-amd64 / jre / lib / amd64 / server -ljvm' 检查Java运行时是否正常... ./configure:3766行: / usr / bin / java:没有这样的文件或目录,没有配置:错误:Java 解释器“ / usr / bin / java”不起作用错误:配置失败 包“ rJava”

因此缺少文件或目录,但我不知道应该进行哪些更改。

[编辑1]:

因此,按照Dirk的建议,我进入了rstudio容器并运行了apt-get install r-cran-rjava,这似乎很有效。
但是,当我安装rJava软件包时,出现了新错误:

错误:无法编译简单的JNI程序。确保您有Java 已安装开发套件并在R中正确注册。如果有疑问, 以根用户身份重新运行“ R CMD javareconf”。

我试图再次在容器中输入并运行R CMD javareconf,但这并没有改变错误。我还尝试了在此article上找到的以下命令:

sudo apt-get install default-jre
sudo apt-get install default-jdk

但是我仍然得到:

无法编译简单的JNI程序。

解决方法

这是我在Debian / Ubuntu上下文中已经给出的类似答案的重复。使用Docker的事实并不重要:您应该 still 只需安装二进制文件!

edd@rob:~$ docker run --rm -ti r-base bash
root@ef4bb9726a21:/# apt update -qq
73 packages can be upgraded. Run 'apt list --upgradable' to see them.
root@ef4bb9726a21:/# apt install --no-install-recommends -y r-cran-rjava                                  
Reading package lists... Done                                                                            
Building dependency tree                                                                                 
Reading state information... Done                                                                        
The following additional packages will be installed:                                          
  ca-certificates-java default-jre default-jre-headless java-common libasound2 libasound2-data libavahi-client3 libavahi-common-data libavahi-common3 libcups2 libdbus-1-3 libdrm-amdgpu1 libdrm-common
  libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libdrm2 libedit2 libgif7 libgl1 libgl1-mesa-dri libglapi-mesa libglvnd0 libglx-mesa0 libglx0 liblcms2-2 libllvm10 libnspr4 libnss3 libpciaccess0 libpcsclite1
  libsensors-config libsensors5 libsqlite3-0 libvulkan1 libx11-xcb1 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-sync1 libxdamage1 libxfixes3 libxi6 libxshmfence1 libxtst6 libxxf86vm1 libz3-4
  openjdk-11-jre openjdk-11-jre-headless                                                                 
[.... many lines skipped ....]
Running hooks in /etc/ca-certificates/update.d...

done.
done.
root@ef4bb9726a21:/# R

R version 4.0.3 (2020-10-10) -- "Bunny-Wunnies Freak Out"
Copyright (C) 2020 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
[...some lines skipped...]
Type 'demo()' for some demos,'help()' for on-line help,or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

> library(rJava)
> 
,

我找到了一个github存储库,建议在安装R软件包rJava之前在Dockerfile中添加以下步骤,并且可以正常工作:

RUN apt-get -y update && apt-get install -y \
   default-jdk \
   r-cran-rjava \
   && apt-get clean \
   && rm -rf /var/lib/apt/lists/
,

Dirk 的答案对您不起作用的原因是因为您使用的是 rocker/tidyverse,而不是 Dirk 正在使用的 r-base

在 Docker Hub 上的 rocker/tidyverse documentation 中,他们不鼓励使用 apt install --no-install-recommends -y r-cran-rjava

不要使用 apt-get install r-cran-* 在此堆栈上安装 R 包。请求的 R 版本和所有 R 包都从版本稳定堆栈中的源代码安装。从 apt 安装 R 包(例如 r-cran-* 包)将安装 R 版本和为稳定的 debian 版本构建的包的版本(例如 debian:stretch),为您提供第二个 R 版本和不同的版本包。请使用 install.packages() R 函数(或 install2.r 脚本)从源代码安装 R 包,并且仅使用 apt 安装必要的系统库(例如 libxml2)。如果您只想使用 apt-get 安装来自预构建二进制文件的最新版本的软件包,请考虑改用 r-base 堆栈。

由于 rJava 应该与 apt install r-cran-rjava 一起安装,但是 rocker/... 基础映像明确告诉您不要这样做,看来您将无法使用 {{ 1}} 与任何 rJava 基本图像..

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)> insert overwrite table dwd_trade_cart_add_inc > select data.id, > data.user_id, > data.course_id, > date_format(
错误1 hive (edu)> insert into huanhuan values(1,'haoge'); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive> show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 <configuration> <property> <name>yarn.nodemanager.res