Không thể cài đặt các gói bằng trình quản lý gói nút trong Ubuntu

506
Sayem 2014-01-17 07:02.

Tên trình thông dịch NodeJS ( node) trên Ubuntu đã được đổi tên thành nodejsdo xung đột tên với gói khác. Đây là những gì readme. Debian nói:

Tên ngược dòng cho lệnh thông dịch Node.js là "nút". Trong Debian, lệnh thông dịch đã được đổi thành "nodejs".

Điều này được thực hiện để ngăn chặn xung đột không gian tên: các lệnh khác sử dụng cùng tên trong phần ngược dòng của chúng, chẳng hạn như nút ax25 từ gói "nút".

Các tập lệnh gọi Node.js dưới dạng lệnh shell phải được thay đổi thành sử dụng lệnh "nodejs".

Tuy nhiên, việc sử dụng nodejs sẽ khiến cho việc cài đặt các gói bằng cách sử dụng npm. Cài đặt gói không thành công với lỗi sau:

sh: 1: node: not found
npm WARN This failure might be due to the use of legacy binary "node"
npm WARN For further explanations, please read /usr/share/doc/nodejs/README.Debian

Làm cách nào để làm cho npm hiểu rằng nodejs đã được cài đặt trên hệ thống nhưng tên trình thông dịch lại khác?

17 answers

1095
vbo 2014-01-17 09:34.

TL; DR:

sudo apt-get install nodejs-legacy

Trước hết hãy để tôi làm rõ tình hình một chút. Vào mùa hè năm 2012, những người bảo trì Debian đã quyết định đổi tên tệp thi hành Node.js để ngăn chặn một số loại xung đột không gian tên với gói khác. Đây là một quyết định rất khó đối với Ủy ban Kỹ thuật Debian, vì nó phá vỡ khả năng tương thích ngược.

Sau đây là trích dẫn từ dự thảo nghị quyết của Ủy ban, được xuất bản trong danh sách gửi thư Debian :

  1. Gói nodejs sẽ được thay đổi thành cung cấp / usr / bin / nodejs, không phải / usr / bin / node. Gói phải khai báo mối quan hệ Breaks: với bất kỳ gói nào trong Debian tham chiếu / usr / bin / node.

  2. Gói nguồn nodejs cũng sẽ cung cấp gói nhị phân nodejs-kế thừa ở Priority: extra có chứa / usr / bin / node dưới dạng liên kết biểu tượng tới / usr / bin / nodejs. Không có gói nào trong kho lưu trữ có thể phụ thuộc hoặc đề xuất gói nodejs-inherit, chỉ được cung cấp cho
    khả năng tương thích ngược dòng . Khai báo gói này cũng sẽ khai báo mối quan hệ Xung đột: với gói nút.

<...>

Đoạn 2 là giải pháp thực tế cho vấn đề của OP. OP nên cố gắng cài đặt gói này thay vì thực hiện liên kết biểu tượng bằng tay. Đây là một liên kết đến gói này trong trang web chỉ mục gói Debian .

Nó có thể được cài đặt bằng cách sử dụng sudo apt-get install nodejs-legacy.

Tôi không tìm thấy bất kỳ thông tin nào về việc các nhà phát triển NPM áp dụng toàn bộ điều này, nhưng tôi nghĩ rằng npmgói này sẽ được sửa chữa vào một thời điểm nào đó và nodejs-legacytrở thành di sản thực sự.

113
leorex 2014-01-17 07:09.

Thử liên kết nút với nodejs. Trước tiên hãy tìm hiểu xem nodejs ở đâu

whereis nodejs

Sau đó, nút liên kết mềm đến nodejs

ln -s [the path of nodejs] /usr/bin/node 

Tôi giả sử / usr / bin nằm trong đường dẫn thực thi của bạn. Sau đó, bạn có thể kiểm tra bằng cách nhập nút hoặc npm vào dòng lệnh của mình và mọi thứ sẽ hoạt động ngay bây giờ.

44
Eduardo Dennis 2014-11-13 10:10.

Bạn cũng có thể cài đặt Nodejs bằng NVM hoặc Nodejs Version Manager Có rất nhiều lợi ích khi sử dụng trình quản lý phiên bản. Một trong số họ là bạn không phải lo lắng về vấn đề này.


Hướng dẫn:


sudo apt-get update
sudo apt-get install build-essential libssl-dev

Khi các gói điều kiện tiên quyết được cài đặt, bạn có thể kéo xuống tập lệnh cài đặt nvm từ trang GitHub của dự án. Số phiên bản có thể khác, nhưng nhìn chung, bạn có thể tải và cài đặt theo cú pháp sau:

curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | sh

Thao tác này sẽ tải xuống tập lệnh và chạy nó. Nó sẽ cài đặt phần mềm vào một thư mục con của thư mục chính của bạn tại ~/.nvm. Nó cũng sẽ thêm các dòng cần thiết vào ~/.profiletệp của bạn để sử dụng tệp.

Để có quyền truy cập vào chức năng nvm, bạn sẽ cần đăng xuất và đăng nhập lại hoặc bạn có thể nguồn tệp ~ / .profile để phiên hiện tại của bạn biết về các thay đổi:

source ~/.profile

Bây giờ bạn đã cài đặt nvm, bạn có thể cài đặt các phiên bản Node.js riêng biệt.

Để tìm hiểu các phiên bản Node.js có sẵn để cài đặt, bạn có thể nhập:

nvm ls-remote
. . .

v0.11.10
v0.11.11
v0.11.12
v0.11.13
v0.11.14

Như bạn có thể thấy, phiên bản mới nhất tại thời điểm viết bài này là v0.11.14. Bạn có thể cài đặt bằng cách gõ:

nvm install 0.11.14

Thông thường, nvm sẽ chuyển sang sử dụng phiên bản được cài đặt gần đây nhất. Bạn có thể yêu cầu nvm sử dụng phiên bản chúng tôi vừa tải xuống một cách rõ ràng bằng cách nhập:

nvm use 0.11.14

Khi bạn cài đặt Node.js bằng nvm, tệp thực thi được gọi là nút. Bạn có thể xem phiên bản hiện đang được shell sử dụng bằng cách gõ:

node -v

Hướng dẫn comeplete có thể được tìm thấy ở đây

