我尝试过几种不同的方法来实现这个功能:
building from ports (/usr/ports/www/node)
git clone -> ./configure, ./make
git clone -> ./configure, ./gmake
但最后总是会失败。使用“make”时,我只得到一行输出:扩展嵌入变量时出错。
当使用“gmake”时,我进行了一些构建,然后:Waf:离开目录“/usr/home/{user}/node/build 构建失败:->任务失败(错误#2):{任务:libv8.a SConstruct -> libv8.a}
我确实检查了 FreeBSD 软件包,但他们在 ftp2.freebsd.com 上提供的最新版本是 0.2.6
这在 64 位 BSD 上不起作用吗?
更新:
我在网上找到一些帖子,有人在使用 FreeBSD 64 时遇到了类似的问题,所以我想我也可以在 32 位安装上尝试一下(在 32 位机器上,而不是我最初问题中使用的 64 位机器上)
与 ' 相同的问题制作' 和使用 ' 时出现的完全相同的错误制作‘
构建失败:-> 任务失败(错误 #2):
{任务:libv8.a SConstruct -> libv8.a}
我很想让它在我的 FreeBSD64 上运行,但我开始认为该节点不再适用于 FreeBSD :(
答案1
知道了!!
我首先在 FreeBSD 32 上运行它,然后我能够在 64 上运行它。
这两个过程之间的唯一区别是,对于 32 位,我只需使用以下代码构建 v8:
$ scons
对于 64 位
$ scons os=freebsd arch=x64
以下是我在 FreeBSD amd64 上成功构建/安装节点的步骤:
- 已检查 v8 和 node 的干净副本
在 v8 根中
$ scons os=freebsd arch=x64
...构建输出...
$ cp libv8* /usr/local/lib在节点根内
$./configure \
--prefix=/usr/local \
--shared-v8 \
--shared-v8-includes=/home/jr/v8-read-only/include \
--shared-v8-libpath=/usr/local/lib \
--shared-v8-libname=v8
$gmake
...构建输出...
$ gmake 安装
$ node--version
v0.5.0-pre
答案2
您实际上不需要单独检查节点。以下是对我有用的方法:
$ sudo portmaster devel/pkg-config devel/libexecinfo devel/cmake devel/scons lang/python27
$ git clone https://github.com/joyent/node.git
$ cd node/deps/v8
$ git checkout v0.4.6
$ scons os=freebsd arch=x64
(takes a while to compile v8)
$ sudo cp libv8* /usr/local/lib
$ cd ~/node
$ ./configure \
--prefix=/usr/local \
--shared-v8 \
--shared-v8-includes=/home/mikl/node/deps/v8/include \
--shared-v8-libpath=/usr/local/lib \
--shared-v8-libname=v8
$ gmake
$ sudo gmake install
答案3
我只能使用 v0.5.1。此外,我在安装 hiredis 模块时遇到了一些问题,因为缺少 v8 标头。
假设安装了以下软件包:
- devel/pkg-配置
- 开发/libexecinfo
- 开发/cmake
- 开发/gmake
- 开发/scons
- 语言/python27
- 语言/v8
我使用以下命令使它工作:
cd /root/
$ git clone https://github.com/joyent/node.git
$ git checkout v0.5.1
$ cd ~/node
$ ./configure \
--prefix=/usr/local \
--shared-v8 \
--shared-v8-includes=/usr/local/include \
--shared-v8-libpath=/usr/local/lib \
--shared-v8-libname=v8
$ gmake
$ gmake install
$ cp /usr/local/include/v8* /usr/local/include/node/
与上面的非常相似,没有 gmake 依赖项,而且我必须将标题复制到节点文件夹中,以便 hiredis 模块进行编译。
答案4
cd /usr/ports/www/node && make install clean
对我来说效果很好。所以看起来他们已经修复了端口的问题。