linux - Heroku 构建包 : permission denied on npm install in bash script

标签 linux bash heroku npm buildpack

我正在创建一个 Heroku 构建包,并在使用构建包进行部署时获得 npm 权限被拒绝。这是构建日志中的错误,运行 npm install 时权限被拒绝:

remote: /tmp/buildpack_47ff480d86444378a118f5abcd37cc34/bin/compile:       
35: /tmp/tools/npm: Permission denied

我将 npm 打包在一个 tar.gz 中并使用它。

在我的编译文件中:

#!/bin/sh

export BUILD_DIR=$1
export CACHE_DIR=$2
export ENV_DIR=$3

export TOOLS_URL="https://s3.amazonaws.com/heroku-hzhu/tools.tar.gz"
export TOOLS_DIR="/tmp/tools"

#---- install pre-built tools from tarball ---------------------------------

curl -o $(dirname ${TOOLS_DIR})/tools.tar.gz ${TOOLS_URL}
(cd $(dirname ${TOOLS_DIR}) ; tar -xzvf tools.tar.gz; rm -f  tools.tar.gz)

# add node and npm to path
export NODE_HOME=${TOOLS_DIR}/node-v0.10.29-linux-x64
export PATH=${PATH}:${NODE_HOME}/bin

export NPM_HOME=${TOOLS_DIR}/npm
export PATH=${PATH}:${NPM_HOME}/bin

#---- compile app --------------------------------------------------------------

(cd ${BUILD_DIR} ; ${TOOLS_DIR}/lein cljsbuild once dev)

#---- install node packages ----------------------------------------------------

(cd ${BUILD_DIR} ; ${TOOLS_DIR}/npm install)

最佳答案

npmnode 在打包或解压它们时是否可能缺少可执行位?这就是这个“权限被拒绝”错误在我看来的样子。

你能在本地测试吗?

此外,您是否出于特定原因依赖于 node 0.10.29?我问是因为最新的稳定 node 是 0.10.36,它包含一些重要的安全修复程序。 (不过,它们可能不会影响您。)

关于linux - Heroku 构建包 : permission denied on npm install in bash script,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28787941/

相关文章:

linux - 统计合理地测量程序运行时间

c - (Linux/X11) 具有纯色背景的透明窗口上的透明 opengl 对象显示窗口后面的内容

c - Hook 框架(Detours-like)

java - Install4J linux 安装程序失败并出现 "no server JVM at"错误,除非您使用 -J-client

bash - 如何修改 Bash 中的调用堆栈?

bash - 如何在 bash 中使用 .* 通配符但排除父目录 (..)?

bash - 如何在保持流分离的同时将 stdout+stderr 重定向到一个文件?

node.js - Heroku + Socket.io 有时有效有时不行

python - Heroku 上的 Flask 存在 MailGun 配置问题

ruby-on-rails - Heroku 安装 sqlite3 即使它不是依赖项