Reputation: 1325
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
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
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