NVM'yi kökten (veya sudo) kullanamıyorum


105

Uygulamamın, üzerinden çalıştırıldığında farklı NodeJS sürümünü kullandığından bahsetmiştim sudo.

$ node -v
v0.10.23
$ sudo node -v
v0.11.8-pre

Bu v0.11.8-pre bana bazı sorunlara neden oldu, bu yüzden kesinlikle kullanmak istemiyorum, ancak kök için değiştiremem.

$ sudo nvm use v0.10.23
sudo: nvm: command not found

Kök kullanıcıdan nvm yüklemeyi denedim, ancak "NVM zaten kurulu" hatası aldım, ancak çalıştırırken hala nvm bulunamadı sudo. Benim sorunum ne


3
sudo -s Ardından kurmayı deneyin nvm.
Games Brainiac

@GamesBrainiac Üzgünüm ama onu kökten yüklemeyi denediğimi yazdım
Vitalii Korsakov

Sıfırdan /root/.nvm/ ve yeniden yükleme nvm silmeye
Antonio E.

/root/.nvm yok. Nvm'yi sudo'dan kurdum ve normal kullanıcı homedir'e yüklendi
Vitalii Korsakov

Yanıtlar:


220

Aşağıdaki komut listesi (kaynak: digitalocean ) sorunu çözüyor gibi görünüyor

