Index: lib/build.js --- lib/build.js.orig 2015-04-10 14:29:37.000000000 +0200 +++ lib/build.js 2015-04-12 16:22:18.649028557 +0200 @@ -217,7 +217,7 @@ function linkMans (pkg, folder, parent, gtop, cb) { if (!pkg.man || !gtop || process.platform === "win32") return cb() - var manRoot = path.resolve(npm.config.get("prefix"), "share", "man") + var manRoot = path.resolve(npm.config.get("prefix"), "man") log.verbose("linkMans", "man files are", pkg.man, "in", manRoot) // make sure that the mans are unique. Index: lib/cache/add-local-tarball.js --- lib/cache/add-local-tarball.js.orig 2015-04-10 14:29:37.000000000 +0200 +++ lib/cache/add-local-tarball.js 2015-04-12 16:22:18.659790749 +0200 @@ -167,7 +167,7 @@ if (er) return cb(er) var read = fs.createReadStream(tgz) var write = writeStream(target, { mode: npm.modes.file }) - var fin = cs.uid && cs.gid ? chown : done + var fin = cs.uid && cs.gid ? done : done read.on("error", cb).pipe(write).on("error", cb).on("close", fin) }) Index: lib/cache/add-local.js --- lib/cache/add-local.js.orig 2015-04-10 14:29:37.000000000 +0200 +++ lib/cache/add-local.js 2015-04-12 16:22:18.659790749 +0200 @@ -97,9 +97,7 @@ return cb(er) } - if (!cs || isNaN(cs.uid) || isNaN(cs.gid)) wrapped() - - chownr(made || tgz, cs.uid, cs.gid, wrapped) + wrapped() }) }) }) Index: lib/cache/add-remote-git.js --- lib/cache/add-remote-git.js.orig 2015-04-10 14:29:37.000000000 +0200 +++ lib/cache/add-remote-git.js 2015-04-12 16:23:25.529241196 +0200 @@ -227,19 +227,7 @@ return cb(er) } - chownr(cachedRemote, cs.uid, cs.gid, function (er) { - if (er) { - log.error( - 'setPermissions', - 'Failed to change git repository ownership under npm cache for', - cachedRemote - ) - return cb(er) - } - - log.verbose('setPermissions', from, 'set permissions on', cachedRemote) resolveHead(from, cloneURL, treeish, cachedRemote, cb) - }) }) } } @@ -378,15 +366,7 @@ mkdir(templates, function (er) { if (er) return cb(er) - // Ensure that both the template and remotes directories have the correct - // permissions. - fs.chown(templates, stats.uid, stats.gid, function (er) { - if (er) return cb(er) - - fs.chown(remotes, stats.uid, stats.gid, function (er) { - cb(er, stats) - }) - }) + cb(undefined, stats); }) }) } Index: lib/cache/get-stat.js --- lib/cache/get-stat.js.orig 2015-04-10 14:29:37.000000000 +0200 +++ lib/cache/get-stat.js 2015-04-12 16:22:18.659790749 +0200 @@ -66,9 +66,6 @@ if (!made) return cb(er, cacheStat) - // ensure that the ownership is correct. - chownr(made, cacheStat.uid, cacheStat.gid, function (er) { - return cb(er, cacheStat) - }) + return cb(undefined, cacheStat) } } Index: lib/npm.js --- lib/npm.js.orig 2015-04-10 14:29:37.000000000 +0200 +++ lib/npm.js 2015-04-12 16:22:18.659790749 +0200 @@ -416,7 +416,7 @@ Object.defineProperty(npm, "globalDir", { get : function () { return (process.platform !== "win32") - ? path.resolve(npm.globalPrefix, "lib", "node_modules") + ? path.resolve(npm.globalPrefix, "lib", "node", "usr", "node_modules") : path.resolve(npm.globalPrefix, "node_modules") } , enumerable : true Index: node_modules/node-gyp/lib/node-gyp.js --- node_modules/node-gyp/lib/node-gyp.js.orig 2015-04-10 14:29:37.000000000 +0200 +++ node_modules/node-gyp/lib/node-gyp.js 2015-04-12 16:22:18.659790749 +0200 @@ -49,6 +49,10 @@ // set the dir where node-gyp dev files get installed // TODO: make this *more* configurable? // see: https://github.com/TooTallNate/node-gyp/issues/21 + var baseDir = process.env.NODE_GYP + if (baseDir) + this.devDir = path.resolve(baseDir) + else { var homeDir = process.env.HOME || process.env.USERPROFILE if (!homeDir) { throw new Error( @@ -57,6 +61,7 @@ ); } this.devDir = path.resolve(homeDir, '.node-gyp') + } this.commands = {}