2013-05-12 57 views
1

我正在使用heroku-buildpack-r和heroku-buildpack-ruby與heroku-buildpack-multi一起使用。一切安裝正確,R在本地工作。具有buildpacks的heroku如何處理PATH?

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

this heroku post,環境是由YAML于斌/釋放設置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 

我可以用heroku config:set手動設置PATH,這似乎是唯一的解決方案。

爲什麼buildpack沒有設置廣告的路徑?

回答

0

啓用實驗室用戶環境編譯功能。 這將確保您在編譯期間訪問環境變量 https://devcenter.heroku.com/articles/labs-user-env-compile#enabling

+0

感謝您的建議。但這並不能解決問題。這使得編譯過程中可用的環境。我的問題是,在* buildpack *編譯期間,某些ENV變量應該被設置爲不是。 – jordanpg 2013-05-13 22:47:41

0

當通過Heroku將R和Python連接在一起時,我遇到了一個非常類似的問題。技巧是$ PATH變量在運行時爲每個buildpack重置;這個過程是每個包的事務處理,並且引用一個不是你的heroku配置的PATH:get PATH。我不知道爲什麼。您可以通過分支Heroku構建包並明確添加到$ PATH變量中來實現它。我聽說你可能能夠將「真正的」buildpack回購作爲你的變化的上游,使未來的所有變化都能通過,但我只是爲了讓自己的事情順利進行而分散並且被破壞。

獎金回合:即使在$ PATH更改之後,您可能會遇到問題,因爲R抱怨無法找到任何東西。你需要添加一些特定的.so到你的LD_LIBRARY_PATH(這次是真正的heroku config var)。希望有所幫助!

+0

這是有道理的,但鏈接的Heroku博客文章說,這應該是可能的。 – jordanpg 2013-05-20 03:13:58

+0

我不知道Heroku的位置是什麼,只有我能夠做到的才能讓它工作。 – bwarren2 2013-05-21 05:03:31

1

使用.profile.d腳本來設置環境變量似乎可以解決與其他構建包一起使用時的問題。您可以使用fixes分支進行試用。