在Mac OS x上安装RMySQL在Docker中运行错误



我正试图在Docker(实际上是Rocker)容器内运行的R脚本中运行MySQL,但我在" install_packages(…)"步骤上出现错误。我发现的唯一类似的解决方案是特定于运行RedHat Linux(我运行的是Mac OS X 10.15),解决方案包括指向我没有的几个目录。在RStudio下或从命令行运行,RMySQL加载没有问题。

Dockerfile:

FROM rocker/r-ver:latest

RUN mkdir /home/analysis
COPY install_packages.R /home/analysis/install_packages.R
COPY script_basic.R /home/analysis/script_basic.R
RUN Rscript /home/analysis/install_packages.R
CMD Rscript /home/analysis/script_basic.R

R文件:

script_basic。R

library( RMySQL )

install_packages。R

install_packages(“RMySQL”)

命令和响应:

$ docker build -t myapp .
…
Successfully tagged myapp:latest
$ docker run -it --rm myapp
Loading required package: DBI
Error: package or namespace load failed for ‘RMySQL’ in dyn.load(file, DLLpath = DLLpath, ...):
unable to load shared object '/usr/local/lib/R/site-library/RMySQL/libs/RMySQL.so':
libmysqlclient.so.21: cannot open shared object file: No such file or directory
Execution halted
$ 

我相信rocker/r-dev不包括运行它所需的库。没有测试过,但是试试这样做。

Dockerfile

FROM rocker/r-ver:latest

RUN mkdir /home/analysis
RUN apt-get update 
&& apt-get install -y --no-install-recommends libmariadbclient-dev
COPY install_packages.R /home/analysis/install_packages.R
COPY script_basic.R /home/analysis/script_basic.R
RUN Rscript /home/analysis/install_packages.R
CMD Rscript /home/analysis/script_basic.R
您可以在https://cran.r-project.org/web/packages/RMySQL/index.html上找到某些库的需求,如
SystemRequirements:     libmariadb-client-dev | libmariadb-client-lgpl-dev | libmysqlclient-dev (deb), mariadb-devel (rpm), mariadb | mysql-connector-c (brew), mysql56_dev (csw)

和关于如何在RMySQL的githubREADME.md的安装部分安装它们的说明。

(CRAN页面引用了libmysqlclient-dev,但github页面建议"mariadb实现要好得多">)。我不知道这个说法的前提,只是解释为什么我建议一个,而CRAN列出了另一个。

最新更新