如何在 Virtual Box 5.0.2 中创建符号链接,CentOS 7 作为来宾,Windows 7 作为主机
How to create symlink in virtual box 5.0.2, CentOS 7 as guest, Windows 7 as host
我正在尝试在 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
访客
- 'Run as Administrator' 主机上的虚拟框。
VBoxManage setextradata VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME 1
- 更新了用户安全策略并允许创建指向 'Everyone'
的符号链接
- 允许所有人在主机中的项目文件夹属性的安全设置上拥有所有权限。
我已经使用过以下链接:
- Correct way to setup Virtualbox 4.3 to use symlinks on guest (for meteor)
- Symlinks in shared folder of virtual box with Windows 10 host
- https://www.virtualbox.org/ticket/10085
- https://askubuntu.com/questions/446317/how-to-make-guest-os-follow-symlinks-from-shared-folder
- https://superuser.com/questions/659270/accessing-symbolic-links-in-virtualbox
更新 (2016-04-21): 现在我已经解决了。我在非共享目录下做了一个npm install
,然后把node_modules目录移动到共享目录,就没有问题了。因为我们不那么频繁地安装模块,所以很好。但是,如果有人能为此指出一个真正的解决方案,那就太好了。
处理来自共享 Windows 项目文件夹的 VM 中的 node_modules 问题的最简单方法是从 Linux 文件系统中的另一个位置绑定挂载 node_modules , 但一定要在安装 virtualbox 共享文件系统后安装它。
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 的内容,但您不会再遇到符号链接或路径长度方面的问题。
已接受的解决方案对我不起作用。我最终 运行 npm install on Windows 而不是 Linux。然而,这对于某些包来说可能是个问题。
我找到了另一种我尚未尝试过的解决方案。如果这只是符号链接的问题,您可以跳过创建符号链接。
npm install --no-bin-links
在此处查看更多信息:
- npm install: when to use --no-bin-links?
- Installing npm modules in a VM shared directory and grunt issues
我正在尝试在 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
访客- 'Run as Administrator' 主机上的虚拟框。
VBoxManage setextradata VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME 1
- 更新了用户安全策略并允许创建指向 'Everyone' 的符号链接
- 允许所有人在主机中的项目文件夹属性的安全设置上拥有所有权限。
我已经使用过以下链接:
- Correct way to setup Virtualbox 4.3 to use symlinks on guest (for meteor)
- Symlinks in shared folder of virtual box with Windows 10 host
- https://www.virtualbox.org/ticket/10085
- https://askubuntu.com/questions/446317/how-to-make-guest-os-follow-symlinks-from-shared-folder
- https://superuser.com/questions/659270/accessing-symbolic-links-in-virtualbox
更新 (2016-04-21): 现在我已经解决了。我在非共享目录下做了一个npm install
,然后把node_modules目录移动到共享目录,就没有问题了。因为我们不那么频繁地安装模块,所以很好。但是,如果有人能为此指出一个真正的解决方案,那就太好了。
处理来自共享 Windows 项目文件夹的 VM 中的 node_modules 问题的最简单方法是从 Linux 文件系统中的另一个位置绑定挂载 node_modules , 但一定要在安装 virtualbox 共享文件系统后安装它。
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 的内容,但您不会再遇到符号链接或路径长度方面的问题。
已接受的解决方案对我不起作用。我最终 运行 npm install on Windows 而不是 Linux。然而,这对于某些包来说可能是个问题。
我找到了另一种我尚未尝试过的解决方案。如果这只是符号链接的问题,您可以跳过创建符号链接。
npm install --no-bin-links
在此处查看更多信息:
- npm install: when to use --no-bin-links?
- Installing npm modules in a VM shared directory and grunt issues