vagrant/homestead/windows 上的 npm 安装错误:EPROTO:协议错误,符号链接
npm install errors on vagrant/homestead/windows: EPROTO: protocol error, symlink
我正在 Laravel 构建我的第一个项目并尝试使用 Elixir,在 Windows 8.1 上使用 homestead。我遇到了已知的 npm/vagrant 路径名称过长问题:
https://harvsworld.com/2015/how-to-fix-npm-install-errors-on-vagrant-on-windows-because-the-paths-are-too-long/
所以我做了那篇文章中推荐的一行编辑(感谢上帝的那个人),然后 运行(有和没有 sudo):
npm install --no-bin-links
它让我前进,所以现在我遇到了两种不同类型的错误:一些 'Missing write access' 错误,以及一堆“EACCES”错误:
错误输出为我提供了寻宝游戏的下一条线索(我认为):
请再次尝试 运行 此命令作为 root/Administrator
这让我想到 this post,但对我来说不同的是即使在我使用 sudo(或像这样更新我的用户权限)后也没有任何变化:
sudo chown -R $USER /usr/local
sudo chown -R $(whoami) ~/.npm
更新:然后在下面的建议后我得到 EPROTO 和 EXTXTBSY 错误(即使按照提示的建议重命名 npm-debug.log 回来:
所以我尝试 运行 gulp 看看它是否能给我线索,但错误输出让我做了:
sudo npm rebuild node-sass
运行 给我同样的 EPROTO 和 ETXTBSY 错误,并且 npm-debug.log 文件显示:
错误 EPROTO:协议错误,符号链接 '../node-sass/bin/node-sass' -> '/home/vagrant/Code/Family-laravel/node_modules/laravel-elixir/node_modules/gulp-sass/node_modules/.bin/node-sass'
然后在处理了一个小时的其他东西后,我重新回来并重新执行了这些步骤,这次得到的错误更少了:
sudo npm -g install npm@latest(好)
sudo npm install --no-bin-links(只是 ETXTBSY 错误和插件 'run sequence' 中的错误,在任务 'sass' 中)
sudo npm rebuild node-sass --no-bin-links(没有错误!)
gulp(只有一个错误:未找到:通知发送)
越来越近了!
几周来我一直在努力解决这个问题。这是我在不使用主机环境的情况下使它工作的方法:
我根据nodesource.com:
更新了homestead中的node到最新版本
sudo apt-get install --yes nodejs
curl --silent --location https://deb.nodesource.com/setup_4.x | sudo bash -
我在 homestead 更新了 npm 到最新版本。这应该在更新节点后完成:
sudo npm -g install npm@latest
我运行npm安装在laravel项目目录下。我还必须使用强制来安装所有依赖项:
sudo npm install --no-bin-links
sudo npm cache clear
sudo npm install --force --no-bin-links
我根据 gulp 错误重建了节点-sass:
sudo npm rebuild node-sass --no-bin-links
在整个过程中,如果出现故障或每次安装后,我使用:
sudo npm cache clear
我的主机是windows 10,有最新的virtualbox,最新的vag运行t,最新的homestead。我使用 git bash 作为管理员并使用 git bash.
ssh 进入 vag运行t
到目前为止,我只测试并确认我的 gulp 有效。可能还需要重建其他依赖。
希望对您有所帮助!
您最初 EACCES
错误的原因是您使用了 sudo
而没有使用 -H
选项。永远不要使用 sudo npm
。始终使用 sudo -H npm
.
网上到处的说明(包括 NPM 文档)都是错误的。
你们中的许多人也在使用 Virtual Box 设置 Homestead...
在谷歌搜索解决方案后,我决定参考 Laravel Homestead 文档。幸运的是解决方案发布在那里:
https://laravel.com/docs/5.8/homestead#provider-specific-settings
您只需将以下内容添加到您的 homestead Vagrantfile.
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
(...)
config.vm.provider "virtualbox" do |v|
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
end
(...)
end
重要
不要忘记以管理员的身份进行配置。
homestead up --provision
我使用此处描述的解决方案解决了我的问题:https://www.prolificinteractive.com/2015/01/21/getting-vagrant-nodejs-windows-play-well-together/
主要技巧在于:
vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/path/to/guest/shared/directory", "1"]
希望对大家有所帮助
我遇到了同样的问题。我在下面做了。它工作正常。
npm install --no-bin-links
以下是我在 VirtualBox 上解决类似问题的方法:
# My Virtualbox image name "centos"
# My shared folder name: localdev
# My mounted directory name on virtualbox: /data
VBoxManage setextradata "centos" VBoxInternal2/SharedFoldersEnableSymlinksCreate/data 1
VBoxManage setextradata "centos" VBoxInternal2/SharedFoldersEnableSymlinksCreate/localdev 1
## see above how i added image name with quotes + my folder names before 1
# I made sure I am running VirtualBox in Administrator Mode
# Boot up the VM and install this:
yum install yarn
# navigate to your code folder and run:
yarn install
我正在 Laravel 构建我的第一个项目并尝试使用 Elixir,在 Windows 8.1 上使用 homestead。我遇到了已知的 npm/vagrant 路径名称过长问题: https://harvsworld.com/2015/how-to-fix-npm-install-errors-on-vagrant-on-windows-because-the-paths-are-too-long/
所以我做了那篇文章中推荐的一行编辑(感谢上帝的那个人),然后 运行(有和没有 sudo): npm install --no-bin-links
它让我前进,所以现在我遇到了两种不同类型的错误:一些 'Missing write access' 错误,以及一堆“EACCES”错误:
错误输出为我提供了寻宝游戏的下一条线索(我认为): 请再次尝试 运行 此命令作为 root/Administrator
这让我想到 this post,但对我来说不同的是即使在我使用 sudo(或像这样更新我的用户权限)后也没有任何变化:
sudo chown -R $USER /usr/local
sudo chown -R $(whoami) ~/.npm
更新:然后在下面的建议后我得到 EPROTO 和 EXTXTBSY 错误(即使按照提示的建议重命名 npm-debug.log 回来:
所以我尝试 运行 gulp 看看它是否能给我线索,但错误输出让我做了:
sudo npm rebuild node-sass
运行 给我同样的 EPROTO 和 ETXTBSY 错误,并且 npm-debug.log 文件显示: 错误 EPROTO:协议错误,符号链接 '../node-sass/bin/node-sass' -> '/home/vagrant/Code/Family-laravel/node_modules/laravel-elixir/node_modules/gulp-sass/node_modules/.bin/node-sass'
然后在处理了一个小时的其他东西后,我重新回来并重新执行了这些步骤,这次得到的错误更少了:
sudo npm -g install npm@latest(好)
sudo npm install --no-bin-links(只是 ETXTBSY 错误和插件 'run sequence' 中的错误,在任务 'sass' 中)
sudo npm rebuild node-sass --no-bin-links(没有错误!)
gulp(只有一个错误:未找到:通知发送)
越来越近了!
几周来我一直在努力解决这个问题。这是我在不使用主机环境的情况下使它工作的方法:
我根据nodesource.com:
更新了homestead中的node到最新版本sudo apt-get install --yes nodejs
curl --silent --location https://deb.nodesource.com/setup_4.x | sudo bash -
我在 homestead 更新了 npm 到最新版本。这应该在更新节点后完成:
sudo npm -g install npm@latest
我运行npm安装在laravel项目目录下。我还必须使用强制来安装所有依赖项:
sudo npm install --no-bin-links
sudo npm cache clear
sudo npm install --force --no-bin-links
我根据 gulp 错误重建了节点-sass:
sudo npm rebuild node-sass --no-bin-links
在整个过程中,如果出现故障或每次安装后,我使用:
sudo npm cache clear
我的主机是windows 10,有最新的virtualbox,最新的vag运行t,最新的homestead。我使用 git bash 作为管理员并使用 git bash.
ssh 进入 vag运行t到目前为止,我只测试并确认我的 gulp 有效。可能还需要重建其他依赖。
希望对您有所帮助!
您最初 EACCES
错误的原因是您使用了 sudo
而没有使用 -H
选项。永远不要使用 sudo npm
。始终使用 sudo -H npm
.
网上到处的说明(包括 NPM 文档)都是错误的。
你们中的许多人也在使用 Virtual Box 设置 Homestead...
在谷歌搜索解决方案后,我决定参考 Laravel Homestead 文档。幸运的是解决方案发布在那里:
https://laravel.com/docs/5.8/homestead#provider-specific-settings
您只需将以下内容添加到您的 homestead Vagrantfile.
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
(...)
config.vm.provider "virtualbox" do |v|
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
end
(...)
end
重要
不要忘记以管理员的身份进行配置。
homestead up --provision
我使用此处描述的解决方案解决了我的问题:https://www.prolificinteractive.com/2015/01/21/getting-vagrant-nodejs-windows-play-well-together/
主要技巧在于:
vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/path/to/guest/shared/directory", "1"]
希望对大家有所帮助
我遇到了同样的问题。我在下面做了。它工作正常。
npm install --no-bin-links
以下是我在 VirtualBox 上解决类似问题的方法:
# My Virtualbox image name "centos"
# My shared folder name: localdev
# My mounted directory name on virtualbox: /data
VBoxManage setextradata "centos" VBoxInternal2/SharedFoldersEnableSymlinksCreate/data 1
VBoxManage setextradata "centos" VBoxInternal2/SharedFoldersEnableSymlinksCreate/localdev 1
## see above how i added image name with quotes + my folder names before 1
# I made sure I am running VirtualBox in Administrator Mode
# Boot up the VM and install this:
yum install yarn
# navigate to your code folder and run:
yarn install