部署环境时出现异常一直是比较闹心的事情,更闹心的是网上的解决办法不生效。
现象
npm的报错
安装npm的环境
安装命令
代码语言:javascript复制npm install
报错信息
代码语言:javascript复制make: g : 没有那个文件或目录
### 省略的信息
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
gyp ERR! stack at ChildProcess.emit (events.js:376:20)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:277:12)
### 省略的信息
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! grpc@1.24.2 install: `node-pre-gyp install --fallback-to-build --library=static_library`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the grpc@1.24.2 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
我们通常会关注ERR日志,但很遗憾,这些日志反而导致排查方向错误。实际上,关键的信息并不在这里。 关键在第一行make打印的日志,由于这不是npm打印的信息,没有ERR标识,所以容易被忽略。
pip报错
安装命令
比如使用pip安装依赖时。也有类似的问题
代码语言:javascript复制pip install xxxx
报错信息
代码语言:javascript复制unable to execute 'gcc': No such file or directory
error: command 'gcc' failed with exit status 1
相对npm,pip安装时打印的日志较少,相对容易发现是gcc的问题。
异常分析
报错信息
因此,如果在使用某种语言的包管理安装环境失败,怎么都找不到原因,可以尝试看看有无类似信息。
代码语言:javascript复制make: g : 没有那个文件或目录
make: g : No such file or directory
unable to execute gcc: No such file or directory
这类报错信息表明,在安装包的过程中,有步骤使用编译安装,在g 编译时失败,因为g 未安装。
解决办法
办法也很简单,安装下g 即可。gcc报错类似。
代码语言:javascript复制yum install gcc-c
疑问
为什么使用yum时没有碰到这种情况?
- yum大多不是采用编译的方法安装,打包编译后的文件。
- yum所需依赖可自行解决。
总结
- 注意外部调用的错误日志,它们可能没有Error或高亮标识。
- 关键报错信息可能在出现Error标识之前的日志信中。