首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >安装自定义版本heroku和库路径问题

安装自定义版本heroku和库路径问题
EN

Stack Overflow用户
提问于 2015-12-11 17:44:27
回答 2查看 1.3K关注 0票数 19

我正在尝试在heroku上安装自定义构建,因此我尝试使用buildpack安装第三部分。在我的.buildpacks文件中有:

代码语言:javascript
复制
https://github.com/ddollar/heroku-buildpack-apt
https://github.com/heroku/heroku-buildpack-python.git

在我的Aptfile中,我有以下内容:libgeoip-dev,它是随requirements.txt (GeoIP==1.3.2)安装的geoip的先决条件。

以下是我的环境变量:

代码语言:javascript
复制
remote: C_INCLUDE_PATH is /app/.heroku/vendor/include:/app/.heroku/vendor/include:/app/.heroku/python/include
remote: CPATH is /tmp/build_xxxxx/.apt/usr/include:
remote: LD_LIBRARY_PATH is /app/.heroku/vendor/lib:/app/.heroku/vendor/lib:/app/.heroku/python/lib

我得到的错误消息是:

代码语言:javascript
复制
remote:        building 'GeoIP' extension
remote:        creating build
remote:        creating build/temp.linux-x86_64-2.7
remote:        gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/app/.heroku/python/include/python2.7 -c py_GeoIP.c -o build/temp.linux-x86_64-2.7/py_GeoIP.o -fno-strict-aliasing
remote:        creating build/lib.linux-x86_64-2.7
remote:        gcc -pthread -shared build/temp.linux-x86_64-2.7/py_GeoIP.o -lGeoIP -o build/lib.linux-x86_64-2.7/GeoIP.so
remote:        /usr/bin/ld: cannot find -lGeoIP
remote:        collect2: error: ld returned 1 exit status
remote:        error: command 'gcc' failed with exit status 1

解决这个问题最聪明的方法是什么?也就是说,我想我不能改变包管理器的安装位置。有什么办法可以解决这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-20 06:12:50

https://github.com/heroku/heroku-buildpack-python/blob/master/bin/compile#L99-L107

代码语言:javascript
复制
# Prepend proper path buildpack use.
export PATH=$BUILD_DIR/.heroku/python/bin:$BUILD_DIR/.heroku/vendor/bin:$PATH
export PYTHONUNBUFFERED=1
export LANG=en_US.UTF-8
export C_INCLUDE_PATH=/app/.heroku/vendor/include:$BUILD_DIR/.heroku/vendor/include:/app/.heroku/python/include
export CPLUS_INCLUDE_PATH=/app/.heroku/vendor/include:$BUILD_DIR/.heroku/vendor/include:/app/.heroku/python/include
export LIBRARY_PATH=/app/.heroku/vendor/lib:$BUILD_DIR/.heroku/vendor/lib:/app/.heroku/python/lib
export LD_LIBRARY_PATH=/app/.heroku/vendor/lib:$BUILD_DIR/.hero ku/vendor/lib:/app/.heroku/python/lib
export PKG_CONFIG_PATH=/app/.heroku/vendor/lib/pkg-config:$BUILD_DIR/.heroku/vendor/lib/pkg-config:/app/.heroku/python/lib/pkg-config

https://github.com/ddollar/heroku-buildpack-apt/blob/master/bin/compile#L75-L81

代码语言:javascript
复制
export PATH="$BUILD_DIR/.apt/usr/bin:$PATH"
export LD_LIBRARY_PATH="$BUILD_DIR/.apt/usr/lib/x86_64-linux-gnu:$BUILD_DIR/.apt/usr/lib/i386-linux-gnu:$BUILD_DIR/.apt/usr/lib:$LD_LIBRARY_PATH"
export LIBRARY_PATH="$BUILD_DIR/.apt/usr/lib/x86_64-linux-gnu:$BUILD_DIR/.apt/usr/lib/i386-linux-gnu:$BUILD_DIR/.apt/usr/lib:$LIBRARY_PATH"
export INCLUDE_PATH="$BUILD_DIR/.apt/usr/include:$INCLUDE_PATH"
export CPATH="$INCLUDE_PATH"
export CPPPATH="$INCLUDE_PATH"
export PKG_CONFIG_PATH="$BUILD_DIR/.apt/usr/lib/x86_64-linux-gnu/pkgconfig:$BUILD_DIR/.apt/usr/lib/i386-linux-gnu/pkgconfig:$BUILD_DIR/.apt/usr/lib/pkgconfig:$PKG_CONFIG_PATH"

heroku-buildpack-python构建包不能很好地使用heroku-buildpack-apt构建包,因为它破坏了gccgeoip扩展与python库链接起来的重要变量。在问题跟踪器上提交一个bug。

问题跟踪器:https://github.com/heroku/heroku-buildpack-python/issues

票数 5
EN

Stack Overflow用户

发布于 2016-01-04 02:11:24

我天真地解决了类似的问题,修改了heroku-buildpack-python的编译脚本,不取消设置LD_LIBRARY_PATH和INCLUDE_PATH,并在导出过程中附加了当前的LD_LIBRARY_PATH和INCLUDE_PATH变量,这样就不会覆盖它们。

这是我的分支:https://github.com/jasrusable/heroku-buildpack-python

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34220398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档