【问题标题】:Installing R package expm on Heroku在 Heroku 上安装 R 包 expm
【发布时间】:2015-07-06 15:18:57
【问题描述】:

我在 Heroku 实例上安装 R 包 expm 时遇到问题。

我收到以下错误:

* installing *source* package ‘expm’ ...
** package ‘expm’ successfully unpacked and MD5 sums checked
** libs
gcc -std=gnu99 -I/app/vendor/R/lib/R/include -DNDEBUG  -I/usr/local/include    -fpic  -g -O2  -c R_dgebal.c -o R_dgebal.o
In file included from locale.h:4:0,
                 from expm.h:10,
                 from R_dgebal.c:4:
R_dgebal.c: In function ‘ebal_type’:
locale.h:5:19: error: ‘LC_MESSAGES’ undeclared (first use in this function)
 #define _(String) dgettext ("expm", String)
                   ^
R_dgebal.c:11:8: note: in expansion of macro ‘_’
  error(_("argument type='%s' must be a character string of string length 1"),
        ^
locale.h:5:19: note: each undeclared identifier is reported only once for each function it appears in
 #define _(String) dgettext ("expm", String)
                   ^
R_dgebal.c:11:8: note: in expansion of macro ‘_’
  error(_("argument type='%s' must be a character string of string length 1"),
        ^
R_dgebal.c: In function ‘R_dgebal’:
locale.h:5:19: error: ‘LC_MESSAGES’ undeclared (first use in this function)
 #define _(String) dgettext ("expm", String)
                   ^
R_dgebal.c:28:8: note: in expansion of macro ‘_’
  error(_("invalid 'x': not a numeric (classical R) matrix"));
        ^
make: *** [R_dgebal.o] Error 1
ERROR: compilation failed for package ‘expm’
* removing ‘/app/vendor/R/lib/R/library/expm’
ERROR: dependency ‘expm’ is not available for package ‘msm’
* removing ‘/app/vendor/R/lib/R/library/msm’
ERROR: dependency ‘msm’ is not available for package ‘ltm’
* removing ‘/app/vendor/R/lib/R/library/ltm’

我正在使用 R buildpack,但不确定是什么导致了错误。

谢谢!

我打算安装一个朋友写的R包,但是它所依赖的包expm不会安装。

来自 sessionInfo():

> sessionInfo()
R version 3.1.2 (2014-10-31)
Platform: x86_64-unknown-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base   

buildpack 使用此脚本安装 R:https://github.com/virtualstaticvoid/heroku-buildpack-r/blob/master/support/build-r

【问题讨论】:

  • 在我看来,说您“使用 R buildpack”太含糊,无法支持很多建议。
  • 看起来您只是缺少一些需要先安装的依赖项
  • 关于哪些依赖项或如何在 Heroku 实例上安装它们的任何建议?
  • 那个“R build pack”似乎只安装了一个包。它也不包含有关 R 版本的信息。您应该发布 R 安装方式的详细信息、从 R 命令提示符运行的sessionInfo() 的输出,以及您打算安装的软件包的完整详细信息。安装在您的R的实例

标签: r heroku


【解决方案1】:

heroku 构建包中存在错误,已修复。

【讨论】:

    【解决方案2】:

    您可以尝试包含来自here 的二进制文件。 msm 包似乎以二进制形式提供。

    【讨论】:

      【解决方案3】:

      出于不同的原因,我遇到了同样的错误。

      expm 附带了一个expm/src/locale.h 文件,它包含在expm.h 中,并且如果存在<libintl.h>(在一个简单的系统上这可能指向/usr/include/libintl.h),那么它会包含依次包含 C 库的标准 locale.h(例如 /usr/include/locale.h)。

      但是我的$CPATH 环境变量有一个尾随:(它不应该)导致当前目录(在本例中为expm/src/)位于<...> 的搜索路径中。因此libintl.h 循环回到expm/src/locale.h,而标准库locale.h 实际上并没有被包含在内。

      解决方案是修复我的$CPATH

      【讨论】:

        猜你喜欢
        • 2013-05-16
        • 2012-05-14
        • 1970-01-01
        • 2022-10-07
        • 2012-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多