sudo: npm: ไม่พบคำสั่ง


201

ฉันพยายามอัพเกรดเป็นโหนดรุ่นล่าสุด ฉันทำตามคำแนะนำที่http://davidwalsh.name/upgrade-nodejs

แต่เมื่อฉัน:

sudo npm install -g n

ฉันได้รับข้อผิดพลาด:

sudo: npm: command not found

npm ทำงานได้โดยไม่ต้อง sudo เมื่อฉันทำ:

whereis node

ฉันเห็น:

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

วิ่ง:

which npm

แสดงให้เห็นว่า:

/usr/local/node/bin/npm

ฉันลองวิธีแก้ปัญหาที่https://stackoverflow.com/a/5062718/1246159

แต่ฉันยังคงได้รับข้อผิดพลาดเดียวกัน ฉันยังดูที่ไฟล์ / etc / sudoers และบรรทัดที่เกี่ยวข้องคือ:

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

มันดูดีสำหรับฉัน ฉันจะทำให้ NPM ทำงานกับคำสั่ง sudo ได้อย่างไร?


4
มันใช้ได้ไหม? sudo /usr/bin/npm install -g n
robertklep

2
คุณลองติดตั้งโหนดใหม่ได้ไหม ดูเหมือนว่าคุณจะลบ npm
Jeff Sloyer

1
คุณอาจจะได้เพิ่ม/usr/local/node/binที่คุณ$PATHแต่ควรติดตั้งในnpm /usr/local/binไดเรกทอรีแรกไม่ได้secure_pathอธิบายถึงสาเหตุที่sudoหาไม่ได้
robertklep

1
ใช้nvmบน Ubuntu ที่นี่ - ด้วยความคิดเห็น @robertklep ฉันลองsudo /home/${user}/.nvm/version/node/${version}/bin/npm installแล้วใช้งานได้
Stav Pan Geffen

2
มันแก้ไขปัญหาของฉันโดยการติดตั้งจากแพ็คเกจต่อไปนี้ nodejs.org/en/download
Marghoob Suleman

คำตอบ:


125

แฟ้ม NPM /usr/local/bin/npmควรจะอยู่ใน ถ้ามันไม่ได้มีการติดตั้ง Node.js อีกครั้งกับแพคเกจของพวกเขาเว็บไซต์ มันใช้งานได้ในกรณีของฉัน


ขอบคุณ. หากคุณติดตั้งโหนดในไดรฟ์ข้อมูลอื่นโดยที่ไม่ได้ติดตั้งระบบปฏิบัติการคุณจะไม่พบเส้นทางนี้
Hardik Darji

1
ในกรณีของ mac os ที่มี homebrew .. สองขั้นตอนที่ต้องทำคือ (1) ซึ่ง node (2) ซึ่ง npm ซึ่งควรเป็นทั้งใน / usr / local / bin (โดยที่ homebrew ติดตั้ง / symlinks node + npm) ... เพื่อแก้ไข .. ลอง (1) ชงหมอ (2) ชงติดตั้งโหนดถ้ามันยังคงให้ปัญหา .. ตรวจสอบเส้นทางของคุณ (echo $ PATH) คุณต้องมีตำแหน่ง bin หลายตำแหน่งที่ชี้ไปที่การติดตั้งโหนดต่าง ๆ .. หากเป็นกรณีนี้ ... การล้างข้อมูล (เช่นทำให้ neater) ~ / .bashrc / ~ / .bash_profile ของคุณดังนั้น / usr / local / bin โหลดโดยไม่มีอีกอันหนึ่งชี้ไปที่การติดตั้งโหนดแบบสุ่ม
Jimmy MG Lim

3
นี่เป็นวิธีแก้ปัญหาบางส่วน ปัญหานี้เกิดขึ้นเมื่อคุณติดตั้งโหนดด้วยตนเอง คุณต้อง softlink แต่ละไบนารีที่ติดตั้งไว้ใน / usr / bin หรือ / usr / local / bin การตั้งค่าพา ธ ใน bashrc ของรูทจะไม่ทำงานตามที่ไม่ได้อ่านระหว่าง sudo ดังนั้นนี่เป็นวิธีเดียวที่มันจะปรากฏเว้นแต่คุณจะติดตั้งแพ็คเกจ
shrimpwagon

ดังที่ @ shrimpwagon กล่าวว่าคำแนะนำด้านล่างบอกให้คุณเชื่อมโยง "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

ฉันต้องทำ

sudo apt-get install npm

ที่ทำงานให้ฉัน


