ไม่พบคำสั่งเมื่อเรียกใช้งาน node.js n แพ็กเกจบน sudo


13

ฉันกำลังพยายามอัปเดตโหนดเวอร์ชันของฉันให้เสถียรล่าสุด

การใช้ทรัพยากรนี้ฉันสามารถ:

sudo npm install n -g

แต่เมื่อฉันลอง

sudo npm n stable

ฉันเข้าใจ:

sudo: n: command not found

หากฉันรันn stableคำสั่งจะมีอยู่:

n stable
mkdir: cannot create directory ‘/usr/local/n’: Permission denied
mkdir: cannot create directory ‘/usr/local/n’: Permission denied
mkdir: cannot create directory ‘/usr/local/n’: Permission denied
mkdir: cannot create directory ‘/usr/local/n’: Permission denied

     install : node-v0.12.2
       mkdir : /usr/local/n/versions/node/0.12.2
mkdir: cannot create directory ‘/usr/local/n’: Permission denied

  Error: sudo required

เป็นความคิดที่ดี แต่เมื่อฉันทำสิ่งนั้นจะส่งคืน 'n: ไม่พบคำสั่ง' แม้ว่าฉันจะทำ 'sudo' ลดลง
JonRed

sudo sh -c "PATH = $ PATH; n stable" <new line> sh: 1: n: ไม่พบ
JonRed

