Windows paylaşımına paket yüklerken Npm hataları


52

Windows 8 sunucumda VMware konuğu olarak çalışan Ubuntu 12.10'a sahibim.

Windows 8 Host cihazımda bir klasör paylaştım ve şu girişi kullanarak başlangıçta Ubuntu konuğuna monte edildi fstab:

//myhost/work /work cifs credentials=/home/user/.smbcredentials,noserverino,nounix,uid=user,gid=user,file_mode=0777,dir_mode=0777 0 0 

Paylaşım iyi çalışıyor ve nginx gibi bir web sunucusu tarafından da sunulabiliyor.

Ancak, npm kullanarak node.js paketlerini kurduğumda sorunlar var gibi görünüyor, bunun gibi bir sürü hata alıyorum:

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  grunt@0.4.1 { [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!     <npm-@googlegroups.com>

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!     <npm-@googlegroups.com>

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!     <npm-@googlegroups.com>

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!     <npm-@googlegroups.com>
...
npm ERR! not ok code 0
user@ubuntu:/work/test$ 

Bu soruna ne sebep olabilir? Ben can komut satırından chmod, rmdirherhangi bir sorun olmadan sudoyu kullanarak diğer şeyler arasında.

Yanıtlar:


118

Birlikte koşmak --no-bin-linksbenim için düzeltti:

npm install --no-bin-links

--no-bin-linksnpmsembolik bağlantılar oluşturmamalarını söyler . Sembollerin Windows paylaşımına çevrilmesinin bir yolu (bildiğim kadarıyla) yok.


15
Keşke 200 kez daha oy verebilseydim. Bu Vagrant'ın pencerelerde kullanılmasını mümkün kılar.
Clint

1
npm install - no-bin-link de çalışır.
JamieJag

2
Mükemmel cevap! Ancak bu işi Grunt'tan bir package.json dosyasının "devDependencies" ile yapmanın bir yolu var mı? Bu harika olurdu :)
Jelmer

1
Teşekkür ederim! Vagrant bunu Windows için resmi belgelerine koymalıdır. Tüm puanlarım size ait.
htxryan

1
Teşekkürler, günümü kurtardın, 1 günden beri mücadele ediyordum
Manjunath Siddappa

6

Pencerelerde sembolik linkler oluşturmaya nasıl izin verilir Bu sayfa , paylaşılan klasörünüz yazılabilir olsa bile bunun olacağını açıklayan çok yardımcı oldu.

Bunu düzeltmek için, VirtualBox'ta sembolik özelliği etkinleştirmeniz gerekir.

Cmd komut isteminde çalıştır:

VBoxManage setextradata YOURVMNAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/YOURSHAREFOLDERNAME 1

Ardından şunları doğrulayın:

VBoxManage getextradata YOURVMNAME enumerate

Kullanıcınız Administrators grubuna aitse VirtualBox'ı "Yönetici Olarak Çalıştır" ile başlatın!

Varsayılan olarak, Windows 7 güvenlik ilkesi potansiyel bir güvenlik tehdidi olduğu için sembolik bağlantılar oluşturmaya izin vermez. "Secpol.msc" dosyasını çalıştırın ve "Yerel Politikalar-Kullanıcı Hakları Atamaları" 'na gidin ve kullanıcıyı "sembolik bağlantılar oluştur" a ekleyin. Bunu denemedim ama sanal kutu normal bir kullanıcı olarak çalıştırılabilir.


3

Lorem ile aynı fikirde, ama yeterli değil.

  1. Virtualbox'ı 'admininstrator' olarak Windows'ta çalıştırın.

  2. Gerçekleştirdiğinizden emin olun: VBoxManage.exe setextradata YOUR_VM BoxInternal2/SharedFoldersEnableSymlinksCreate/YOUR_SHARED_FOLDER 1

YOUR_VM ve YOUR_SHARED_FOLDER değerini değerlerinizle değiştirin. Değeri şuradan kontrol edebilirsiniz:VBoxManage.exe getextradata boot2docker-vm enumerate

Orada bir virtualbox hata bu sorunu izleme.


1

VirtualBox'ın daha yeni sürümleri, VirtualBox'ı Yönetici olarak başlatırsanız sembolik bağlantılara izin vermelidir (sağ tıklayın: Yönetici olarak çalıştır).

Aynısı serseri kutuları için de geçerlidir: cmd.exe / PowerShell'inizi admin olarak çalıştırın ve gitmeniz iyi olur.


0

içinde bu npm konuda mükemmel bir çözüm sağlamak @drmyersii, ben sadece kopyalayıp sadece cevap bağlayamayacağınızı yapmak yapıştırın.

Buradaki asıl çözüm, yapılandırmanızı Vagrantfile'deki Windows ana bilgisayarlarında sembolik bağlantılara izin verecek şekilde ayarlamak olacaktır. İşte bir örnek (VirtualBox'ta çalıştırdığınızı varsayarsak):

config.vm.provider "virtualbox" do |v|
    v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant", "1"]
end

Bu benim için harika çalıştı ve şimdi scotchbox ile yudum kullanabilirsiniz .


0

Benim için bu cevapların hiçbiri işe yaramadı. Neden olduğundan emin değilim ama payım nfs olduğundan dolayı inanıyorum. Bu yüzden Yönetici olarak çalışırken ve setextradata ayarlarını değiştirirken bile sembolik bağlantılara izin veremedim. Ben yudum ile çalışıyordu ve görünmek diğer bazı paketleri var sorunları itaat --no-bin-link. Bazı sembolik bağlar yaratmaya çalışan ve açıkça başarısız olan STILL idi. Sonunda Github'daki bu konu beni, olduğu gibi hack bir "çözüm" olarak gösterdi. Projeyi paylaşılmayan klasörüme "basitçe" kurdum ve NODEPATH olarak ayarladım.

export NODE_PATH=/home/vagrant/PROJECTNAME/node_modules

Dikkat, tüm sunucuyu ve ambalajı güncelleme / değiştirme iş akışını etkileyecektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.