在 elasticbeanstalk 上安装 npm canvas - npm 安装错误

Posted

技术标签:

【中文标题】在 elasticbeanstalk 上安装 npm canvas - npm 安装错误【英文标题】:Installing npm canvas on elasticbeanstalk - npm install error 【发布时间】:2014-11-21 20:46:33 【问题描述】:

我正在尝试通过 Elasticbeanstalk 部署在 EC2 上运行的 node.js 服务器。 我遇到的问题是在重建画布 npm 模块期间。 命令'canvas@1.1.6 install:node-gyp rebuild'失败如下:

> canvas@1.1.6 install /tmp/deployment/application/node_modules/canvas
> node-gyp rebuild

gyp ERR! clean error 
gyp ERR! stack Error: EACCES, unlink 'build'
gyp ERR! System Linux 3.10.35-43.137.amzn1.x86_64
gyp ERR! command "node" "/opt/elasticbeanstalk/node-install/node-v0.10.26-linux-x64/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /tmp/deployment/application/node_modules/canvas
gyp ERR! node -v v0.10.26
gyp ERR! node-gyp -v v0.12.2
gyp ERR! not ok 

npm ERR! canvas@1.1.6 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the canvas@1.1.6 install script.
npm ERR! This is most likely a problem with the canvas package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls canvas
npm ERR! There is likely additional logging output above.

问题似乎是npm install canvas 命令没有以适当的权限运行。如果我手动 ssh 进入服务器并运行“sudo npm install canvas”,一切正常。这告诉我所有适当的依赖项都安装得很好(我遵循了这些说明:https://github.com/Automattic/node-canvas/wiki/Installation---Amazon-Linux-AMI-(EC2))。只是 elasticbeanstalk 部署造成了悲痛。

我尝试在部署期间通过向 .ebextensions 内的 .config 文件中添加命令来启用 root 访问权限,如下所示:

option_settings:
  - namespace: aws:elasticbeanstalk:container:nodejs:staticfiles
    option_name: /public
    value: /public
  - option_name: NODE_ENV
    value: production

commands:
  01_enable_rootaccess:
    command: echo Defaults:root \!requiretty >> /etc/sudoers
  02_no-cert:
    command: sudo /opt/elasticbeanstalk/node-install/node-v0.10.10-linux-x64/bin/npm config set ca ""

但它似乎没有任何区别。

我做错了什么,如何让画布在 eb 部署期间安装得很好?

【问题讨论】:

【参考方案1】:

你有画布的所有依赖项吗?为了让它对我有用,我必须安装以下内容:cairocairo-devellibjpeg-develgiflib-devellibpng-devel(应该已经安装)。

您可以通过在您的.ebextensions 之一中添加以下内容来确保所有这些都已安装:

packages:
    yum:
        cairo: []
        cairo-devel: []
        libjpeg-devel: []
        giflib-devel: []
        libpng-devel: []

我认为 canvas 可能会尝试安装它没有权限但没有权限的东西。

试试看,然后告诉我它是如何工作的。

【讨论】:

这应该放在:/.ebextensions/node.config - 正确吗?

以上是关于在 elasticbeanstalk 上安装 npm canvas - npm 安装错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Elastic Beanstalk 上使用 Yarn 安装包

如何在 Elastic Beanstalk 上安装 matplotlib

_imagingft c 模块未安装 amazon linux elasticbeanstalk

使用 pm2 无法访问 ElasticBeanstalk 环境变量

elasticbeanstalk的捆绑安装错误

如何在 Amazon 的 Elastic Beanstalk 上安装 Python 脚本?