2015-12-11 8 views
18

Ich versuche, eine benutzerdefinierte Build auf Heroku zu installieren, also verwende ich eine Vielzahl von Möglichkeiten, eine dritte Teilinstallation mit den Buildpacks zu versuchen. In meiner .buildpacks Datei habe ich:Installieren von benutzerdefinierten Builds Heroku und Problem mit Bibliothekspfaden

https://github.com/ddollar/heroku-buildpack-apt 
https://github.com/heroku/heroku-buildpack-python.git 

und in meinem Aptfile ich habe folgendes: libgeoip-dev, die eine Voraussetzung für geoip ist, die mit dem requirements.txt (GeoIP==1.3.2) installiert ist

Hier sind meine Umgebung Variablen:

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 

Die Fehlermeldung, die ich bekommen habe ist:

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 

Was ist der klügste Weg, dies zu beheben? I.e. Ich denke, ich kann nicht ändern, wo der Paketmanager installiert wird. Gibt es einen Weg dahin?

Antwort

5

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

# 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 

gegen

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

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" 

Die heroku-buildpack-python buildpack nicht mit heroku-buildpack-apt buildpack schön spielt, da sie wichtige Variablen für gcc ist clobbering Ihre Python-Erweiterung zu verbinden mit die geoip lib. Einen Fehler im Issue Tracker einreichen.

Issue Tracker: https://github.com/heroku/heroku-buildpack-python/issues

1

ich naiverweise ein ähnliches Problem gelöst durch Modifizieren Heroku-buildpack-Pythons Kompilierung-Skript nicht ungesetzt LD_LIBRARY_PATH und INCLUDE_PATH sowie anhänge das aktuelle LD_LIBRARY_PATH und INCLUDE_PATH Variablen während des Exports um um sie nicht zu überschreiben.

Hier ist meine Gabel: https://github.com/jasrusable/heroku-buildpack-python

Verwandte Themen