2013-05-12 2 views
1

저는 heroku-buildpack-multi와 함께 heroku-buildpack-r과 heroku-buildpack-ruby를 사용하고 있습니다. 모든 것이 올바르게 설치되고 R은 로컬에서 작동합니다.heroku와 buildpacks는 PATH를 어떻게 처리합니까?

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

this heroku post에 따르면, 환경 빈/릴리스의 YAML에 의해 buildpacks 설정됩니다 :

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 

을하지만, :

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 

이 코드 조각을 실행하는 것 경로가 푸시 완료 후 다음과 같이 설정되지 않았습니다.

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

heroku config:set으로 수동으로 PATH를 설정할 수 있습니다. 유일한 해결책 인 것 같습니다.

왜 buildpack은 광고 된대로 경로를 설정하지 않습니까?

답변

0

labs user-env-compile 기능을 사용합니다. 이에게 Heroku를 통해 R 및 Python을 함께 배선 할 때 나는 매우 비슷한 문제를 공격하면 컴파일 https://devcenter.heroku.com/articles/labs-user-env-compile#enabling

+0

제안 해 주셔서 감사합니다. 그러나 문제가 해결되지는 않습니다. 따라서 슬러그 컴파일 중에 환경을 사용할 수 있습니다. 내 문제는 * buildpack * 컴파일 중에 특정 ENV 변수가 설정되어 있다고 가정합니다. – jordanpg

0

동안 환경 변수에 액세스 할 수 있는지 확인합니다. 트릭은 $ PATH 변수가 실행될 때 각 빌드 팩에 대해 재설정된다는 것입니다. 프로세스는 팩마다 트랜잭션 화되며 heroku config가 아닌 PATH를 참조합니다. get PATH. 나는 이유를 모른다. 당신은 Heroku 빌드 팩을 포크하고 명시 적으로 $ PATH 변수에 추가하여 작동하게 만들 수 있습니다. "진실한"빌드 팩 레포를 변경의 업스트림으로 설정하여 이후의 모든 변경 사항을 통과시킬 수 있다고 들었지만 일을 스스로 해결하기 위해 포크와 맹 글링 만했습니다.

보너스 라운드 :이 $ PATH 변경 후에도 R이 사물을 찾지 못한다고 불평하면 문제가 발생할 것입니다. LD_LIBRARY_PATH에 특정 .so를 추가해야합니다 (이번에는 실제 heroku config var). 희망이 도움이됩니다!

+0

연결된 Heroku 블로그 게시물에 정확하게 이것이 가능해야한다는 것을 제외하고는 말이됩니다. – jordanpg

+0

나는 Heroku의 위치가 무엇인지 알지 못한다. – bwarren2

1

.profile.d 스크립트를 사용하여 환경 변수를 설정하면 다른 빌드 팩과 함께 사용할 때 문제가 해결되는 것으로 보입니다. fixes 분기를 사용하여 시험해 볼 수 있습니다.

관련 문제