diff --git a/lib/activate.js b/lib/activate.js index 955d8a60839..610b9b027e3 100644 --- a/lib/activate.js +++ b/lib/activate.js @@ -71,8 +71,18 @@ function activate_ (arg, cb) { chain ( [lifecycle, data, "preactivate"] , [link, from, to] - , [shimIfExists, fromMain, toMain] - , [linkIfExists, fromLib, toLib] + , function (cb) { + fs.stat(toMain, function (er) { + if (!er) return cb() + shimIfExists(fromMain, toMain, cb) + }) + } + , function (cb) { + fs.stat(toLib, function (er) { + if (!er) return cb() + linkIfExists(fromLib, toLib, cb) + }) + } , [linkBins, data] , [lifecycle, data, "activate"] , [lifecycle, data, "postactivate"] @@ -89,6 +99,11 @@ function linkBins (pkg, cb) { chain(Object.keys(pkg.bin).map(function (i) { var to = path.join(binroot, i) , from = to+"-"+pkg.version - return [link, from, to] + return function (cb) { + fs.stat(to, function (er) { + if (!er) cb() + linkIfExists(from, to, cb) + }) + } }).concat(cb)) }