sudo: npm: không tìm thấy lệnh


201

Tôi đang cố gắng nâng cấp lên phiên bản mới nhất của nút. Tôi đang làm theo hướng dẫn tại http://davidwalsh.name/upTHER-nodejs

Nhưng khi tôi làm:

sudo npm install -g n

Tôi nhận được lỗi:

sudo: npm: command not found

npm hoạt động mà không có sudo. Khi tôi làm:

whereis node

Tôi hiểu rồi:

node: /usr/bin/node /usr/lib/node /usr/bin/X11/node /usr/local/node

Đang chạy:

which npm

Trình diễn:

/usr/local/node/bin/npm

Tôi đã thử giải pháp tại https://stackoverflow.com/a/5062718/1246159

Nhưng tôi vẫn nhận được cùng một lỗi. Tôi cũng đã xem tập tin / etc / sudoers và dòng liên quan là:

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

Điều này có vẻ tốt với tôi. Làm thế nào tôi có thể có được NPM làm việc với lệnh sudo?


4
Nó có hoạt động không? sudo /usr/bin/npm install -g n
robertklep

2
Bạn có thể thử cài đặt lại nút? Có vẻ như bạn đã xóa npm.
Jeff Sloyer

1
Bạn có thể thêm /usr/local/node/binvào của bạn $PATH, nhưng npmnên được cài đặt trong /usr/local/bin. Thư mục đầu tiên không phải là secure_pathgiải thích tại sao sudokhông thể tìm thấy nó.
robertklep

1
Sử dụng nvmtrên Ubuntu tại đây - với nhận xét @robertklep, tôi đã thử sudo /home/${user}/.nvm/version/node/${version}/bin/npm installvà nó đã hoạt động.
Stav Pan Geffen

2
Nó giải quyết vấn đề của tôi bằng cách cài đặt lại từ gói sau. nodejs.org/en/d
Marghoob Suleman 4/11/2016

Câu trả lời:


125

Các tập tin npm nên được trong /usr/local/bin/npm. Nếu nó không ở đó, hãy cài đặt lại node.js với gói trên trang web của họ . Điều này làm việc trong trường hợp của tôi.


cám ơn. Nếu bạn cài đặt nút trong các ổ dữ liệu khác, nơi os không được cài đặt, bạn không thể tìm thấy đường dẫn này.
Hardik Darji

1
trong trường hợp mac os với homebrew .. hai bước cần làm là (1) nút nào (2) mà npm phải ở cả / usr / local / bin (trong đó cài đặt homebrew / nút liên kết + npm) ... để giải quyết .. hãy thử (1) brew Doctor (2) brew nút cài đặt lại nếu nó vẫn gây ra sự cố .. kiểm tra đường dẫn của bạn (echo $ PATH). bạn phải có nhiều vị trí bin trỏ đến các cài đặt nút khác nhau..nếu đó là ... dọn dẹp (như làm cho nó gọn gàng hơn) ~ / .bashrc / ~ / .bash_profile, vì vậy / usr / local / bin ở đó được tải mà không cần một cái khác chỉ đến một cài đặt nút ngẫu nhiên.
Jimmy MG Lim

3
Đây là một giải pháp một phần. Sự cố xảy ra khi bạn tự cài đặt nút. Bạn phải liên kết mềm từng nhị phân được cài đặt vào / usr / bin hoặc / usr / local / bin. Đặt đường dẫn trong bashrc của root sẽ không hoạt động vì nó không được đọc trong sudo do đó đây là cách duy nhất có vẻ như trừ khi bạn cài đặt gói.
Tômwagon

như @shaleighwagon đã nói, phần dưới cùng của hướng dẫn thủ công cho bạn biết liên kết "sudo ln -s / usr / local / lib / nodejs / node- $ VERSION- $ DISTRO / bin / node / usr / bin / node sudo ln -s / usr / local / lib / nodejs / node- $ VERSION- $ DISTRO / bin / npm / usr / bin / npm sudo ln -s / usr / local / lib / nodejs / node- $ VERSION- $ DISTRO / bin / npx / usr / bin / npx "
James Nelson

169

tôi phải làm

sudo apt-get install npm

Điều đó đã làm việc cho tôi.


6
Thật khó để hiểu những gì bạn muốn thể hiện.
ánh sáng mặt trời nhỏ bé

4
Điều này là hết hạn. Điều làm việc cho tôi là những lệnh tôi tìm thấy ở đây: github.com/nodesource/distribution#debinstall # Sử dụng Ubuntu curl -sL deb.nodesource.com/setup_5.x | sudo -E bash - sudo apt-get install -y nodejs # Sử dụng Debian, với quyền root curl -sL deb.nodesource.com/setup_5.x | bash - apt-get install -y nodejs
Hamed

