Ich habe Ubuntu 12.10 als VMware-Gast auf meinem Windows 8-Host.
Ich habe einen Ordner auf meinem Windows 8-Host freigegeben und dieser wird beim Start im Ubuntu-Gast mit folgendem Eintrag eingebunden fstab
:
//myhost/work /work cifs credentials=/home/user/.smbcredentials,noserverino,nounix,uid=user,gid=user,file_mode=0777,dir_mode=0777 0 0
Die Freigabe funktioniert einwandfrei und kann von einem Webserver wie nginx bedient werden.
Es scheint jedoch Probleme zu geben, wenn ich node.js-Pakete mit npm installiere. Ich erhalte eine Reihe von Fehlern wie die folgende:
user@ubuntu:/work/test$ sudo npm install grunt
npm http GET https://registry.npmjs.org/grunt
npm http 304 https://registry.npmjs.org/grunt
...
npm ERR! error rolling back Error: ENOTEMPTY, rmdir '/work/test/node_modules/grunt/node_modules/lodash'
npm ERR! error rolling back [email protected] { [Error: ENOTEMPTY, rmdir '/work/test/node_modules/grunt/node_modules/lodash']
npm ERR! error rolling back errno: 53,
npm ERR! error rolling back code: 'ENOTEMPTY',
npm ERR! error rolling back path: '/work/test/node_modules/grunt/node_modules/lodash' }
npm ERR! Error: UNKNOWN, symlink '../which/bin/which'
npm ERR! If you need help, you may report this log at:
npm ERR! <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR! <[email protected]>
npm ERR! System Linux 3.5.0-26-generic
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install" "grunt"
npm ERR! cwd /work/test
npm ERR! node -v v0.10.0
npm ERR! npm -v 1.2.14
npm ERR! path ../which/bin/which
npm ERR! code UNKNOWN
npm ERR! errno -1
npm ERR! Error: ENOENT, chmod '/work/test/node_modules/grunt/node_modules/findup-sync/test/fixtures/aaa.txt'
npm ERR! If you need help, you may report this log at:
npm ERR! <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR! <[email protected]>
npm ERR! System Linux 3.5.0-26-generic
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install" "grunt"
npm ERR! cwd /work/test
npm ERR! node -v v0.10.0
npm ERR! npm -v 1.2.14
npm ERR! path /work/test/node_modules/grunt/node_modules/findup-sync/test/fixtures/aaa.txt
npm ERR! fstream_path /work/test/node_modules/grunt/node_modules/findup-sync/test/fixtures/aaa.txt
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! fstream_finish_call chmod
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! fstream_stack /usr/lib/node_modules/npm/node_modules/fstream/lib/writer.js:305:19
npm ERR! fstream_stack Object.oncomplete (fs.js:93:15)
npm ERR! Error: ENOENT, lstat '/work/test/node_modules/grunt/node_modules/minimatch/test/basic.js'
npm ERR! If you need help, you may report this log at:
npm ERR! <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR! <[email protected]>
npm ERR! System Linux 3.5.0-26-generic
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install" "grunt"
npm ERR! cwd /work/test
npm ERR! node -v v0.10.0
npm ERR! npm -v 1.2.14
npm ERR! path /work/test/node_modules/grunt/node_modules/minimatch/test/basic.js
npm ERR! fstream_path /work/test/node_modules/grunt/node_modules/minimatch/test/basic.js
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! fstream_stack /usr/lib/node_modules/npm/node_modules/fstream/lib/writer.js:284:26
npm ERR! fstream_stack Object.oncomplete (fs.js:93:15)
npm ERR! Error: ENOENT, lstat '/work/test/node_modules/grunt/node_modules/glob/test/00-setup.js'
npm ERR! If you need help, you may report this log at:
npm ERR! <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR! <[email protected]>
...
npm ERR! not ok code 0
user@ubuntu:/work/test$
Was könnte dieses Problem verursachen? Von der Kommandozeile kann ich chmod
, rmdir
unter anderem mit sudo ohne Probleme.
Das Erstellen von Symlinks unter Windows auf dieser Seite hat mir sehr geholfen, was erklärt, dass dies auch dann geschieht, wenn Ihr freigegebener Ordner beschreibbar ist.
Um dies zu beheben, müssen Sie die Symlinks-Funktion in VirtualBox aktivieren.
Führen Sie an der Eingabeaufforderung cmd Folgendes aus:
Dann überprüfen Sie durch:
quelle
Stimmen Sie mit Lorem überein, aber es ist nicht genug.
Führen Sie Virtualbox unter Windows als Administrator aus.
Stellen Sie sicher, dass Sie ausgeführt haben:
VBoxManage.exe setextradata YOUR_VM BoxInternal2/SharedFoldersEnableSymlinksCreate/YOUR_SHARED_FOLDER 1
Ersetzen Sie YOUR_VM und YOUR_SHARED_FOLDER durch Ihre Werte. Sie können den Wert überprüfen über:
VBoxManage.exe getextradata boot2docker-vm enumerate
Es gibt einen Virtualbox-Fehler , der dieses Problem verfolgt.
quelle
Die neueren Versionen von VirtualBox sollten Symlinks zulassen, wenn Sie VirtualBox als Administrator starten (Rechtsklick: Als Administrator ausführen).
Gleiches gilt für Vagrant-Boxen: Führen Sie einfach Ihre cmd.exe / PowerShell als Administrator aus und Sie können loslegen.
quelle
in dieser npm- ausgabe @drmyersii gebe ich eine großartige lösung, ich werde nur kopieren und einfügen, um nicht nur die antwort zu verlinken.
das hat bei mir super geklappt und jetzt kann ich gulp mit scotchbox verwenden .
quelle
Bei mir hat keine dieser Antworten funktioniert. Ich bin nicht sicher warum, aber ich glaube, es liegt daran, dass mein Anteil nfs ist. Daher konnte ich Symlinks nicht zulassen, selbst wenn ich als Administrator ausgeführt wurde und die setextradata-Einstellungen änderte. Ich habe mit gulp und einigen anderen Paketen gearbeitet, die Probleme zu haben scheinen, wenn sie --no-bin-links gehorchen . Es war STILL versucht, einige symbolische Verknüpfungen zu erstellen und offensichtlich fehlgeschlagen. Schließlich hat mich dieser Thread über Github zu einer "Lösung" gebracht, so abgedreht es auch sein mag. Ich habe das Projekt "einfach" in meinem nicht freigegebenen Ordner installiert und als NODEPATH festgelegt.
Der Vorbehalt betrifft den gesamten Server und den Arbeitsablauf beim Aktualisieren / Ändern der Verpackung.
quelle