问题背景
宿主环境:Windows10
开发环境:vagrant(ubuntu)
操作目录:synced_folder (共享目录 )
执行命令:npm install
错误信息:
npm ERR! code ETXTBSY
npm ERR! errno -26
npm ERR! syscall rename
npm ERR! ETXTBSY: text file is busy, rename '/vagrant/parse-server-advanced/node_modules/cookie-signature/package.json.3666899342' -> '/vagrant/parse-server-advanced/node_modules/cookie-signature/package.json'
这就是一个文件权限的错误,因为client环境(vagrant box)对共享目录(synced_folder)中的文件操作权限不够
尝试解决
windows + vagrant (ubuntu) 开发
经常需要在 共享目录(shared_folder)中进行文件操作,包括但不限于:
- 解压缩,如 tar xzf,unzip
-
避免在共享目录中操作,到 vagrant(ubuntu) 非共享目录中操作
- 否则会报错,因为tar包里面的内容可能是从linux环境打包来的,是无法正常在windows环境中解压缩,也就无法安全地在shared_folder中解压缩
-
- 安装,如 npm install (本地安装,非 -g)
-
在host环境(windows)中进行(这就需要host环境中也要装node)
- 在client环境中非共享目录安装后,再挪到共享目录(mv)
-
vagrant@ganiks-ubuntu-trusty-64:~$ mv parse-server-advanced /vagrant/ mv: cannot create symbolic link ‘/vagrant/parse-server-advanced/node_modules/parse-dashboard/node_modules/.bin/mime’: Protocol error mv: cannot create symbolic link ‘/vagrant/parse-server-advanced/node_modules/pg/node_modules/.bin/semver’: Protocol error
-
-
总结
总之,在windows机器上用vagrant
两者之间的 synced_folder 共享目录只能用于拷贝文件
千万不可在此目录中进行 npm install / tar xzvf 类操作;
如果一定要用 windows下的IDE如VSCode开发
- 服务端代码
- Vagrant虚拟机中的的代码(非共享目录)
- 因为windows环境下实在无法正常 npm install 的项目,只能放在Linux服务端或者Linux虚拟机中
- 如 crypto, ursa
- 因为windows环境下实在无法正常 npm install 的项目,只能放在Linux服务端或者Linux虚拟机中
可以尝试使用 VSCode + Sftp插件
相关问题
https://www.cnblogs.com/ganiks/p/Error-EACCES-permission-denied-symlink.html
https://www.cnblogs.com/ganiks/p/windows-install-cross-env-with-cnpm-instead-of-yarn-or-npm.html
原文出处:https://www.cnblogs.com/ganiks/p/do-not-install-or-unzip-at-vagrant-synced-folder.html
来源:oschina
链接:https://my.oschina.net/u/4416039/blog/3270750