4
@tinysunlight Tôi không chắc điều gì không rõ ràng. Các op nói lệnh npm bị thiếu. Lệnh này cài đặt lệnh npm.
Velocibadgery

7
Đây không phải là câu trả lời chính xác cho câu hỏi vì rõ ràng từ op npmđã được cài đặt nhưng không thể truy cập khi được gọi qua sudo. Với giải pháp này, bạn cài đặt lại npm đã tồn tại. Đây là chiến đấu với các triệu chứng hơn là tìm ra nguyên nhân. Tôi hiểu rằng điều này có thể sửa chữa những thứ bị hỏng cho một số người, nhưng nó gây hiểu lầm, đứng như thế này.
Đaminh

4
Khi tôi cài đặt nút bằng NVM trên Ubuntu 18.10, sudo không nhận ra npm là lệnh. sudo apt-get install npmđã làm cho tôi.
AlienKevin

91

Đối với người dùng MAC, các bước sau làm việc cho tôi.

$ brew update
$ brew uninstall node
$ brew install node
$ brew postinstall 

5
Các brew uninstall nodekhông làm việc cho tôi, nhưng tôi tiếp tục với brew install nodebrew postinstallvà nó cố định vấn đề. Cảm ơn
Trevor

2
Làm gì brew postinstallchính xác?
Oliver D

trong phiên bản Homebrew 2.2.14 brew postinstalllà dự phòng
Arslan Khan

63

Tôi đã từng gặp vấn đề tương tự; Dưới đây là các lệnh để sửa nó:

  • sudo ln -s /usr/local/bin/node /usr/bin/node
  • sudo ln -s /usr/local/lib/node /usr/lib/node
  • sudo ln -s /usr/local/bin/npm /usr/bin/npm
  • sudo ln -s /usr/local/bin/node-waf /usr/bin/node-waf

2
Làm việc cho tôi trên CentOS 7
hirikarate

4
Làm việc cho tôi Ubuntu 16.04.1 LTS. Tôi sử dụng NVM vì vậy đường dẫn đầu tiên là nơi cài đặt NVM nút và npm (đường dẫn bao gồm một phiên bản %HOME%/.nvm/versions/node/v7.4.0/bin/npm). Thật không may là tôi sẽ phải tham khảo câu trả lời này mỗi lần tôi cập nhật bằng NVM do cách phiên bản trong đường dẫn sẽ thay đổi
kas

1
Điều này cũng giải quyết nó cho tôi! Ban đầu được đăng trên Stack Overflow: Trên EC2: không tìm thấy lệnh nút sudo, nhưng nút không có sudo vẫn ổn
Dominic

2
@kas sudo ln -s $(whereis node) /usr/bin/node Và vân vân. trong hồ sơ bash của bạn.
Aravind Voggu

Làm việc cho tôi trong ví dụ AWS ec2.
Chirag Purohit

26

CẢNH BÁO (chỉnh sửa)

Làm một chmod 777là một giải pháp khá triệt để. Hãy thử những cái này trước, từng cái một và dừng lại khi một cái hoạt động:

  • $ sudo chmod -R 777 /usr/local/lib/node_modules/npm
  • $ sudo chmod -R 777 /usr/local/lib/node_modules
  • $ sudo chmod g+w /usr/local/lib
  • $ sudo chmod g+rwx /usr/local/lib

$ brew postinstall node là phần cài đặt duy nhất mà tôi gặp sự cố

Permission denied - /usr/local/lib/node_modules/npm/.github

Tôi cũng vậy

// !! READ EDIT ABOVE BEFORE RUNNING THIS CODE !!
$ sudo chmod -R 777 /usr/local/lib
$ brew postinstall node

và viola, npm hiện được liên kết

$ npm -v
3.10.10

Thêm

Nếu bạn đã sử dụng -R 777trên lib, khuyến nghị của tôi là đặt các tệp và thư mục lồng nhau thành cài đặt mặc định:

  • $ find /usr/local/lib -type f -print -exec chmod 644 {} \;
  • $ find /usr/local/lib -type d -print -exec chmod 755 {} \;
  • $ chmod /usr/local/lib 755

3
@Jacksonkr ..... bạn vừa đề nghị chmoding 777 toàn bộ thư mục local / lib?
sfratini

Thư chmodmục này nên là gì?
tim_xyz

1
@tim_xyz drwxr-xr-xlà mặc định cho lib. Điều đó nói rằng, KHÔNG sử dụng tính năng đệ quy -Rkhi đặt lại thư mục.
Jacksonkr

Cảm ơn! sudo chmod -R 777 / usr / local / lib / node_modules làm việc cho tôi
Hisagr


8

Đối với người dùng CentOS, điều này hoạt động với tôi:

