Команда не найдена при выполнении пакета node.js n в sudo

Команда не найдена при выполнении пакета node.js n в sudo

Я пытаюсь обновить свою версию Node до последней стабильной.

С использованиемэтот ресурсЯ мог:

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

решение1

Я нашел решение, которое мне помогло:

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

Нашел здесь:https://stackoverflow.com/a/29400598/861615

решение2

Удивительно, но ваша 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

решение3

Я знаю, что это форум Ubuntu, но я уверен, что это поможет кому-то с такой же проблемой на разновидностях RHEL, кто загуглил сюда, как я. Возможно, это также работает в Ubuntu.

Это подход:

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

решение4

Чтобы не испортить папку .npm-global, какотмеченный@Edson Horacio Junior, и основано на @pohest'sотвечать, вот как я это исправил:

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

Обратите внимание, что это, скорее всего, не сработает, если вы не следовали инструкциям npm дляизменение глобального каталога по умолчанию.

Связанный контент