node.js çakışmaları: / sbin / node vs / usr / bin / node


32

İki Ubuntu 12.10 makinem var: makine A bir VMWare VM ve makine B ve eski Acer dizüstü bilgisayar. Her iki makinede de apt-get kullanarak düğümü kurdum. Bununla birlikte, makine A ana ikiliyi /usr/bin/nodeve makine B'yi de kurar /usr/bin/nodejs. İşte gözlemlediğim bazı davranışlar:

  1. Her iki makine /usr/bin/nodede which nodekomuta cevaben döner . Ancak, B makinesinde böyle bir dosya yok.
  2. Komutun verilmesi nodeB makinesi için değil A makinesi için çalışır. B'de nodejsbunun yerine kullanmak zorundayım .
  3. B'de, / sbin / node adında bir ikili var, A'da yok.

Bu davranışlar, her iki makinede de geliştirilirken tutarsızlık sorununa neden olur. Şimdilik B'deki ikili dosyaları yeniden adlandırarak çalıştım:

sudo mv /sbin/node /sbin/node-sbin
sudo ln -s /usr/bin/nodejs /usr/bin/node

Bunu gerçekten düzeltmenin bir yolu var mı, böylece düğüm /usr/bin/nodebunun yerine kurulacak /usr/bin/nodejsmı?

Yanıtlar:


15

Ubuntu 13.10 da yukarıdaki cevapların tümü benim için işe yaramadı. Nodejs-legacy'yi kurduğumda nihayet çalıştı.

sudo apt-get install nodejs-legacy

Bu /usr/bin/nodebenim için doğru bir şekilde sağlanmış , örneğin nodemonkullanılabilecek.


Bunu neden yüklememiz gerektiğine dair bir fikrin var mı? Aslında bir şekilde sembolik bağlantı oluşturuyor mu? Neden düğüm nodejs için çalıştırılabilir ismini değiştirdi?
Augustin Riedinger

"Düğüm" adı çok daha eski bir programla çakışıyordu. Bkz lists.debian.org/debian-devel-announce/2012/07/msg00002.html altında ve Leftium cevabını.
Robie Basak,

36

güncelleme:nodejs-legacy paketi kullanmak için aşağıdaki değiştirilmiş talimatlar . ( düğümü eski hakkında daha fazla bilgi )

Çakışan düğüm paketini tamamen kaldırmayı deneyin:

sudo apt-get --purge remove node
sudo apt-get --purge remove nodejs-legacy
sudo apt-get --purge remove nodejs

sudo apt-get install nodejs-legacy

# Confirm it worked
node --version       # v0.10.13
ls -la `which node`  # ... /usr/bin/node -> /etc/alternatives/node

Bu node.js nodepaketini istemeden kurduğumda başıma geldi . apt-get remove nodeDoğru nodejspaketi kurmadan önce yaptım , ancak --purgeargüman gerekli sanırım .

Arkaplan bilgisi :

Düğüm paketiyle (Amatör Paket Radyo Düğüm Programı) bir adlandırma çakışması var ve düğüm düğümü ikilisi düğümden düğümlere yeniden adlandırıldı. / Usr / bin / node'u / usr / bin / nodejs ile symlink ya da bu çakışmayı önlemek için Amatör Paket Radyo Düğümü Programını kaldırabilirsiniz.


Arka plan bilgisi için teşekkür ederiz. Bu noktada, denemek için bu makinelerden hiçbirine sahip değilim, ancak umarım yakında bir gün tekrar ziyaret edebilirim.
Hai Vu

Bu sizi /usr/bin/nodeUbuntu 13.10'da almaz . @ user229115 kullanıcısının yanıtı yine de çalışıyor.
Jim Stewart,

1
Böylece Ubuntu 13.10 sudo apt-get install nodejs nodejs-legacysize nodebinode'yi node.js olarak verir. Fakat eğer zaten node(Amatör Paket Radyo Düğüm Programı) kurduysanız, onu kaldırmanız gerekecektir.
jonasfj

1
@AugustinRiedinger: Cevabımı güncelledim. 'Yanlış yapılandırılmış' paketleri temizlemenin ve paketi kurmanın bir arada nodejs-legacyçalışacağını düşünüyorum.
Leftium

