• vagrant虚拟机共享目录在windows宿主下的禁忌


    问题背景

    宿主环境: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

    可以尝试使用 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

    作者:ganiks
    出处:http://www.cnblogs.com/ganiks/
    本作品由 Ganiks 创作, 欢迎转载,但任何转载必须保留完整文章,在显要地方显示署名以及原文链接。如您有任何疑问,请给我留言。
  • 相关阅读:
    ES6 函数的扩展2
    css3 UI元素状态伪类选择器
    HTML5 矩阵变换
    ES6 let和const命令(4)
    ES6 let和const命令(3)
    ES6 let和const命令(2)
    JVM的内存区域划分(一)
    MySQL的四种事务隔离级别
    快速排序
    Struts2与SpringMVC的区别
  • 原文地址:https://www.cnblogs.com/ganiks/p/do-not-install-or-unzip-at-vagrant-synced-folder.html
Copyright © 2020-2023  润新知