Heroku NodeJS + CouchBase自定义Buildpack

时间:2013-05-21 15:46:59

标签: heroku couchbase buildpack

我正在尝试将自定义buildpack与NodeJS和CouchBase模块/库放在一起

我已经使用Vulcan来构建libcouchbase和libvbucket并获取buildpack以检索和解压缩两者的tgz文件。

那里的一切看起来都不错,但是当npm尝试安装couchbase模块时我收到错误:

我收到了一堆错误,但这一行:

“../ src / couchbase_impl.h:52:36:警告:libcouchbase / couchbase.h:没有这样的文件或目录”

让我觉得它找不到libcouchbase库(这是可能的,因为它们不在通常的位置)。

我尝试在Config Vars中使用CPPFLAGS =“ - I / app / vendor / couchbase / include / libcouchbase”添加正确的路径,并且只是在编译阶段将其导出,但仍然没有运气。

以下是Heroku部署输出和编译/发布buildpack文件的要点: https://gist.github.com/ahamidi/5620503

非常感谢任何帮助。

谢谢,

阿里

[更新1]

我已经取得了一些进展,现在我可以在部署到Heroku时获得要编译的slug。

关键是要确定CouchNode在添加自定义目录时要查找的ENV变量。

在这种情况下,Env变量为EXTRA_CPPFLAGS和EXTRA_LDFLAGS。

所以我更新了编译文件以包含以下内容:

export EXTRA_CPPFLAGS="-I$BUILD_DIR/vendor/couchbase/include" 
export EXTRA_LDFLAGS="-L$BUILD_DIR/vendor/couchbase/lib -Wl,-rpath,$BUILD_DIR/vendor/couchbase/lib"

slug编译并部署了应用程序,但我现在在日志中出现了不同的错误:

Error: libcouchbase.so.2: cannot open shared object file: No such file or directory

所以看起来Node看不到libcouchbase库目录。

3 个答案:

答案 0 :(得分:0)

您应该设置CPPFLAGS="-I/app/vendor/couchbase/include" LDFLAGS="-L/app/vendor/couchbase/include -lcouchbase"

答案 1 :(得分:0)

从您的脚本

看起来您只是在没有任何进一步工作的情况下解压缩libcouchbase。你也应该构建它并安装。 node.js客户端的典型魔法将为./configure --disable-plugins --disable-examples && make && sudo make install。我不确定heroku是否需要sudo部分,可能只是make install

答案 2 :(得分:0)

对于任何好奇或遇到类似问题的人来说,这对我有用。

为了安装couchbase npm模块我必须告诉它在哪里找到libcouchbase库(在编译文件中):

export EXTRA_CPPFLAGS="-I$BUILD_DIR/vendor/couchbase/include" 
export EXTRA_LDFLAGS="-L$BUILD_DIR/vendor/couchbase/lib -Wl,-rpath,$BUILD_DIR/vendor/couchbase/lib"

然后,为了在我的应用程序中需要 couchbase,我必须设置以下Env变量:

LD_LIBRARY_PATH="/app/vendor/couchbase/lib:$LD_LIBRARY_PATH"

使用命令:

heroku config:add LD_LIBRARY_PATH="/app/vendor/couchbase/lib:$LD_LIBRARY_PATH"