0

我正在尝试将自定义构建包与 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 库目录。

4

3 回答 3

1

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

为了安装 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,我必须设置以下环境变量:

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

使用命令:

heroku config:add LD_LIBRARY_PATH="/app/vendor/couchbase/lib:$LD_LIBRARY_PATH"
于 2013-05-22T11:49:03.463 回答
0

从您的脚本来看,您似乎只是在没有任何进一步工作的情况下解压缩 libcouchbase。您还应该构建并安装它。node.js 客户端的典型魔法咒语是./configure --disable-plugins --disable-examples && make && sudo make install. 我不确定sudoheroku是否需要零件,可能只是make install

于 2013-05-22T08:48:35.747 回答
0

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

于 2013-05-21T21:46:59.900 回答