20
Ritesh 2016-07-12 23:48.
  1. Cài đặt nvmlần đầu bằng:

    curl https://raw.githubusercontent.com/creationix/nvm/v0.11.1/install.sh | bash
    
  2. Chạy lệnh

    source ~/.profile
    
  3. Bây giờ hãy chạy cái này và nó sẽ hiển thị tất cả các gói đã cài đặt hoặc các phiên bản khác của gói:

    nvm ls-remote
    
  4. Các gói đã cài đặt sẽ có màu xanh lục. Cài đặt bất kỳ phiên bản nào bạn muốn:

    nvm install 6.0.0
    
  5. Kiểm tra nơi chưa được cài đặt:

    which node
    
  6. Kiểm tra phiên bản hiện tại:

    node -v
    
    n=$(which node);
    n=${n%/bin/node}; 
    chmod -R 755 $n/bin/*; 
    sudo cp -r $n/{bin,lib,share} /usr/local
    
14
Xiao Peng - ZenUML.com 2016-03-08 17:53.
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
source ~/.profile

Kết hợp câu trả lời được chấp nhận với source ~/.profiletừ nhận xét đã được gấp lại và một số lệnh dọn dẹp trước đó. Nhiều khả năng bạn cũng sẽ cần sudo apt-get install npmsau.

12
shrishinde 2017-08-04 01:07.

đối với tôi vấn đề đã được giải quyết bởi,

sudo apt-get remove node
sudo apt-get remove nodejs
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo ln -s /usr/bin/nodejs /usr/bin/node
alias node=nodejs
rm -r /usr/local/lib/python2.7/dist-packages/localstack/node_modules
npm install -g [email protected] || sudo npm install -g [email protected]
10
Ville 2015-12-02 18:11.

Đây là một cách tiếp cận khác mà tôi sử dụng vì tôi thích n để dễ dàng chuyển đổi giữa các phiên bản nút.

Trên hệ thống Ubuntu mới, trước tiên hãy cài đặt nút 'hệ thống':

curl -sL https://deb.nodesource.com/setup | sudo bash -

Sau đó cài đặt n mô-đun trên toàn cầu:

npm install -g n

Vì nút hệ thống được cài đặt trước (ở trên), hệ thống lựa chọn thay thế có thể được sử dụng để trỏ đến nút được cung cấp bởi n . Trước tiên, hãy đảm bảo rằng hệ thống lựa chọn thay thế không có gì cho nút:

update-alternatives --remove-all node

Sau đó thêm nút được cung cấp bởi n :

update-alternatives --install /usr/bin/node node /usr/local/bin/node 1

Thêm nút tiếp theo được cung cấp bởi hệ thống (nút đã được cài đặt với curl):

update-alternatives --install /usr/bin/node node /usr/bin/nodejs 2

Bây giờ chọn nút được cung cấp bởi n bằng menu tương tác (chọn /usr/local/bin/nodetừ menu được trình bày bởi lệnh sau):

update-alternatives --config node

Cuối cùng, vì /usr/local/binthường có mức độ ưu tiên cao hơn trong PATH /usr/bin, bí danh sau phải được tạo (nhập .bashrc hoặc .zshrc của bạn) nếu nút hệ thống lựa chọn thay thế có hiệu quả; nếu không, nút được cài đặt với n trong / usr / local / bin luôn được ưu tiên:

alias node='/usr/bin/node'

Bây giờ bạn có thể dễ dàng chuyển đổi giữa các phiên bản nút với n <desired node version number>.

9
Suzana 2016-02-10 14:52.

Trên Linux Mint 17, tôi đã thử cả hai giải pháp (tạo liên kết biểu tượng hoặc sử dụng nodejs-legacygói) mà không thành công.

Điều duy nhất cuối cùng hiệu quả với tôi là sử dụng ppa từ Chris Lea:

sudo apt-get purge node-*
sudo apt-get autoremove 
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

Phiên bản nút đã cài đặt này 10.37 và npm 1.4.28. Sau đó, tôi có thể cài đặt các gói trên toàn cầu.

9
xdeepakv 2016-12-08 23:47.

Như những người khác đã đề cập, tôi sẽ đề nghị không sử dụng "sudo apt-get" để cài đặt nút hoặc bất kỳ thư viện phát triển nào. Bạn có thể tải xuống phiên bản yêu cầu từ https://nodejs.org/dist/v6.9.2/ và thiết lập môi trường của riêng bạn.

Tôi sẽ giới thiệu các công cụ như nvmn , để quản lý phiên bản nút của bạn. Rất thuận tiện để chuyển đổi và làm việc với các mô-đun này. https://github.com/creationix/nvm https://github.com/tj/n

Hoặc viết bash cơ bản để tải xuống zip / tar, giải nén thư mục di chuyển và tạo một liên kết mềm. Bất cứ khi nào bạn cần cập nhật, chỉ cần trỏ liên kết mềm cũ đến phiên bản tải xuống mới. Giống như tôi đã tạo cho riêng mình, bạn có thể tham khảo: https://github.com/deepakshrma/NodeJs-4.0-Reference-Guide/blob/master/nodejs-installer.sh

#Go to home
cd ~
#run command
#New Script
wget https://raw.githubusercontent.com/deepakshrma/NodeJs-4.0-Reference-Guide/master/nodejs-installer.sh 
bash nodejs-installer.sh -v lts
#here -v or --version can be sepecific to 0.10.37 or it could be latest/lts 
#Examples
bash nodejs-installer.sh -v lts
bash nodejs-installer.sh -v latest
bash nodejs-installer.sh -v 4.4.2
6
Krzysztof Karolak 2016-12-08 10:07.

Giải pháp đơn giản từ đây

curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash --
sudo apt-get install nodejs

Bạn có thể chỉ định phiên bản bằng cách thay đổi giá trị setup_x.x, ví dụ: thành setup_5.x

5
frostcs 2017-01-22 09:40.

Hệ thống của bạn không thể phát hiện nút đường dẫn js nhị phân.

1. nút nào

2. Sau đó nút liên kết mềm đến nodejs

ln -s [the path of nodejs] /usr/bin/node 

Tôi giả sử / usr / bin nằm trong đường dẫn thực thi của bạn. Sau đó, bạn có thể kiểm tra bằng cách nhập nút hoặc npm vào dòng lệnh của mình và mọi thứ sẽ hoạt động ngay bây giờ.

4
davide andreazzini 2016-03-22 04:09.

Gỡ cài đặt bất kỳ phiên bản nút nào bạn có

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

cài đặt nvm (Trình quản lý phiên bản nút) https://github.com/creationix/nvm

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash

Bây giờ bạn có thể cài đặt bất kỳ phiên bản nút nào bạn muốn và chuyển đổi giữa các phiên bản.

2
Juan Antonio Aguilar 2015-08-10 04:01.

Tôi đã sửa nó khi hủy liên kết / usr / sbin / node (được liên kết với gói ax25-node), sau đó tôi đã tạo một liên kết đến nodejs bằng cách sử dụng điều này trên dòng lệnh

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

Bởi vì gói như karma không hoạt động với tên nodejs, tuy nhiên việc thay đổi dòng đầu tiên của tập lệnh karma từ node sang nodejs, nhưng tôi muốn giải quyết vấn đề này một lần và mãi mãi

1
Jimmy 2015-08-15 01:34.

Đối với tôi, cách khắc phục là loại bỏ các gói nút * và cả các gói npm.

Sau đó, cài đặt mới như:

sudo apt-get install autoclean
sudo apt-get install nodejs-legacy
npm install
1
Vinayk93 2017-03-27 09:41.

Vấn đề không phải là trong trình cài đặt, hãy
thay thế nodejs bằng nút hoặc thay đổi đường dẫn từ / usr / bin / nodejs thành / usr / bin / node

1
Dinesh Jain 2017-08-03 05:55.

Đây là nút của bạn chưa được cài đặt đúng cách, trước tiên bạn cần gỡ cài đặt nút sau đó cài đặt lại. Để cài đặt nút này, điều này có thể giúp bạn http://array151.com/blog/nodejs-tutorial-and-set-up/

sau đó bạn có thể cài đặt các gói một cách dễ dàng. Để cài đặt các gói, điều này có thể giúp bạn

http://array151.com/blog/npm-node-package-manager/

0
Nitish Agarwal 2016-01-08 07:54.

bạn có thể tạo một ln -s nodejsnút liên kết với /usr/bin hy vọng điều này giải quyết được vấn đề của bạn.

Related questions

MORE COOL STUFF

Cate Blanchett chia tay chồng sau 3 ngày bên nhau và vẫn kết hôn với anh ấy 25 năm sau

Cate Blanchett chia tay chồng sau 3 ngày bên nhau và vẫn kết hôn với anh ấy 25 năm sau

Cate Blanchett đã bất chấp những lời khuyên hẹn hò điển hình khi cô gặp chồng mình.

Tại sao Michael Sheen là một diễn viên phi lợi nhuận

Tại sao Michael Sheen là một diễn viên phi lợi nhuận

Michael Sheen là một diễn viên phi lợi nhuận nhưng chính xác thì điều đó có nghĩa là gì?

Hallmark Star Colin Egglesfield Các món ăn gây xúc động mạnh đối với người hâm mộ tại RomaDrama Live! [Loại trừ]

Hallmark Star Colin Egglesfield Các món ăn gây xúc động mạnh đối với người hâm mộ tại RomaDrama Live! [Loại trừ]

Ngôi sao của Hallmark Colin Egglesfield chia sẻ về những cuộc gặp gỡ với người hâm mộ ly kỳ tại RomaDrama Live! cộng với chương trình INSPIRE của anh ấy tại đại hội.

Tại sao bạn không thể phát trực tuyến 'chương trình truyền hình phía Bắc'

Tại sao bạn không thể phát trực tuyến 'chương trình truyền hình phía Bắc'

Bạn sẽ phải phủi sạch đầu đĩa Blu-ray hoặc DVD để xem tại sao Northern Exposure trở thành một trong những chương trình nổi tiếng nhất của thập niên 90.

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

8 công dụng tuyệt vời của Baking Soda và Giấm

8 công dụng tuyệt vời của Baking Soda và Giấm

Bạn biết đấy, hai sản phẩm này là nguồn điện để làm sạch, riêng chúng. Nhưng cùng với nhau, chúng có một loạt công dụng hoàn toàn khác.

Hạn hán, biến đổi khí hậu đe dọa tương lai của thủy điện Hoa Kỳ

Hạn hán, biến đổi khí hậu đe dọa tương lai của thủy điện Hoa Kỳ

Thủy điện rất cần thiết cho lưới điện của Hoa Kỳ, nhưng nó chỉ tạo ra năng lượng khi có nước di chuyển. Bao nhiêu nhà máy thủy điện có thể gặp nguy hiểm khi các hồ và sông cạn kiệt?

Quyên góp tóc của bạn để giúp giữ nước sạch của chúng tôi

Quyên góp tóc của bạn để giúp giữ nước sạch của chúng tôi

Tóc tỉa từ các tiệm và các khoản quyên góp cá nhân có thể được tái sử dụng như những tấm thảm thấm dầu và giúp bảo vệ môi trường.

Trong Saturday Night Live, The Bachelor is Bland và Tina Fey trở lại với vai 'Crazy' Sarah Palin

Trong Saturday Night Live, The Bachelor is Bland và Tina Fey trở lại với vai 'Crazy' Sarah Palin

Sau khi Sarah Palin tán thành Donald Trump vào đầu tuần này, gần như không thể tránh khỏi việc Tina Fey sẽ trở lại Saturday Night Live để thăm lại ấn tượng Palin cổ điển của cô. Và Fey chắc chắn đã không làm thất vọng, cô ấy đã đưa ra một lời khen ngợi không hề nhẹ về bài phát biểu chứng thực Iowa quanh co và khó hiểu của Palin trong khi Trump của Darrell Hammond đưa ra bình luận xuyên suốt.

Đây có phải là sự khởi đầu cho sự kết thúc của việc giam giữ Brittney Griner?

Đây có phải là sự khởi đầu cho sự kết thúc của việc giam giữ Brittney Griner?

Brittney Griner (r.) Ngay từ đầu, thân phận của Brittney Griner đã là tình huống con tin Mỹ độc nhất trong lịch sử hiện đại.

Tom Brady là bộ tứ vệ đầu tiên cuối cùng có thể giúp Julio Jones có hơn 10 lần chạm bóng trong một mùa giải

Tom Brady là bộ tứ vệ đầu tiên cuối cùng có thể giúp Julio Jones có hơn 10 lần chạm bóng trong một mùa giải

Chúng ta có thể thấy nhiều hơn nữa về một Julio Jones khỏe mạnh trong khu vực cuối năm nay. John Parker Wilson, Greg McElroy, A.

Đó phải là Đức

Đó phải là Đức

Đối với đội tuyển Anh, không có kẻ thủ ác nào lớn hơn Hầu hết các cổ động viên Anh, nếu không muốn nói là tất cả, hẳn sẽ phải gật gù khi tiếng còi mãn cuộc của trận bán kết lượt về W Euro 2022 vang lên. Bởi vì nó báo hiệu rằng Đức sẽ chờ đợi ở Wembley trong trận chung kết với Anh và là điều duy nhất giữa Anh và chiếc cúp lớn đầu tiên của đội tuyển nữ.

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Rothschild's luggage got lost, but luckily she has an incredible closet to shop: Sister Paris Hilton's!

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa. Từ Hollywood đến New York và mọi nơi ở giữa, hãy xem các ngôi sao yêu thích của bạn đang làm gì!

17 tuổi bị đâm chết trong khi 4 người khác bị thương trong một cuộc tấn công bằng dao trên sông Wisconsin

17 tuổi bị đâm chết trong khi 4 người khác bị thương trong một cuộc tấn công bằng dao trên sông Wisconsin

Các nhà điều tra đang xem xét liệu nhóm và nghi phạm có biết nhau trước vụ tấn công hay không

Thanh thiếu niên, Gia đình Florida Hội đồng quản trị trường học về Luật 'Không nói đồng tính': 'Buộc chúng tôi tự kiểm duyệt'

Thanh thiếu niên, Gia đình Florida Hội đồng quản trị trường học về Luật 'Không nói đồng tính': 'Buộc chúng tôi tự kiểm duyệt'

Vụ kiện, nêu tên một số học khu, lập luận rằng dự luật "Không nói đồng tính" được ban hành gần đây của Florida "có hiệu quả im lặng và xóa bỏ học sinh và gia đình LGBTQ +"

Đường băng hạ cánh

Đường băng hạ cánh

Cuối hè đầu thu là mùa hoài niệm. Những chiếc đèn đường chiếu ánh sáng của chúng qua những con đường đẫm mưa, và những chiếc lá dưới chân - màu đỏ cam tắt trong bóng chạng vạng - là lời nhắc nhở về những ngày đã qua.

Hãy tưởng tượng tạo ra một chiến lược nội dung thực sự CHUYỂN ĐỔI. Nó có thể.

Hãy tưởng tượng tạo ra một chiến lược nội dung thực sự CHUYỂN ĐỔI. Nó có thể.

Vào năm 2021, tôi khuyến khích bạn suy nghĩ lại mọi thứ bạn biết về khách hàng mà bạn phục vụ và những câu chuyện bạn kể cho họ. Lùi lại.

Sự mất mát của voi ma mút đã mở ra trái tim tôi để yêu

Sự mất mát của voi ma mút đã mở ra trái tim tôi để yêu

Vào ngày sinh nhật thứ 9 của Felix The Cat, tôi nhớ về một trong những mất mát lớn nhất trong cuộc đời trưởng thành của tôi - Sophie của tôi vào năm 2013. Tôi đã viết bài luận này và chia sẻ nó trên nền tảng này một thời gian ngắn vào năm 2013.

Khi bạn không thể trở thành người mà Internet muốn bạn trở thành

Khi bạn không thể trở thành người mà Internet muốn bạn trở thành

Tôi ghét từ "tàu đắm". Mọi người cảm thấy thoải mái trong la bàn đạo đức của riêng mình, và khi làm như vậy, họ thấy mình vượt qua sự phán xét.

Language