sudo yum install npm

1
vấn đề với cách tiếp cận này là ở Fedora chẳng hạn, nó rất lỗi thời trong repn dnf / yum
ACV

2
Trên CentOS 7, bạn cần bật repo EPEL trước:yum install epel-release; yum install npm
hudolejev

8

Để cài đặt các gói npm trên toàn cầu với sự cho phép của sudo, /usr/bin/npmnên có sẵn. Nếu npmtồn tại trên một số thư mục khác, hãy tạo một liên kết mềm như:

sudo ln -s /usr/local/bin/npm /usr/bin/npm

Nó hoạt động trên Fedora 25, node8.0.0 và npm5.0.0


6

Trên macOS, điều này làm việc cho tôi:

brew reinstall node

1
Xin lỗi chỉ nhận thấy câu hỏi được gắn thẻ unix, nhưng nó vẫn có thể hữu ích vì đây là kết quả tìm kiếm hàng đầu của Google cho "không tìm thấy lệnh
macos npm

5

Đối với debian sau khi cài đặt nút enter

curl -k -O -L https://npmjs.org/install.sh    
ln -s /usr/bin/nodejs /usr/bin/node  
sh install.sh

5

Nếu bạn đã cài đặt nút / npm với nvm, tệp cấu hình môi trường nvm phải được chạy trước khi bạn có thể sử dụng một trong hai gói.

Điều này thường được tìm thấy trong ~ / .nvm / nvm.sh.

Để chạy tự động, bao gồm:

source ~/.nvm/nvm.sh

trong tệp .bash_profile cho người dùng của bạn

Nếu sau đó bạn muốn sử dụng sudo với người dùng đó, hãy đảm bảo bao gồm tham số -i để đặt sudo đặt môi trường người dùng. ví dụ

sudo -iu jenkins npm install grunt-cli

4

chỉ cần cài đặt lại.

Trên RHEL, CentOS và Fedora

sudo yum remove nodejs npm
sudo dnf remove nodejs npm   [On Fedora 22+ versions]

sau đó

yum -y install nodejs npm
dnf -y install nodejs npm   [On Fedora 22+ versions]

dễ dàng! .. cả nút và npm hoạt động như một bùa mê bây giờ!


3

Tôi đã giải quyết vấn đề này bằng cách

apt-get install npm2deb

1
câu trả lời này là gì npm2deb là một bên thứ 3
Beau Bouchard

1
nó không hoàn toàn "đáng tin cậy" vì ở bên thứ 3 có thể bị xâm phạm nhiều hơn so với từ npm trực tiếp từ nguồn. Tôi không biết gì về npm2deb nhưng hãy nghĩ xem nếu bạn muốn sử dụng nó tại công ty của mình, họ có thể sẽ nghiêm ngặt về việc kiểm tra nó
Kyle Calica-St

Đó là điều hiển nhiên cho tất cả mọi người.
Игорь Демянюк

1

Tôi có cùng một vấn đề, lý do cho nó là trình quản lý gói npm không được cài đặt trong khi cài đặt nút. Điều này được gây ra do lỗi sau: Trong quá trình cài đặt, có một bước gọi là "Thiết lập tùy chỉnh", ở đây bạn có tùy chọn để chọn một trong các tùy chọn sau: 1) Thời gian chạy Node.js (Điều này được chọn theo mặc định). 2) Trình quản lý gói npm 3) Phím tắt tài liệu trực tuyến. 4) Thêm vào đường dẫn. Nếu bạn tiến hành như là trình quản lý gói npm sẽ không được cài đặt và do đó bạn sẽ gặp lỗi.

Giải pháp: Chọn trình quản lý gói npm khi bạn nhận được các tùy chọn này. Điều này làm việc cho tôi.


1

Nếu bạn đã tải xuống gói nút và trích xuất ở đâu đó như /optbạn có thể chỉ cần tạo liên kết tượng trưng bên trong /usr/local/bin.

/usr/local/bin/npm -> /opt/node-v4.6.0-linux-x64/bin/npm
/usr/local/bin/node -> /opt/node-v4.6.0-linux-x64/bin/node

1

Tôi cũng gặp vấn đề tương tự ở Homestead và đã thử nhiều cách. Tôi đã thử với

sudo apt-get cài đặt nodejs

Tôi nhận được lỗi sau đây:

