如何为依赖于 rJava 的包配置 .travis.yml?
How to configure a .travis.yml for a package that depends on rJava?
我(和一些同事)一直在开发一个依赖于 rJava 的包。我们连接的程序需要 Java 11+ 到 运行,我们在尝试配置 .travis.yml 文件时遇到了一些问题。运行
我尝试遵循 的解决方案(同时将它们调整为 Java 11),但 none 似乎有效。首先我尝试了:
language: r
warnings_are_errors: true
sudo: required
cache: packages
apt_packages:
- r-cran-rjava
但我收到以下错误消息:
Failed with error: ‘.onLoad failed in loadNamespace() for 'rJava', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object '/home/travis/R/Library/rJava/libs/rJava.so':
libjvm.so: cannot open shared object file: No such file or directory’
然后我尝试了第二种方法:
language: r
warnings_are_errors: true
sudo: required
cache: packages
apt_packages:
- default-jdk
before_install:
- export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
- export PATH=$PATH:$JAVA_HOME/bin
- export LD_LIBRARY_PATH=/usr/lib/jvm/java-11-openjdk-amd64/lib
- sudo R CMD javareconf
关于我遇到此错误消息的原因:
sudo: R: command not found
The command "sudo R CMD javareconf" failed and exited with 1 during .
我试过不使用 sudo
,但后来我发现我没有所需的权限。
我觉得解决方案可能相当明显,但我已经坚持了很长一段时间。
这是因为 R
在用户的 PATH 中,但是 sudo
忽略它并且只在几个系统位置中查找。这可以通过在用户级别解析完整路径轻松解决:
- sudo $(which R) CMD javareconf
这会将 R 的完整路径插入到 sudo 命令中。
请注意,javareconf
脚本似乎足够智能,可以在标准位置检测到 Java,因此无需导出 JAVA_HOME
、PATH
或 LD_LIBRARY_PATH
在调用它之前。
我最终得到了以下 .travis.yml
文件:
language: r
cache: packages
warnings_are_errors: true
sudo: required
apt_packages:
- r-cran-rjava
before_install:
- sudo $(which R) CMD javareconf
我(和一些同事)一直在开发一个依赖于 rJava 的包。我们连接的程序需要 Java 11+ 到 运行,我们在尝试配置 .travis.yml 文件时遇到了一些问题。运行
我尝试遵循
language: r
warnings_are_errors: true
sudo: required
cache: packages
apt_packages:
- r-cran-rjava
但我收到以下错误消息:
Failed with error: ‘.onLoad failed in loadNamespace() for 'rJava', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object '/home/travis/R/Library/rJava/libs/rJava.so':
libjvm.so: cannot open shared object file: No such file or directory’
然后我尝试了第二种方法:
language: r
warnings_are_errors: true
sudo: required
cache: packages
apt_packages:
- default-jdk
before_install:
- export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
- export PATH=$PATH:$JAVA_HOME/bin
- export LD_LIBRARY_PATH=/usr/lib/jvm/java-11-openjdk-amd64/lib
- sudo R CMD javareconf
关于我遇到此错误消息的原因:
sudo: R: command not found
The command "sudo R CMD javareconf" failed and exited with 1 during .
我试过不使用 sudo
,但后来我发现我没有所需的权限。
我觉得解决方案可能相当明显,但我已经坚持了很长一段时间。
这是因为 R
在用户的 PATH 中,但是 sudo
忽略它并且只在几个系统位置中查找。这可以通过在用户级别解析完整路径轻松解决:
- sudo $(which R) CMD javareconf
这会将 R 的完整路径插入到 sudo 命令中。
请注意,javareconf
脚本似乎足够智能,可以在标准位置检测到 Java,因此无需导出 JAVA_HOME
、PATH
或 LD_LIBRARY_PATH
在调用它之前。
我最终得到了以下 .travis.yml
文件:
language: r
cache: packages
warnings_are_errors: true
sudo: required
apt_packages:
- r-cran-rjava
before_install:
- sudo $(which R) CMD javareconf