【问题标题】:How to create symlink in virtual box 5.0.2, CentOS 7 as guest, Windows 7 as host如何在虚拟盒 5.0.2、CentOS 7 作为访客、Windows 7 作为主机中创建符号链接
【发布时间】:2016-07-27 22:26:59
【问题描述】:

我正在尝试在 Virtual Box 5.0.2 中设置一个 CentOS 7 作为我的开发箱。我与来宾共享来自运行 Windows 7 的主机的项目文件夹(然后我可以使用 Windows GUI 并使用 IDE 在 Windows 上进行交互,而我的代码在 CentOS 上运行)。

我正在 node.js 中进行一些开发。在设置我的项目并执行npm install 时,出现以下错误:

49132 error Linux 3.10.0-327.13.1.el7.x86_64
49133 error argv "/home/wdd/nvm/versions/node/v5.10.0/bin/node" "/home/wdd/nvm/versions/node/v5.10.0/bin/npm" "install"
49134 error node v5.10.0
49135 error npm  v3.8.3
49136 error path /home/wdd/share/mynps-corporate-client/node_modules/.staging/iconv-lite-94545a9f
49137 error code EPERM
49138 error errno -1
49139 error syscall rename
49140 error Error: EPERM: operation not permitted, rename '/home/wdd/share/mynps-corporate-client/node_modules/.staging/iconv-lite-94545a9f' -> '/home/wdd/share/mynps-corporate-client/node_modules/iconv-lite'
49140 error     at destStatted (/home/wdd/nvm/versions/node/v5.10.0/lib/node_modules/npm/lib/install/action/finalize.js:25:7)
49140 error     at FSReqWrap.oncomplete (fs.js:82:15)
49140 error
49140 error Error: EPERM: operation not permitted, rename '/home/wdd/share/mynps-corporate-client/node_modules/.staging/iconv-lite-94545a9f' -> '/home/wdd/share/mynps-corporate-client/node_modules/iconv-lite'
49140 error     at Error (native)
49140 error  { [Error: EPERM: operation not permitted, rename '/home/wdd/share/mynps-corporate-client/node_modules/.staging/iconv-lite-94545a9f' -> '/home/wdd/share/mynps-corporate-client/node_modules/iconv-lite'] parent: 'mynps-corporate' }
49141 error Please try running this command again as root/Administrator.
49142 verbose exit [ -1, true ]

当我在网上搜索时,我知道问题出在符号链接上。默认情况下,共享文件夹上禁用符号链接,因此以下操作也会失败:

ln: failed to create hard link ‘ln-server.js’ => ‘server.js’: Operation not permitted

我试过了:

  • sudo 来宾
  • 主机上的“以管理员身份运行”虚拟框。
  • VBoxManage setextradata VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME 1
  • 更新了用户安全政策并允许创建指向“所有人”的符号链接
  • 允许所有人对主机中项目文件夹属性的安全设置具有所有权限。

我已经使用了以下链接:

更新 (2016-04-21): 现在我已经解决了。我在一个不共享的目录下做了一个npm install,然后把node_modules目录移到共享目录下,就没有问题了。因为我们不经常安装模块,所以很好。但是,如果有人能为此指出一个真正的解决方案,那就太好了。

【问题讨论】:

    标签: node.js windows-7 virtualbox centos7 shared-directory


    【解决方案1】:

    接受的解决方案对我不起作用。我最终在 Windows 而不是 Linux 上运行 npm install。然而,这对于某些软件包来说可能是个问题。

    我发现了另一种我还没有尝试过的解决方案。如果只是符号链接的问题,您可以跳过创建符号链接。

    npm install --no-bin-links

    在这里查看更多:

    【讨论】:

      【解决方案2】:

      从共享的 Windows 项目文件夹处理 VM 中的 node_modules 问题的最简单方法是从 Linux 文件系统中的另一个位置绑定挂载 node_modules,但请确保在虚拟机共享之后 挂载它文件系统已挂载。

      mkdir -p /home/wdd/node_modules /home/wdd/share/mynps-corporate-client/node_modules

      sudo mount --bind /home/wdd/node_modules /home/wdd/share/mynps-corporate-client/node_modules

      您不会在 VM 之外看到 node_modules 的内容,但您不会再遇到符号链接或路径长度方面的问题。

      【讨论】:

        猜你喜欢
        • 2019-01-15
        • 2017-05-02
        • 2016-10-02
        • 2015-04-10
        • 1970-01-01
        • 2012-01-29
        • 2016-04-21
        • 2011-03-03
        • 1970-01-01
        相关资源
        最近更新 更多