在 Vagrant box 中安装 npm
npm install within Vagrant box
我有一个相当普通的 Vagrant 盒子,使用安装了 Node 的 Puphpet 配置。
但是,当我通过 ssh 登录并尝试 npm install
时,我似乎遇到了很多权限问题。
甚至 运行 sudo 似乎也不起作用
运行变成
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
我读过有关写入共享文件夹的内容,并尝试向 Vagrantfile 添加修复,但没有成功
virtualbox.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
有什么想法吗?
您在使用 Windows 吗?您不仅需要自定义 VM,还需要在拥有提升权限(即 运行 作为管理员)的情况下启动 VM。总的来说,这是一个复杂的混乱。
如果我在我的共享文件夹中使用需要符号链接的东西(比如 npm),我已经开始使用 rsync folders。使用 rsync,/vagrant
文件夹不再是 Virtual Box 共享文件夹,并且表示符号链接没有问题。作为一个额外的好处,它也更快。
原来这是 Puphpet 配置的错误 https://github.com/puphpet/puphpet/issues/1378
修复可以在 https://github.com/puphpet/puphpet/pull/1403 中找到 - 只需替换我的 Vagrantfile 中的那个片段,我们很高兴。我现在可以 npm 安装、捆绑安装等
我有一个相当普通的 Vagrant 盒子,使用安装了 Node 的 Puphpet 配置。
但是,当我通过 ssh 登录并尝试 npm install
时,我似乎遇到了很多权限问题。
甚至 运行 sudo 似乎也不起作用
运行变成
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
我读过有关写入共享文件夹的内容,并尝试向 Vagrantfile 添加修复,但没有成功
virtualbox.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
有什么想法吗?
您在使用 Windows 吗?您不仅需要自定义 VM,还需要在拥有提升权限(即 运行 作为管理员)的情况下启动 VM。总的来说,这是一个复杂的混乱。
如果我在我的共享文件夹中使用需要符号链接的东西(比如 npm),我已经开始使用 rsync folders。使用 rsync,/vagrant
文件夹不再是 Virtual Box 共享文件夹,并且表示符号链接没有问题。作为一个额外的好处,它也更快。
原来这是 Puphpet 配置的错误 https://github.com/puphpet/puphpet/issues/1378
修复可以在 https://github.com/puphpet/puphpet/pull/1403 中找到 - 只需替换我的 Vagrantfile 中的那个片段,我们很高兴。我现在可以 npm 安装、捆绑安装等