问题背景

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

vagrant虚拟机共享目录在windows宿主下的禁忌的更多相关文章

  1. 【转载】ubuntu和debian环境下无法挂载vmware虚拟机共享目录的解决办法

    转载自:http://www.fengfly.com/plus/view-210022-1.html 第一步,安装VMware Tools 打开虚拟机ubuntu(debian原理一样)后,首先,点击 ...

  2. Windows与VBox虚拟机共享目录的方法

    前言 安装完虚拟机,设置共享目录的时候碰到问题,网上搜索了一下,按照相关教程操作还是有问题,可能是写的不够清楚,于是按照自己的理解重写了一份,力求简单明了,理解轻松. 具体步骤 1.关闭虚拟机(如果未 ...

  3. Linux主机共享目录给Windows主机的方法

    Linux主机共享目录可以通过samba来实现 首先,来看下百科上关于samba的介绍: Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Ser ...

  4. Linux 虚拟机共享目录

    1.  开启linux虚拟机 2.   菜单“虚拟机” -------“重新安装 Vm tools” 3.   桌面看到 VmTools 安装盘 4.   安装 5.   设置中添加共享目录 5.   ...

  5. Linxu:在Linux下访问Windows的共享目录

    在 Windows xp 上设置一个共享目录 共享目录:d:\myfiles 在 Linux 下安装 samba-client 客户端 yum install samba-client 安装 cifs ...

  6. 记录一次mac访问Windows共享目录失败

    一,起因 起因,有人联系我说他们的mac电脑连接不上Windows的共享目录,Windows的电脑连接正常,没有报错,连接框抖两下就没了 二,排查问题 1,我自己想mstsc登陆服务器看看,结果服务器 ...

  7. Windows环境下32位汇编语言程序设计(典藏版)

    <Windows环境下32位汇编语言程序设计(典藏版) > 基本信息 作者: 罗云彬 出版社:电子工业出版社 ISBN:9787121207594 上架时间:2013-7-8 出版日期:2 ...

  8. linux目录和Windows目录对比

    linux目录和Windows目录对比 我们应该知道 Windows 有一个默认的安装目录专门用来安装软件.Linux 的软件安装目录也应该是有讲究的,遵循这一点,对后期的管理和维护也是有帮助的. / ...

  9. VMware10中的CentOS6.5命令行安装VMwaretools工具启用windows与虚拟机中Linux系统的共享目录

    VMware10中的CentOS6.5命令行安装VMwaretools工具启用windows与虚拟机中Linux系统的共享目录 一.描述 系统描述:win7旗舰版64位系统+VMware Workst ...

随机推荐

  1. Physical Education Lessons CodeForces - 915E (动态开点线段树)

    Physical Education Lessons CodeForces - 915E This year Alex has finished school, and now he is a fir ...

  2. HashSet怎样保证元素不重复

    文章同步更新在个人博客:HashSet怎样保证元素不重复 都知道HashSet中不能存放重复元素,有时候可以用来做去重操作等.但是其内部是怎么保证元素不重复的呢?下面从源码去看看. 打开HashSet ...

  3. OEL7.2下Oracle11.2.0.4RAC部署

    OEL7.2下Oracle11.2.0.4RAC部署 一. 安装步骤简述 u OEL7.2操作系统安装 u RAC 安装环境配置 u ORACLE CRS安装 u ORACLE DB软件安装 u OR ...

  4. 打开myeclipse提示An internal error occurred during: "CheckLicensesAndNotify". com/genuitec/pulse2/client/targetcfg/ui/PulseActivator

    打开myeclipse提示An internal error occurred during: "CheckLicensesAndNotify". com/genuitec/pul ...

  5. socket 在Unix domain的使用

    server.c #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #includ ...

  6. ubuntu系统升级PHP版本

    https://blog.csdn.net/qq_16885135/article/details/79747045    升级PHP7.2 https://www.cnblogs.com/lalal ...

  7. 适配器模式(Adapter)---结构型

    1 基础知识 定义:将一个类的接口(被适配者)转换成客户期望的另一个接口(目标).特征:使原本接口不兼容的类可以一起工作. 本质:转换匹配,复用功能.把不兼容的接口转换为客户端期望的样子从而实现功能的 ...

  8. Luogu P4398 [JSOI2008]Blue Mary的战役地图 矩阵哈希

    其实可以二分矩阵边长但是我太懒了$qwq$. 把每个子矩阵扔到$map$里,然后就没了 #include<cstdio> #include<map> #include<i ...

  9. PHP mysqli_options() 函数

    定义和用法 mysqli_options() 函数设置额外的连接选项,用于影响连接行为. mysqli_options() 函数可以被调用若干次来设置若干个选项. <?php $con=mysq ...

  10. 016_linuxC++之_多重继承

    (一)代码 #include <iostream> #include <string.h> #include <unistd.h> using namespace ...