n=$(which node); \
n=${n%/bin/node}; \
chmod -R 755 $n/bin/*; \
sudo cp -r $n/{bin,lib,share} /usr/local

Yukarıdaki komut biraz karmaşıktır, ancak tek yaptığı, nvm aracılığıyla etkin olan düğümün herhangi bir sürümünü /usr/local/dizine kopyalamak (burada kullanıcının yüklediği global dosyaların bir linux VPS'de yaşaması gerekir) ve tüm kullanıcıların bunlara erişebilmesi için izinleri ayarlamak. .

Bu yardımcı olur umarım!


7
Teşekkürler bana yardımcı oldu.
Vishal Kumar Verma

7
Teşekkür ederim! Bu bana çok zaman kazandırdı
Quinton Pike

4
Mükemmel! Çok teşekkür ederim.
Jean-Baptiste Louazel

2
Harika! Dün gece tüm RasPi 3 sistemimi npm izinlerini umutsuzca değiştirerek mahvettim, bugün 3 saatini her npm çağrısı için sudo'ya ihtiyaç duymadan global olarak node / npm kurmak için en iyi çözümü aramak için harcadım. Çözümünüz bu yazıyla
bosch

3
Bu harika bir seçenek gibi görünüyor, ancak şu hataları almaya devam ediyorum:chmod: cannot operate on dangling symlink ‘/home/ec2-user/.nvm/versions/node/v7.1.0/bin/node-debug’ chmod: cannot operate on dangling symlink ‘/home/ec2-user/.nvm/versions/node/v7.1.0/bin/node-inspector’
trex005

130

Çözümüm, sürümlerinden sembolik bağlantılar oluşturmak nodeve npmbunu yapmak için kullanıyorum /usr/local/bin:

sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/node" "/usr/local/bin/node"
sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npm" "/usr/local/bin/npm"

Bu, tüm kullanıcılar tarafından kullanılabilir npmve nodekullanılabilir.


1
Harika çözüm. sadece "ikinci satırın sonuna" ekleyin ... (bunu nedense kendim düzenleyemedim)
Rayee Roded

1
Harika, bu açık ara en iyi çözüm. Bu şekilde, root her zaman nvm kullanıcısında kullandığınız aynı npm / node sürümünü kullanacaktır, teşekkürler!
luiscval Almeida

3
Harika bir çözüm, ancak kullandığınız düğümün sürümünü değiştirirseniz, yukarıdaki komutları yeniden çalıştırmanız gerekir.
door_number_three

4
Kullandığım npxoldukça sık. Ben de ekledim:sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npx" "/usr/local/bin/npx"
thomas

@SimpleJ aynısını nasıl yapardınbabel-node
user566245

14

Senin sorunun, nvmkullandığın yolda bu değil sudo.

Yani yazın

$ which nvm

ve sonuç şöyle bir şey olacak

/home/abc/mynvm/nvm

Şimdi tekrar deneyin sudo:

sudo /home/abc/mynvm/nvm use v0.10.23

Daha sonra kök kullanıcının 0.10.13 sürümünü bulamaması sorunuyla karşılaştığınızı varsayıyorum, ancak bir sonraki hata mesajını görelim ...


42
which nvmhiçbir şey çıkmadı
Vitalii Korsakov

6
kök için de hiçbir çıktı
vermez

3
Sorun şu ki, asla root olarak giriş yapmam. Neden yapayım? Herhangi bir root erişimine ihtiyacım olursa her zaman kullanırım sudo. Evet, root olarak giriş yapıp nvm kurabilirim, ancak ileride çalışamam sudo nvm use v0.10.25. Bu yüzden sudo nodekullanıcıdan da kullanamadım .
Vitalii Korsakov

2
which nvmhiç çalışmıyor, değil mi? nvmçalıştırılabilir değil, bir kabuk işlevidir. github.com/creationix/nvm/issues/540
Mat

2
Geçenlerde which nvmburada hakkında benzer bir soru sordum : stackoverflow.com/questions/49156104/…type nvm Tanımını ortaya çıkarmak için kullanın . Matt'in dediği gibi, bu bir kabuk işlevi.
Martin Braun

13

Bunun temel nedeni, nvmgerçek bir program olmamasıdır. Bu kullanıcının yüklü alır bir bash fonksiyonu var .profile, .bashrcyoksa ... Yani sudootomatik olarak en diğer programlar gibi $ YOLUNDAN onu almak değil.

Alternatif bir düğüm sürümü yöneticisi n: https://github.com/tj/n . Gerçek bir program olduğunu, bu nedenle sudo(uzun olduğunca herhangi hacks $ PATH yoluyla gelip alacak sudovardır /usr/local/binonun $ PATH).

sudo npm install -g n  # install 'n' globally
which n                # should be /usr/local/bin/n

sudo n lts             # need sudo to switch node versions
node --version         # v6.10.0
sudo node --version    # v6.10.0

Mükemmel. Teşekkürler "nvm bir sorun değil, bir bash işlevi" :)
başka bir

Haha, "program" yerine "problem" yazım yanlışımın farkına vardım;).
başka bir

7

README'ye göre

Nvm kullanırken sudoglobal olarak bir modül kurmanıza gerek yoktur npm -g, bu yüzden sudo npm install -g gruntyapmak yerine yapınnpm install -g grunt

Sudo npm'ye mi ihtiyacınız var?

Benim durumumda, sudo npm run startkök erişimi gerektiren bazı dosyalara erişime ihtiyacım var. Bu konuya göre ,

Kullanmıyorsun sudo. Bunun yerine, nvm'ye sahip kullanıcının dosyaya erişimi olması için dosyayı chmod / chown yapmalısınız ;.

Toplamda

Nvm geliştiricisi, şunlara ihtiyacımız olmadığına kesinlikle inanıyor sudo: P


6

Senin problemin bende vardı. Sonunda bunun etrafında çalıştım. İşte benim çözümüm:

  1. Nvm ve nodejs'yi kaldırın. İşte bazı yararlı bağlantılar: nvm'nin kaldırılması . Nodejs'yi apt-get kullanarak kurduysanız, komutla kaldırabilirsiniz apt-get purge nodejs.
  2. Global bir nvm yükleyin. Bu sayfaya bakın: nvm global . Dediği gibi, "Standart nvm, çok kullanıcılı veya köklü ortamlarda çalışırken bilinen zorluklara sahiptir."

Terminalinizi yeniden başlattıktan sonra komutu çalıştırabilirsiniz sudo nvm ls.


1
Bu şube 12 taahhüt önde, 1123 kreasyonix: master arkasında. doğrudan nvm için xtuple deposundan alınmıştır
MrMesees

6
$ sudo bash -ic "nvm use stable; npm -v"
Now using node v6.3.1 (npm v3.10.3)
3.10.3

4

Ben de sahip olduğum makinemde aynısını denedim nvmve biraz farklı bir yanıt aldım:

$ sudo node --version                                                                                                                                                                    
sudo: node: command not found

Benim tahminim, nvm dışında 0.11 node'u kurduğunuz. ( Paket yöneticisi aracılığıyla veya hatta kaynaktan )

Bu nedenle, düğümü sudo aracılığıyla çalıştırmak, bunun yerine bu bağımsız düğümü alır.

Bu mantıklı mı yoksa yanılıyor muyum?


Evet haklısın. Ben yükledim düğümünü ve ardından NVM . Ancak her şey normal kullanıcı için iyi çalışıyor ve kök için çalışmıyor.
Vitalii Korsakov

1
Oh tamam. O halde, nvm'nin root olarak çalıştırılmaması gerektiğini düşünüyorum. Aslında, kullanıcı arazisinde koşmanın istenen bir özellik olması çok hoş. Ancak, bu size yardımcı olabilir: github.com/creationix/nvm/issues/5
Aurélien

Görünüşe göre bu adam sudo modunda çalışan özel bir nvm yaptı: github.com/xtuple/nvm . Ne yazık ki sadece sudo modunda. Kabul edilebilir mi bilmiyorum
Aurélien Thieriot

0

NVM'yi global olarak yükleyin
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | sudo bash


kreasyonix yazarlar nvm, bu üçüncü taraf nvm konusunda çok dikkatli olurdum ...
MrMesees

4
Bu şube 12 taahhüt önde, 1123 kreasyonix: master arkasında. Bu bir sorun, lütfen bağlantıyı kaldırın
MrMesees

8
Bu cevap gözlerimi kanıyor. Sadece olmamalı , bir şey indirmek ve bir sudo bash çalıştırmak wtf
CharlyDelta

Aslında wget komutu içinde bugünlerde uçları | bash, hiçbir sudo her yerde: nvm-sh / nvm: Düğüm Sürüm Yöneticisi
Elise van Looij

0

Bunun için en kolay çözüm muhtemelen nvm.sh çalıştırılabilir dosyasını nerede olursa olsun vurmak olacaktır.

sudo /home/ubuntu/.nvm/nvm.sh install node

Bu benim için iyi çalışıyor (kurulum yolunun bu olduğunu varsayarak).

Tam kurulum prosedürü şöyle görünecektir:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
export NVM_DIR="/home/ubuntu/.nvm"

[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

Ve sonra yeni yüklenen nvm.sh dosyasını vurmak için yukarıdaki komutu çalıştırabilirsiniz.

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.