2013-02-16 45 views

Trả lời

106

Có hai gói trong Ubuntu có tên tương tự, nútnodejs.

node thực hiện điều này,

Mô tả-en: Chương trình Amateur Packet Radio Node. Chương trình nút chấp nhận TCP/IP và kết nối mạng vô tuyến gói và trình bày cho người dùng một giao diện cho phép họ tạo kết nối cổng tới máy chủ từ xa bằng nhiều giao thức radio nghiệp dư.

nodejs thực hiện điều này,

Mô tả-en: Node.js server-side dựa trên sự kiện javascript cơ Node.js cũng tương tự như trong thiết kế đến và chịu ảnh hưởng của hệ thống như tổ chức sự kiện Máy Ruby hay Python Twisted của . Nó lấy mô hình sự kiện thêm một chút - nó trình bày vòng lặp sự kiện như là một ngôn ngữ xây dựng thay vì như một thư viện. Node.js được đóng gói với một số thư viện hữu ích để xử lý các tác vụ máy chủ: Hệ thống, Sự kiện, I/O chuẩn, Mô-đun, Bộ hẹn giờ, Quy trình con, POSIX, HTTP, Phân tích cú pháp, TCP, DNS, Assert, Đường dẫn, URL, Chuỗi truy vấn.

Fedora cũng tuân theo lược đồ đặt tên gói tương tự. Do đó, số nhị phân trong nodejs phải được đổi tên thành nodejs từ số node gốc. Tuy nhiên, đây không phải là kỹ thuật kosher: và hầu hết các chương trình nodejs (và các thư viện được cài đặt với npm) giả định rằng nhị phân nút là node. Nếu bạn muốn làm việc này thì cách đơn giản nhất là kết hợp hai liên kết với nhau. Nếu bạn thực hiện tuyến đường này, không cài đặt gói node xử lý các nội dung trên radio Amateur Packet.

sudo ln -s /usr/bin/nodejs /usr/local/bin/node 

Hoặc, trong trường hợp nút, tôi khuyên bạn nên sử dụng n và không cài đặt node. Chỉ cần cài đặt npm (mà sẽ cài đặt nút), sau đó loại bỏ npm, sau đó nói với apt để làm sạch nó lên. Để làm điều này, bạn chỉ cần chạy

sudo apt-get install npm 
sudo npm install -g n 
sudo n latest 
sudo apt-get --purge remove npm 
sudo apt-get autoremove 

Có nhà quản lý distro nhị phân khác mà thậm chí làm việc từ một kịch bản shell như nvm nhưng cá nhân tôi thích n. Hãy suy nghĩ của n như một apt cho chỉ là một điều: nhị phân nút mà nó cài đặt để /usr/local/bin.

Tại sao xóa npm? Đã không. apt-get --purge remove có thể chỉ từng xóa mọi thứ do trình quản lý gói cài đặt. n latest hoạt động bên ngoài trình quản lý gói. Có hai npms nếu bạn thực hiện việc này,

  1. phiên bản được cài đặt bởi bản phân phối (Debian/Ubuntu) sử dụng apt-get.
  2. phiên bản được cài đặt bởi n latest.

Không có điểm nào trong phiên bản cũ của bản phân phối. Và, thậm chí tệ hơn, nếu phiên bản đó hoạt động, nó có khả năng có thể cài đặt vào một vị trí khác và có các sửa đổi Debian trong đó giả định thư mục cài đặt Debian. Tốt hơn nên sử dụng một trong hai hoặc không phải cả hai.

+2

giải thích tốt. đây là một trong những lỗi ngu ngốc nhất mà tôi từng gặp phải ... không phải người bảo trì gói phải đảm bảo những thứ như thế này không xảy ra sao? –

+2

Không, bạn chỉ có thể có một nhị phân với tên của nút 'với bất kỳ trình quản lý gói hợp lý nào, tuy nhiên một bản phân phối hợp lý sẽ nhận ra rằng bất tiện nhiều người vì một gói bị lỗi lần cuối một thập kỷ trước, không có ý nghĩa. Đây là sự lặp lại của git, so với git-core. –

+3

Tôi hơi bối rối vì điều này, tại sao bạn xóa npm ở cuối? Nó không cần thiết phải không? –

4

Trong trường hợp của tôi là vì trong biến môi trường PATH, tôi có "~/progs/node/bin /" và "~" dường như không được giải quyết bằng cách env ... thay thế bằng đường dẫn ("/ home/myuser/node/bin") đã giải quyết được sự cố của tôi.

+0

Tuyệt vời! Làm thế nào bạn tìm được? –

+1

Bằng cách thử tất cả các loại điều điên rồ khác nhau ... :) –

21

bạn nên cài đặt gói nodejs-di sản trong đó có một liên kết từ/usr/bin/nút đến/usr/bin/nodejs

$ sudo apt-get install nodejs-legacy

0

làm điều này trong cmd

sudo apt-get install nodejs-legacy 
chmod your folder 700 (optional) 
1

này giải pháp

export PATH="$HOME/opt/nodejs/bin:$PATH" 

giải quyết vấn đề này cho tôi (nó sẽ hoạt động giả định $ HOME biến được đặt đúng). Nó cũng cho phép tôi tránh khó mã hóa đường dẫn đến thư mục chính của tôi (ví dụ để tôi có thể sử dụng lại .bash_profile của mình với các tài khoản/máy chủ khác nhau nếu cần)

Các vấn đề liên quan