6
มันยากที่จะเข้าใจสิ่งที่คุณต้องการแสดง
แสงแดดเล็ก ๆ

4
นี่ล้าสมัย สิ่งที่ใช้ได้ผลสำหรับฉันคือคำสั่งเหล่านี้ที่ฉันพบที่นี่: github.com/nodesource/distribution#debinstall # การใช้ Ubuntu curl -sL deb.nodesource.com/setup_5.x | sudo -E bash - sudo apt-get install -y nodejs # ใช้ Debian เป็น root curl -sL deb.nodesource.com/setup_5.x | bash - apt-get install -y nodejs
Hamed

4
@tinysunlight ฉันไม่แน่ใจว่าสิ่งที่ไม่ชัดเจน op บอกว่าคำสั่ง npm หายไป คำสั่งนี้ติดตั้งคำสั่ง npm
Velocibadgery

7
นี่ไม่ใช่คำตอบที่ถูกต้องสำหรับคำถามเพราะเห็นได้ชัดจาก op ที่npmติดตั้งแล้ว แต่ไม่สามารถเข้าถึงได้เมื่อเรียกผ่าน sudo ด้วยโซลูชันนี้คุณติดตั้ง npm ซึ่งมีอยู่แล้ว นี่คือการต่อสู้กับอาการมากกว่าการหาสาเหตุ ฉันเข้าใจว่านี่อาจแก้ไขสิ่งที่หักสำหรับบางคน แต่มันทำให้เข้าใจผิดโดยที่ยืนอยู่เช่นนี้
Dominic

4
เมื่อฉันติดตั้งโหนดโดยใช้ NVM บน Ubuntu 18.10 sudo ไม่รู้จัก npm ว่าเป็นคำสั่ง sudo apt-get install npmทำงานให้ฉัน
AlienKevin

91

สำหรับผู้ใช้ MAC ขั้นตอนการติดตามนั้นใช้งานได้สำหรับฉัน

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

5
The brew uninstall nodeไม่ทำงานสำหรับฉัน แต่ฉันดำเนินการกับbrew install nodeและbrew postinstallและมันแก้ไขปัญหา ขอบคุณ
เทรเวอร์

2
สิ่งที่ไม่brew postinstallทำตรง?
Oliver D

ใน Homebrew เวอร์ชั่น 2.2.14 brew postinstallนั้นซ้ำซ้อน
Arslan Khan

63

ผมมีปัญหาเหมือนกัน; นี่คือคำสั่งที่จะแก้ไข:

  • 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
ทำงานให้ฉันใน CentOS 7
hirikarate

4
ทำงานกับฉัน Ubuntu 16.04.1 LTS ฉันใช้ NVM ดังนั้นเส้นทางแรกคือไปยังตำแหน่งที่ NVM ติดตั้งโหนดและ npm (เส้นทางมีรุ่น%HOME%/.nvm/versions/node/v7.4.0/bin/npm) โชคไม่ดีที่ฉันจะต้องอ้างอิงคำตอบนี้ทุกครั้งที่ฉันอัปเดตโดยใช้ NVM เนื่องจากเวอร์ชันในพา ธ จะเปลี่ยนไปอย่างไร
kas

1
วิธีนี้แก้ไขได้สำหรับฉันเช่นกัน! โพสต์ครั้งแรกบน Stack Overflow: บน EC2: ไม่พบคำสั่งโหนด แต่โหนดที่ไม่มี sudo นั้นใช้ได้
Dominic

2
@kas sudo ln -s $(whereis node) /usr/bin/node และอื่น ๆ ในโปรไฟล์ทุบตีของคุณ
Aravind Voggu

ทำงานให้ฉันในอินสแตนซ์ AWS ec2
Chirag Purohit

26

คำเตือน (แก้ไข)

การchmod 777ทำเป็นวิธีการแก้ปัญหาที่ค่อนข้างรุนแรง ลองสิ่งเหล่านี้ทีละครั้งและหยุดเมื่อสิ่งหนึ่งได้ผล:

  • $ 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 เป็นเพียงส่วนการติดตั้งที่ฉันจะได้รับปัญหา

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

ดังนั้นฉัน

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

และวิโอลาตอนนี้มีการเชื่อมโยง npm

$ npm -v
3.10.10

พิเศษ

หากคุณใช้-R 777ในlibคำแนะนำของฉันจะตั้งไฟล์และไดเรกทอรีที่ซ้อนกันกับการตั้งค่าเริ่มต้น:

  • $ 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 ..... คุณเพิ่งแนะนำ chmoding 777 ในโฟลเดอร์ local / lib ทั้งหมดหรือไม่