ไม่มีเอาต์พุตเลย นั่นเป็นเรื่องที่น่าหดหู่ :-(
JonRed

ขอให้เรายังคงอภิปรายนี้ในการแชท
JonRed

กรุณาโพสต์ผลลัพธ์ของls /usr/local/bin/n
Helio

คำตอบ:


5

น่าแปลกที่npmการติดตั้งของคุณมีคำนำหน้ารวมในโฟลเดอร์ที่เรียกว่าnpmในโฮมไดเร็กตอรี่ของคุณซึ่งหมายความว่าแพ็คเกจใด ๆ ที่ติดตั้งด้วย-gแฟล็กจะติดตั้งในโฟลเดอร์นี้

คุณสามารถเปลี่ยนโฟลเดอร์นี้เป็นโฟลเดอร์ใด ๆ ที่อยู่บนsudoเส้นทางที่ปลอดภัยโดยทำตามขั้นตอนเหล่านี้:


วิธีกราฟิก:

  1. เปิดตัวจัดการไฟล์ (aka Nautilus)
  2. นำทางไปยังโฟลเดอร์บ้านของคุณ
  3. กดCtrl+ Hเพื่อแสดงไฟล์ที่ซ่อน
  4. เปิดไฟล์ที่เรียก.npmrcด้วยโปรแกรมแก้ไขข้อความที่คุณชื่นชอบ
  5. ค้นหาบรรทัดไฟล์ที่มีเนื้อหานี้:

    prefix=/home/<your_username>/npm
    
  6. แทนที่/home/<your_username>/npmด้วยเส้นทางที่ปลอดภัย (เช่น/usr/local/bin)
  7. เมื่อแทนที่แล้วจะมีลักษณะเช่นนี้:

    prefix=/usr/local/bin
    
  8. บันทึกไฟล์
  9. ทำงานอีกครั้ง sudo npm install n -g

ทางขั้ว:

เรียกใช้คำสั่งนี้:

sed -i.bak "s%^prefix=.*$%prefix=/usr/local/bin%" ~/.npmrc

ฉันคิดว่านี่ตอกย้ำมัน! มันช่วยฉันด้วยตอนนี้เมื่อฉันอัปเดตเวอร์ชัน npm ของฉัน แต่ไม่รู้จัก ดังนั้นได้รับการยอมรับและขอขอบคุณ!
JonRed

ไม่ได้ช่วยออกเหมือนเดิม: /
Luckylooke

สิ่งนี้ช่วยฉัน! ฉันไม่มีไฟล์ ~ / .npmrc ดังนั้นฉันจึงเพิ่มและตอนนี้ก็ใช้งานได้ดี
Kirill Gusyatin

2
ระวัง: สิ่งนี้จะยกเลิกตัวเลือกที่ 2ของการ แก้ไขสิทธิ์ NPM
Edson Horacio Junior

23

ฉันได้พบวิธีแก้ปัญหาที่ใช้งานได้สำหรับฉัน:

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

พบได้ที่นี่: /programming//a/29400598/861615


env: n: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
user3311522

1
@ user3311522 คุณเคยใช้: sudo npm install n -gมาก่อนsudo -E env "PATH=$PATH" n stable??
Luckylooke

2

ฉันรู้ว่านี่เป็นฟอรัม Ubuntu แต่ฉันแน่ใจว่านี่จะช่วยให้คนที่มีปัญหาเดียวกันกับรสชาติของ RHEL ที่ Googled มาที่นี่เหมือนฉัน บางทีมันอาจใช้งานได้ใน Ubuntu

นี่คือวิธีการ :

ln -s /usr/local/bin/n /usr/bin/n

0

เพื่อหลีกเลี่ยงการสับสนกับ.npm-globalโฟลเดอร์ตามที่บันทึกไว้โดย @Edson Horacio Junior และจากคำตอบของ @ pohest นี่คือวิธีที่ฉันแก้ไข:

sudo ln -s /home/<username>/.npm-global/bin/n /usr/local/bin/n
sudo n --version # test it

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


0

ฉันพบวิธีแก้ปัญหาที่เหมาะกับฉัน ใช้nvmแพ็คเกจเพื่อดาวน์โหลดโหนดล่าสุด

  1. ติดตั้ง nvm โดยใช้คำสั่งด้านล่าง

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash

  1. สร้างตัวแปรสภาพแวดล้อมเพื่อใช้ nvm
export NVM_DIR="${XDG_CONFIG_HOME/:-$HOME/.}nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
  1. ลองnvm -vถ้ามันไม่เห็นnvmติดตั้งเรียกใช้สคริปต์ด้านล่าง

command -v nvm

  1. เพื่อติดตั้งคำสั่งเรียกใช้โหนดด้านล่าง

nvm install node

  1. หลังจากรีสตาร์ทเทอร์มินัลลองตรวจสอบเวอร์ชันของโหนดว่าควรอัพเดต

node -v

ข้อมูลเพิ่มเติมที่นี่: https://github.com/nvm-sh/nvm


0

นี่หมายความว่าคุณไม่ได้ติดตั้ง N ในระบบของคุณ N เป็นตัวจัดการเวอร์ชันโหนดที่ใช้ npm คุณสามารถติดตั้งได้โดยการติดตั้งโหนดรุ่นแรกบางส่วนแล้วเรียกใช้

sudo npm install -g n

ตอนนี้คุณสามารถติดตั้งเวอร์ชันบนโหนดโดยใช้คำสั่ง n

sudo n stable

ข้างต้นจะติดตั้ง verion ที่เสถียรล่าสุด

sudo n lates

สิ่งนี้จะติดตั้งเวอร์ชั่นปลากะพงขาว

คุณยังสามารถติดตั้งรุ่นที่ระบุได้โดยระบุรุ่นดังต่อไปนี้

sudo n  10.16.0

0

ไม่มีคำตอบข้างต้นสำหรับฉัน อย่างไรก็ตามสิ่งนี้ทำ:

sudo /usr/local/bin/bin/n stable

-1

ฉันพบปัญหาเดียวกันนี่คือวิธีที่คุณสามารถแก้ไขได้:

  1. รับคำนำหน้าการกำหนดค่า npm
    npm config get prefix 
    // get -> ${myhome}/.npm-global
  2. เพิ่มบรรทัดต่อไปนี้ใน .zshrc

    # Specify `n` to put the version of `node` in the `.n` directory.
    export N_PREFIX=${myhome}/.npm-global/.n
    
    # Make `nman` command work
    export PATH=${myhome}/.npm-global/bin:$PATH
    
    # Add this line to use `node -v` command
    export PATH=${myhome}/.npm-global/.n/bin:$PATH

การอ้างอิง: GitHub - tj / n: การจัดการรุ่นโหนด

หมายเหตุจากบรรณาธิการ:คำตอบนี้ถูกเขียนขึ้นเป็นภาษาจีนและได้รับการแปลและแก้ไขโดยใช้เครื่องมือออนไลน์ หากต้องการดูคำตอบดั้งเดิมให้อ้างอิงRevision # 1

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