python - Instalando heroku de compilaciones personalizadas y problema con las rutas de la Biblioteca
geoip buildpack (2)
Resolví ingenuamente un problema similar modificando el script de compilación heroku-buildpack-python para no anular las variables LD_LIBRARY_PATH e INCLUDE_PATH, así como para agregar las variables LD_LIBRARY_PATH e INCLUDE_PATH actuales durante su exportación para no sobrescribirlas.
Aquí está mi bifurcación: https://github.com/jasrusable/heroku-buildpack-python
Estoy intentando instalar una compilación personalizada en heroku, así que estoy usando una variedad de formas para intentar la instalación de una tercera parte usando los paquetes de compilación. En mi archivo .buildpacks tengo:
https://github.com/ddollar/heroku-buildpack-apt
https://github.com/heroku/heroku-buildpack-python.git
y en mi Aptfile
tengo lo siguiente: libgeoip-dev
que es un requisito previo para el geoip que se instala con los requirements.txt
( GeoIP==1.3.2
)
Aquí están mis variables de entorno:
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
El mensaje de error que estoy recibiendo es:
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
¿Cuál es la forma más inteligente de solucionar esto? Supongo que no puedo cambiar el lugar donde se instala el administrador de paquetes. ¿Hay alguna forma de evitar esto?
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
contra
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"
El heroku-buildpack-python
no está jugando bien con heroku-buildpack-apt
ya que está agrupando variables importantes para que gcc
vincule su extensión de python con la geoip
lib. Archivo de un error en el rastreador de problemas.
Rastreador de problemas: https://github.com/heroku/heroku-buildpack-python/issues