在 Ubuntu 上安装 Composer 时出错

Error installing Composer on Ubuntu

我正在尝试在 Ubuntu 14.04 上安装 Composer。我能够安装先决条件。安装作曲家时,出现以下错误。如何解决?

npm install -g composer-cli
npm WARN deprecated fs-promise@1.0.0: Use mz or fs-extra^3.0 with Promise Support
npm WARN deprecated crypto@0.0.3: This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in.
npm WARN deprecated node-uuid@1.4.8: Use uuid module instead
npm WARN deprecated jade@1.11.0: Jade has been renamed to pug, please install the latest version of pug instead of jade
npm WARN deprecated transformers@2.1.0: Deprecated, use jstransformer
npm WARN deprecated nodemailer@2.7.2: All versions below 4.0.1 of Nodemailer are deprecated. See https://nodemailer.com/status/
/root/.nvm/versions/node/v6.11.2/bin/composer -> /root/.nvm/versions/node/v6.11.2/lib/node_modules/composer-cli/cli.js

> hashtable@2.0.2 install /root/.nvm/versions/node/v6.11.2/lib/node_modules/composer-cli/node_modules/hashtable
> node-gyp configure build

sh: 1: node-gyp: Permission denied
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.1.2 (node_modules/composer-cli/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.1.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! hashtable@2.0.2 install: `node-gyp configure build`
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the hashtable@2.0.2 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2017-08-22T16_31_22_412Z-debug.log

所以首先你不应该将 Hyperledger Composer 安装为 'root'。在继续之前,您需要阅读此处的文档 https://hyperledger.github.io/composer/installing/development-tools.html

所以从根本上说,这是一个 npm 问题(因为当您 npm install 作为 'root' 或 'sudo' 安装模块的权限时,它会导致 npm 出现问题)。

我建议您在 Ubuntu 系统中创建一个非根用户。然后以该用户身份登录。然后使用上面 link 中提供的 prereqs-ubuntu.sh 脚本安装先决条件。然后按照说明,以非特权用户身份安装。

修复非 root 安装 npm 问题的正常途径,是此处显示的其中之一 https://docs.npmjs.com/getting-started/fixing-npm-permissions

当您全局安装 composer 模块时(例如 composer-cli),您应该使用指定的非 root 用户进行安装,如前所述。如果存在问题(例如,在 Ubuntu 上具有对位于 /usr/local 等系统目录中的 write/update 节点目录的权限)- 一种解决方案(但请参见前面的 link)执行npm 安装到您有权访问的目录 - 而不是求助于 root 或超级用户访问权限,因为这不是好的做法。这是将 npm 前缀设置为给定目录的方法,...

"npm config set prefix /home/myuser/"

在这种情况下,全局二进制文件放置在您的 PATH 中的 /home/myuser/bin 中,模块放置在 /home/myuser/lib ...