sfratini

อะไรchmodไดเรกทอรีนี้ควรจะเป็นอย่างไร
tim_xyz

1
@tim_xyz drwxr-xr-xเป็นค่าเริ่มต้นสำหรับ lib ที่กล่าวว่าอย่าใช้คุณสมบัติเรียกซ้ำ-Rเมื่อตั้งค่าโฟลเดอร์กลับ
Jacksonkr

ขอบคุณ! sudo chmod -R 777 / usr / local / lib / node_modules ทำงานให้ฉัน
Hisagr


8

สำหรับผู้ใช้ CentOS สิ่งนี้ใช้ได้กับฉัน:

sudo yum install npm

1
ปัญหาของวิธีนี้คือใน Fedora ตัวอย่างมันล้าสมัยมากใน dnf / yum repos
ACV

2
ใน CentOS 7 คุณต้องเปิดใช้งาน repo ของ EPEL ก่อน:yum install epel-release; yum install npm
hudolejev

8

ในการติดตั้งแพ็กเกจ npm ทั่วโลกพร้อมสิทธิ์ sudo /usr/bin/npmควรจะใช้ได้ หากnpmมีอยู่ในไดเรกทอรีอื่น ๆ ให้สร้างลิงค์นุ่ม ๆ เช่น:

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

มันทำงานบน Fedora 25, node8.0.0 และ npm5.0.0


6

ใน macOS สิ่งนี้ใช้ได้กับฉัน:

brew reinstall node

1
ขออภัยเพิ่งสังเกตเห็นว่ามีการติดแท็กคำถามunixแต่อาจเป็นประโยชน์เนื่องจากเป็นผลการค้นหาอันดับต้น ๆ ของ Google สำหรับ "ไม่พบคำสั่ง macos npm"
Friederbluemle

5

สำหรับ debian หลังจากติดตั้งโหนดให้ป้อน

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

5

หากคุณติดตั้งโหนด / npm ด้วย nvm ไฟล์คอนฟิกูเรชันสภาพแวดล้อม nvm ต้องถูกรันก่อนที่คุณจะสามารถใช้แพ็กเกจใดก็ได้

โดยทั่วไปแล้วจะพบใน ~ / .nvm / nvm.sh

ในการเรียกใช้สิ่งนี้โดยอัตโนมัติ ได้แก่ :

source ~/.nvm/nvm.sh

ในไฟล์. bash_profile สำหรับผู้ใช้ของคุณ

หากคุณต้องการใช้ sudo กับผู้ใช้รายนั้นตรวจสอบให้แน่ใจว่าได้รวมพารามิเตอร์ -i เพื่อทำให้ sudo ตั้งค่าสภาพแวดล้อมผู้ใช้ เช่น

sudo -iu jenkins npm install grunt-cli

4

เพียงแค่ติดตั้งใหม่

บน RHEL, CentOS และ Fedora

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

แล้วก็

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

ง่าย ๆ ! .. ทั้งโหนดและเอ็นเอ็มพีทำงานเหมือนจับใจตอนนี้!


3

ฉันแก้ไขปัญหานี้โดย

apt-get install npm2deb

1
คำตอบนี้คืออะไร? npm2deb เป็นบุคคลที่สาม
Beau Bouchard

1
มันไม่ "เชื่อถือได้" อย่างสิ้นเชิงเนื่องจากบุคคลที่สามสามารถถูกโจมตีได้มากกว่าจาก npm โดยตรงจากแหล่งที่มา ฉันไม่รู้อะไรเกี่ยวกับ npm2deb แต่คิดว่าถ้าคุณต้องการใช้ที่ บริษัท ของคุณพวกเขาอาจจะเข้มงวดในการตรวจสอบมัน
Kyle Calica-St

มันชัดเจนสำหรับทุกคน
ИгорьДемянюк

1

ฉันมีปัญหาเดียวกันสาเหตุของมันคือตัวจัดการแพ็กเกจ npm ไม่ได้ถูกติดตั้งขณะติดตั้งโหนด ปัญหานี้เกิดขึ้นเนื่องจากข้อผิดพลาดต่อไปนี้: ในกระบวนการติดตั้งมีขั้นตอนที่เรียกว่า "การตั้งค่าแบบกำหนดเอง" ที่นี่คุณมีตัวเลือกให้เลือกหนึ่งในรายการต่อไปนี้: 1) Node.js runtime (นี่คือค่าเริ่มต้น) 2) ผู้จัดการแพคเกจ npm 3) ทางลัดเอกสารออนไลน์ 4) เพิ่มเส้นทาง หากคุณดำเนินการตามที่เป็นตัวจัดการแพคเกจ npm จะไม่ถูกติดตั้งและด้วยเหตุนี้คุณจะได้รับข้อผิดพลาด

