在Docker容器中编译Node.js 4.0.0源代码时,使testing失败

在Python 2.7.10 docker容器中编译Node.js 4.0.0源代码时发生了一个make test失败。

首先,我只是用Docker官方的Python 2.7.10镜像运行一个容器,容器有gcc 4.9,make 4.0,python 2.7,它们满足了Node.js 4.0.0的需求。

然后在容器中操作(login到容器的shell)。

在/ usr / src / nodejs中下载Node.js 4.0.0的源代码,并在下面运行

./configure && make && make install && make test

该进程在make test停止,错误信息是:

 === release test-tick-processor === Path: parallel/test-tick-processor nm: '/var/lib/docker/aufs/diff/9f4978cc45a4e08268de6e77e49c6e837ab58eb204846975b6db6e5474769d7b/usr/src/nodejs/out/Release/node': No such file nm: '/var/lib/docker/aufs/diff/843e2bded49837e4846422f3a82a67be3ccc46c3e636e03d8d946c57564468ba/lib/x86_64-linux-gnu/libc-2.19.so': No such file nm: '/var/lib/docker/aufs/diff/843e2bded49837e4846422f3a82a67be3ccc46c3e636e03d8d946c57564468ba/lib/x86_64-linux-gnu/libpthread-2.19.so': No such file nm: '/var/lib/docker/aufs/diff/843e2bded49837e4846422f3a82a67be3ccc46c3e636e03d8d946c57564468ba/lib/x86_64-linux-gnu/libgcc_s.so.1': No such file nm: '/var/lib/docker/aufs/diff/843e2bded49837e4846422f3a82a67be3ccc46c3e636e03d8d946c57564468ba/lib/x86_64-linux-gnu/libm-2.19.so': No such file nm: '/var/lib/docker/aufs/diff/843e2bded49837e4846422f3a82a67be3ccc46c3e636e03d8d946c57564468ba/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20': No such file nm: '/var/lib/docker/aufs/diff/843e2bded49837e4846422f3a82a67be3ccc46c3e636e03d8d946c57564468ba/lib/x86_64-linux-gnu/librt-2.19.so': No such file nm: '/var/lib/docker/aufs/diff/843e2bded49837e4846422f3a82a67be3ccc46c3e636e03d8d946c57564468ba/lib/x86_64-linux-gnu/libdl-2.19.so': No such file nm: '/var/lib/docker/aufs/diff/843e2bded49837e4846422f3a82a67be3ccc46c3e636e03d8d946c57564468ba/lib/x86_64-linux-gnu/ld-2.19.so': No such file assert.js:89 throw new assert.AssertionError({ ^ AssertionError: null == true at Object. (/usr/src/nodejs/test/parallel/test-tick-processor.js:34:1) at Module._compile (module.js:434:26) at Object.Module._extensions..js (module.js:452:10) at Module.load (module.js:355:32) at Function.Module._load (module.js:310:12) at Function.Module.runMain (module.js:475:10) at startup (node.js:117:18) at node.js:951:3 Command: out/Release/node /usr/src/nodejs/test/parallel/test-tick-processor.js 

var fs = require('fs');test-tick-processor.js开始的时候。 我觉得这个命令给了导致问题的错误的目录。

如何解决这个问题,我可以确保Node.js 4.0.0被正确安装?

在写这篇文章的时候,Node.js的test-tick-processortesting失败了。 有一个公开的问题,包括来自核心贡献者的评论(11天前):

看来,这个testing至less在所有的Linux平台上都是片面的(可能在armv7中有更高的失败率)。

一些make test通过的选项包括:

  • 再次运行make test ,看看testing是否通过
  • 通过从源文件中删除文件test/parallel/test-tick-processor.js来禁用testing

require('fs')行不是问题。 fs是一个内置的模块,不需要目录。 如果这条线路炸毁了,你就不会得到AssertionError 。 堆栈跟踪表明断言在文件的第34行失败。