1

我将heroku-buildpack-r和 heroku-buildpack-ruby 与 heroku-buildpack-multi 配合使用。一切都正确安装,R 在本地工作。

# .buildpacks
https://github.com/heroku/heroku-buildpack-ruby.git
https://github.com/virtualstaticvoid/heroku-buildpack-r.git

根据this heroku post,YAML在bin/release中为buildpacks设置了环境:

cat <<EOF
---
config_vars:
  PATH: /app/vendor/R/bin:bin:/usr/local/bin:/usr/bin:/bin
  R_HOME: /app/vendor/R
  R_INCLUDE: /app/vendor/R/lib64/R/include
EOF

这段代码似乎运行:

R 2.15.1 successfully installed
Using release configuration from last framework R:
---
config_vars:
  PATH: /app/vendor/R/bin:bin:/usr/local/bin:/usr/bin:/bin
  R_HOME: /app/vendor/R
  R_INCLUDE: /app/vendor/R/lib64/R/include

但是,在推送完成后,路径未设置为此:

~ $ echo $PATH
/app/bin:/app/vendor/bundle/ruby/1.9.1/bin:/usr/local/bin:/usr/bin:/bin

我可以手动设置 PATHheroku config:set似乎是唯一的解决方案。

为什么 buildpack 没有按照宣传的方式设置路径?

4

3 回答 3

1

与其他构建包一起使用时,使用.profile.d脚本设置环境变量似乎可以解决问题。您可以使用修复分支进行尝试。

于 2013-10-25T19:20:56.497 回答
0

启用实验室用户环境编译功能。这将确保您在编译期间可以访问环境变量 https://devcenter.heroku.com/articles/labs-user-env-compile#enabling

于 2013-05-13T09:53:58.680 回答
0

通过 Heroku 将 R 和 Python 连接在一起时,我遇到了一个非常相似的问题。诀窍是 $PATH 变量在每个 buildpack 运行时都会被重置;该过程按包进行事务化,并引用不是您的 heroku config:get PATH 的 PATH。我不知道为什么。您可以通过分叉 Heroku buildpack 并显式添加到 $PATH 变量来使其工作。我听说您可能能够将“真正的” buildpack 存储库设置为您的更改的上游,从而使所有未来的更改都通过,但我只是为了让事情顺利进行而分叉和破坏。

奖励回合:即使在 $PATH 更改之后,您也可能会遇到问题,因为 R 抱怨无法找到东西。您需要将一些特定的 .so 添加到您的 LD_LIBRARY_PATH(这次是实际的 heroku 配置变量)。希望有帮助!

于 2013-05-19T18:34:48.917 回答