Termux is effectively a single-user system so chown:ing does not make much sense. Without this patch npm fails with EPERM on chown for cache.json when first building the local index. diff -u -r ../node-v0.12.7/deps/npm/lib/cache/update-index.js ./deps/npm/lib/cache/update-index.js --- ../node-v0.12.7/deps/npm/lib/cache/update-index.js 2015-07-09 18:41:19.000000000 -0400 +++ ./deps/npm/lib/cache/update-index.js 2015-07-24 20:45:21.078116384 -0400 @@ -4,7 +4,7 @@ var assert = require('assert') var path = require('path') var mkdir = require('mkdirp') -var chownr = require('chownr') +var chownr = function(path, uid, gid, cb) { cb(null); } var npm = require('../npm.js') var log = require('npmlog') var cacheFile = require('npm-cache-filename')