Heroku buildpack:在bash脚本中npm install上的权限被拒绝

时间:2015-02-28 22:57:32

标签: linux bash heroku npm buildpack

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

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

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

在我的compile文件中:

#!/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)

1 个答案:

答案 0 :(得分:1)

当您打包它们或解压它们时,npmnode是否可能缺少可执行位?这就是“允许拒绝”这个错误对我来说的样子。

你可以在本地进行测试吗?

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