The following packages have unmet dependencies:
 npm : Depends: nodejs but it is not going to be installed
       Depends: node-abbrev (>= 1.0.4) but it is not going to be installed
       Depends: node-ansi (>= 0.3.0-2) but it is not going to be installed
       Depends: node-ansi-color-table but it is not going to be installed
       Depends: node-archy but it is not going to be installed
       Depends: node-block-stream but it is not going to be installed
       Depends: node-fstream (>= 0.1.22) but it is not going to be installed
       Depends: node-fstream-ignore but it is not going to be installed
       Depends: node-github-url-from-git but it is not going to be installed
       Depends: node-glob (>= 3.1.21) but it is not going to be installed
       Depends: node-graceful-fs (>= 2.0.0) but it is not going to be installed
       Depends: node-inherits but it is not going to be installed
       Depends: node-ini (>= 1.1.0) but it is not going to be installed
       Depends: node-lockfile but it is not going to be installed
       Depends: node-lru-cache (>= 2.3.0) but it is not going to be installed
       Depends: node-minimatch (>= 0.2.11) but it is not going to be installed
       Depends: node-mkdirp (>= 0.3.3) but it is not going to be installed
       Depends: node-gyp (>= 0.10.9) but it is not going to be installed
       Depends: node-nopt (>= 3.0.1) but it is not going to be installed
       Depends: node-npmlog but it is not going to be installed
       Depends: node-once but it is not going to be installed
       Depends: node-osenv but it is not going to be installed
       Depends: node-read but it is not going to be installed
       Depends: node-read-package-json (>= 1.1.0) but it is not going to be installed
       Depends: node-request (>= 2.25.0) but it is not going to be installed
       Depends: node-retry but it is not going to be installed
       Depends: node-rimraf (>= 2.2.2) but it is not going to be installed
       Depends: node-semver (>= 2.1.0) but it is not going to be installed
       Depends: node-sha but it is not going to be installed
       Depends: node-slide but it is not going to be installed
       Depends: node-tar (>= 0.1.18) but it is not going to be installed
       Depends: node-underscore but it is not going to be installed
       Depends: node-which but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Cuối cùng tôi đã thử với

sudo apt-get dist-upgrade

Nó hoạt động tốt.

root@homestead:/usr/local/bin# npm -v
3.10.10

root@homestead:/usr/local/bin# node -v
v6.13.0


0

Đã thêm đường dẫn nhị phân npm vào đường dẫn sudo bằng cách sử dụng visudo và chỉnh sửa "safe_path"

Bây giờ "sudo npm" hoạt động


0

Xóa hoàn toàn nút:

  brew uninstall --force node

Cài đặt lại:

brew install node;
which node # => /usr/local/bin/node
export NODE_PATH='/usr/local/lib/node_modules'

0

Trong trường hợp có thể hữu ích cho bất cứ ai sử dụng rh-*các gói này hoạt động với tôi:

sudo ln -s /opt/rh/rh-nodejs8/root/usr/bin/npm /usr/local/bin/npm

0

Vì tôi đã cài đặt node.js bằng tệp .tar có sẵn trên tệp node.js, tôi phải đặt vị trí của thư mục nút trên:

~ / .bashrc

của root bằng cách thay đổi từ người dùng bình thường sang root bằng lệnh:

sudo -i

sau đó tôi phải thêm đường dẫn đến nút nơi tôi trích xuất nó vào tệp .bashrc như dưới đây: nhập mô tả hình ảnh ở đây

sau đó giới thiệu .bashrc bằng cách sử dụng

. ~ / .bashrc

sau đó

npm: command not found

đã đi


0

Làm việc cho tôi Giải quyết lỗi quyền EACCES khi cài đặt các gói trên toàn cầu

Để giảm thiểu khả năng xảy ra lỗi quyền, bạn có thể định cấu hình npm để sử dụng một thư mục khác. Trong ví dụ này, bạn sẽ tạo và sử dụng thư mục ẩn trong thư mục chính của bạn.

Sao lưu máy tính của bạn. Trên dòng lệnh, trong thư mục chính của bạn, tạo một thư mục để cài đặt toàn cầu:

 mkdir ~/.npm-global

Cấu hình npm để sử dụng đường dẫn thư mục mới:

 npm config set prefix '~/.npm-global'

Trong trình soạn thảo văn bản ưa thích của bạn, hãy mở hoặc tạo tệp ~ / .profile và thêm dòng này:

 export PATH=~/.npm-global/bin:$PATH

Trên dòng lệnh, cập nhật các biến hệ thống của bạn:

 source ~/.profile

Để kiểm tra cấu hình mới của bạn, hãy cài đặt gói trên toàn cầu mà không cần sử dụng sudo:

 npm install -g jshint

0

Đối với tôi, bất kỳ phương pháp nào được đề cập ở trên bằng Homebrew đều không hoạt động trên macOS. Vì vậy, tôi đã gỡ cài đặt nút bằng Homebrew và tải xuống gói nút từ https://nodejs.org/en/doad/ và cài đặt nó. Nó làm việc như một say mê.


-8

Installl node.js & chỉ cần chạy

npm install -g bower 

từ thư mục dự án của bạn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.