2016-04-07 19 views
0

Ich versuche ein CentOS 7 als meine Entwicklungsbox in Virtual Box 5.0.2 einzurichten. Ich teile den Projektordner von dem Host, der Windows 7 ausführt, mit dem Gast (dann kann ich die Windows-GUI verwenden und eine IDE verwenden, um die Interaktion unter Windows zu machen, während mein Code auf CentOS läuft).Wie SymLink in virtueller Box 5.0.2, CentOS 7 als Gast, Windows 7 als Host erstellen

Ich mache einige Entwicklung in Knoten. Während meines Projektes Aufbau und npm install tut, bekam ich einen Fehler wie:

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 ] 

Wenn ich online gesucht, ich das Problem mit der Symlinks wissen bekommen. Symlinks sind standardmäßig auf freigegebene Ordner deaktiviert, so dass die folgenden nicht auch:

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

ich versucht habe:

  • sudo auf Gast
  • 'Ausführen als Administrator' virtuelle Box auf dem Host.
  • VBoxManage setextradata VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME 1
  • aktualisiert Benutzersicherheitspolitik und erlaubt schaffen symbolische Links auf ‚Jeder‘
  • erlaubt alle Privilegien jeder auf Sicherheitseinstellungen der Projektordnereigenschaften in Host-Maschine.

Ich habe bereits die folgenden Links verwendet:

Update (2016-04-21): Für jetzt habe ich eine Arbeit gemacht. Ich mache eine npm install in einem Verzeichnis, das nicht freigegeben ist, und dann das Verzeichnis node_modules in das freigegebene Verzeichnis verschoben, und es gibt kein Problem. Da wir Module nicht so häufig installieren, ist es in Ordnung. Aber es wäre großartig, wenn man eine echte Lösung dafür aufzeigen könnte.

Antwort

2

Der einfachste Weg, mit node_modules Problemen in einer VM von ein freigegebenen Windows-Projektordnern zu behandeln ist Mount node_modules von einem anderen Standort im Linux-Dateisystem zu binden, aber sicher sein, es zu montieren nach VirtualBox Shared-Filesystem montiert ist.

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

Sie die Inhalte von node_modules außerhalb der VM nicht sehen, aber Sie werden keine weiteren Probleme mit symbolischen Links oder Pfadlängen haben.