1
Teşekkürler çok açık. Gerçekten de nodejs-lecacy, nodejsçalıştırılabilir dosyaya yalnızca bir bağlantı olabilir paketi kurarken çalışır ...
Augustin Riedinger

11

Ne yazık ki, benim için bir sembolik bağlantı oluşturma işe yaramadı. Benim için çalışmam ise takma isim oluşturmaktı. İçinde ~/.bashrcveya ~/.bash_aliases( ~/.bashrcbu dosyayı yüklerse), aşağıdaki satırı eklemeniz yeterlidir:

alias node="nodejs"

Konsol'a yazarak bash oturumunuzu yeniden başlatın, bashtakma adınız şimdi çalışacaktır.


2
Bir sembolik bağlantı oluşturduğumda, başka bir terminale başlayana kadar çalışmadı. Terminalinizi yeniden başlatmayı deneyin ... ya da sembolik bağlar / takma adlar olmadan çalışan cevabım ^^
Leftium

@Leftium: Ayrıca çalıştırmanız gerekir: source ~/.bashrc.bashrc dosyasını yeniden yüklemek için (terminali yeniden başlatmak istemiyorsanız) devamını oku ..
Deepak Joy

Yeni bir yerde sembolik bağlantı kurmak neredeyse kesinlikle hash nodemevcut terminalleriniz için bir çağrıya ihtiyaç duyar , çünkü modern mermiler daha önce PATH'de aranan komutların yerini hatırlar. Bu hashtür kabuklardaki yerleşik komut, aramayı yeniden yapmalarını ve yeni konumu hatırlamalarını söyler.
mtraceur


1

Geç cevap, ancak güncel bilgi için ...

Node.js'yi, github kurulum benioku düğümünden önerilen yöntemi kullanarak kurarsanız , apt-get repo'dan güncel olmak yerine , nodesource blog makalesindeki talimatları izlemenizi önerir , node.js nodekomutunu kullanarak çalışmalıdır. yanı sıra nodejskomut, yeni bir sembolik bağlantı yapmak zorunda kalmadan.

Makaleden bu yöntem:

# Note the new setup script name for Node.js v0.12
curl -sL https://deb.nodesource.com/setup_0.12 | sudo bash -

# Then install with:
sudo apt-get install -y nodejs

Bunun v0.12 için olduğuna dikkat edin, ki bu gelecekte uzaklaşmamak için modası geçmiş olacak.

Ayrıca, kurumsal bir proxy'nin (benim gibi) arkasındaysanız, proxy için gereken env değişkenlerini korumak için -E seçeneğini sudo komutuna eklemek isteyebilirsiniz:

curl -sL https://deb.nodesource.com/setup_0.12 | sudo -E bash -

1

On ubuntu 14.04 Aynı düğüm sorunu vardı. "Düğüm" çalışmıyor ve "düğümler" çalışıyordum. daha yeni yaptım

sudo apt-get remove node

ve bundan hemen sonra, düğüm çalışıyordu ve düğümler de çalışıyor :) Linux için yeniyim ve bu benim için bir sakınca. Ancak Bower çalışıyor !!!


0
sudo getconf LONG_BIT
sudo uname -p

Masaüstüm şu anda Ubuntu 15.10 AMD64, bu nedenle yükleme örneğimde şu URL'yi kullanacağım (yine, dağıtım değişebilir):

sudo wget https://nodejs.org/dist/v5.0.0/node-v5.0.0-linux-x64.tar.gz

Sonra dizini değiştirin sizin indirme dizinine:

sudo cd /home/name/Downloads

İndirme dizininizden, aşağıdakileri yürütün:

sudo tar -C /usr/local --strip-components 1 -xzf node-v5.0.0-linux-x64.tar.gz

Node.js kurulumunuzu aşağıdakilerle onaylayın:

sudo ls -l /usr/local/bin/node
sudo ls -l /usr/local/bin/npm

ref. http://www.hostingadvice.com/how-to/install-nodejs-ubuntu-14-04/


1
-1 Sadece tarkomut ihtiyacı var sudo.
muru 12:15

+1 Daha iyi bir yol için çok teşekkür ederim - benim için en iyi yol!
1111161171159459134
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.