Steven Grant
Steven Grant

Reputation: 1325

npm install within Vagrant box

I have a fairly vanilla Vagrant box configured using Puphpet with Node installed.

However, when I ssh into the box and try npm install I seem to be having a raft of permissions issues.

Even running with sudo doesn't seem to work

Running into

npm ERR! tar.unpack untar error /home/vagrant/.npm/gulp-autoprefixer/2.1.0/package.tgz
npm ERR! tar.unpack untar error /home/vagrant/.npm/gulp-concat/2.5.2/package.tgz
npm ERR! tar.unpack untar error /home/vagrant/.npm/gulp-livereload/3.8.0/package.tgz
npm ERR! tar.unpack untar error /home/vagrant/.npm/path/0.11.14/package.tgz
npm ERR! tar.unpack untar error /home/vagrant/.npm/gulp-notify/2.2.0/package.tgz
npm ERR! tar.unpack untar error /home/vagrant/.npm/gulp-compass/2.0.3/package.tgz
npm ERR! tar.unpack untar error /home/vagrant/.npm/gulp-minify-css/0.4.6/package.tgz
npm ERR! tar.unpack untar error /home/vagrant/.npm/gulp-plumber/0.6.6/package.tgz
npm ERR! tar.unpack untar error /home/vagrant/.npm/gulp-rename/1.2.0/package.tgz
npm ERR! tar.unpack untar error /home/vagrant/.npm/gulp/3.8.11/package.tgz
npm ERR! tar.unpack untar error /home/vagrant/.npm/gulp-uglify/1.1.0/package.tgz
npm ERR! Linux 3.13.0-32-generic
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install"
npm ERR! node v0.12.0
npm ERR! npm  v2.5.1
npm ERR! path /var/www/node_modules/gulp-autoprefixer/package.json
npm ERR! code EPERM
npm ERR! errno -1

npm ERR! Error: EPERM, chown '/var/www/node_modules/gulp-autoprefixer/package.json'
npm ERR!     at Error (native)
npm ERR!  { [Error: EPERM, chown '/var/www/node_modules/gulp-autoprefixer/package.json']
npm ERR!   errno: -1,
npm ERR!   code: 'EPERM',
npm ERR!   path: '/var/www/node_modules/gulp-autoprefixer/package.json',
npm ERR!   fstream_finish_call: 'chown',
npm ERR!   fstream_type: 'File',
npm ERR!   fstream_path: '/var/www/node_modules/gulp-autoprefixer/package.json',
npm ERR!   fstream_class: 'FileWriter',
npm ERR!   fstream_stack:
npm ERR!    [ '/usr/local/lib/node_modules/npm/node_modules/fstream/lib/writer.js:308:19',
npm ERR!      '/usr/local/lib/node_modules/npm/node_modules/graceful-fs/polyfills.js:143:7',
npm ERR!      'FSReqWrap.oncomplete (evalmachine.<anonymous>:99:15)' ] }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.

npm ERR! Please include the following file with any support request:
npm ERR!     /var/www/npm-debug.log

I've read about writing into a shared folder and tried adding fixes to the Vagrantfile but with no success

      virtualbox.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]

Any ideas?

Upvotes: 5

Views: 4574

Answers (2)

Steven Grant
Steven Grant

Reputation: 1325

So turns out this was a bug with the Puphpet config like so https://github.com/puphpet/puphpet/issues/1378

The fix can be found in https://github.com/puphpet/puphpet/pull/1403 - just had to replace that snippet in my Vagrantfile and we're sweet. I can now npm install, bundle install etc.

Upvotes: 1

Chris Pitman
Chris Pitman

Reputation: 13104

Are you using Windows? Not only do you need to customize the VM, but you also need to start the VM while you have elevated rights (ie Run as Administrator). Overall, it is a complex mess.

If I'm working with something that needs symlinks in my shared folder (like npm), I've started using rsync folders. With rsync the /vagrant folder is no longer a Virtual Box shared folder, and doesn't have problems representing symlinks. As an extra benefit, it is also way faster.

Upvotes: 0

Related Questions