Команда не найдена при выполнении пакета 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
JonRed
источник
Хорошая идея, но когда я это делаю, она возвращает мне 'n: command not found', даже если я отбросил 'sudo'
JonRed
sudo sh -c "PATH = $ PATH; n стабильный" <новая строка> sh: 1: n: не найден
JonRed
Нет вывода вообще. Это удручает :-(
JonRed
Пожалуйста, опубликуйте результатыls /usr/local/bin/n
Helio

Ответы:

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

Luckylooke
источник
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
Matt
источник
-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: управление версией узла

Примечание редактора: Этот ответ был изначально написан на китайском языке и был переведен и отредактирован с использованием онлайн-инструментов. Чтобы увидеть оригинальный ответ, см. Редакцию № 1

dingyanhe
источник