Команда не знайдена під час виконання 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 стабільний" <новий рядок> sh: 1: n: не знайдено
JonRed

Вихід взагалі немає. Це гнітюче :-(
JonRed


Будь ласка, опублікуйте вихідls /usr/local/bin/n
Геліо

Відповіді:


5

Дивно, але ваша npmустановка має глобальний префікс у папці, що називається npmу вашому домашньому каталозі, це означає, що будь-який пакет, встановлений із -gпрапором, буде встановлений у цій папці.

Ви можете змінити цю папку в будь-яку папку, яка знаходиться на sudoбезпечному шляху, виконавши наступні дії:


Графічний спосіб:

  1. Відкрийте диспетчер файлів (він же 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, тому я додав його і зараз він працює добре
Кирило Гусятин

2
Обережно: це скасує варіант 2 з фіксуючи дозволу НПМ
Едсон Орасіо Юніор

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, які гуглили сюди, як я. Можливо, це працює і в Ubuntu.

Це такий підхід :

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

0

Щоб уникнути балуватися з .npm-globalпапкою , як зазначено на @Edson Орасіо 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

Вищезазначене встановить останню стабільну версію

sudo n lates

це встановить пізню версію

Ви також можете встановити конкретну версію, вказавши версію, як показано нижче

sudo n  10.16.0

0

Жодна з вищезгаданих відповідей не працювала для мене. Однак це зробило:

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

-1

Я зіткнувся з тією ж проблемою, ось як її вирішити:

  1. Отримайте префікс npm config
    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: Управління версіями вузла

Примітка редактора: Ця відповідь спочатку була написана китайською мовою та була перекладена та відредагована за допомогою онлайн-інструментів. Щоб побачити оригінальну відповідь, зверніться до редакції №1

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.