วิธีแก้ไข: เลือกตัวจัดการแพคเกจ npm เมื่อคุณได้รับตัวเลือกเหล่านี้ สิ่งนี้ใช้ได้สำหรับฉัน


1

หากคุณดาวน์โหลดแพ็กเกจโหนดและแตกไฟล์ออกมาอย่างเช่น/optคุณสามารถสร้างลิงก์สัญลักษณ์ภายใน/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

ฉันยังมีปัญหาเดียวกันใน Homestead และลองหลายวิธี ฉันลองด้วย

sudo apt-get install nodejs

ฉันได้รับข้อผิดพลาดต่อไปนี้:

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.

ในที่สุดฉันก็ลองด้วย

sudo apt-get dist-upgrade

มันใช้งานได้ดี

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

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

1

ทางออกของฉันคือ

sudo -E env "PATH=$PATH" n stable

ทำงานได้ดีสำหรับฉัน

พบได้ที่นี่: https://stackoverflow.com/a/29400598/861615

สิ่งนี้เกิดขึ้นเนื่องจากคุณมีการเปลี่ยนแปลงไดเรกทอรีแพ็คเกจเริ่มต้นระดับโลก


0

ต่อท้ายไบนารี่พา ธ ไปยังเส้นทาง sudo โดยใช้ visudo และแก้ไข "secure_path"

ตอนนี้ "sudo npm" ใช้งานได้


0

ลบโหนดทั้งหมด:

  brew uninstall --force node

ติดตั้งอีกครั้ง:

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

0

ในกรณีที่อาจมีประโยชน์สำหรับทุกคนที่ใช้rh-*แพคเกจนี้ทำงานให้ฉัน:

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

0

เนื่องจากฉันได้ติดตั้ง node.js โดยใช้ไฟล์. tar ที่มีอยู่ใน node.js ฉันต้องวางตำแหน่งของไดเรกทอรีโหนดไว้บน:

~ / .bashrc

ของ root โดยเปลี่ยนจากผู้ใช้ปกติเป็น root โดยใช้คำสั่ง:

sudo -i

แล้วฉันต้องเพิ่มเส้นทางไปยังโหนดที่ฉันแยกมันลงในไฟล์. bashrc ดังนี้ ป้อนคำอธิบายรูปภาพที่นี่

อ้างอิงแล้ว. bashrc ใช้

. ~ / .bashrc

หลังจากนั้น

npm: command not found

ไปแล้ว


0

ทำงานให้ฉันแก้ไขข้อผิดพลาดการอนุญาต EACCES เมื่อติดตั้งแพคเกจทั่วโลก

เพื่อลดโอกาสของข้อผิดพลาดในการอนุญาตคุณสามารถกำหนดค่า npm ให้ใช้ไดเรกทอรีอื่น ในตัวอย่างนี้คุณจะสร้างและใช้ไดเรกทอรีที่ซ่อนอยู่ในไดเรกทอรีบ้านของคุณ

สำรองข้อมูลคอมพิวเตอร์ของคุณ บนบรรทัดรับคำสั่งในโฮมไดเร็กทอรีของคุณให้สร้างไดเร็กทอรีสำหรับการติดตั้งโกลบอล:

 mkdir ~/.npm-global

กำหนดค่า npm เพื่อใช้เส้นทางไดเรกทอรีใหม่:

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

ในเท็กซ์เอดิเตอร์ที่คุณต้องการเปิดหรือสร้างไฟล์ ~ / .profile และเพิ่มบรรทัดนี้:

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

บนบรรทัดรับคำสั่งอัพเดตตัวแปรระบบของคุณ:

 source ~/.profile

หากต้องการทดสอบการกำหนดค่าใหม่ของคุณให้ติดตั้งแพ็คเกจทั่วโลกโดยไม่ต้องใช้ sudo

 npm install -g jshint

0

สำหรับฉันวิธีการใด ๆ ที่กล่าวถึงข้างต้นโดยใช้ Homebrew ไม่ทำงานบน macOS ดังนั้นฉันจึงถอนการติดตั้งโหนดโดยใช้ Homebrew และดาวน์โหลดแพ็คเกจโหนดจากhttps://nodejs.org/th/download/และติดตั้ง มันทำงานเหมือนจับใจ


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.