
Я пытаюсь обновить свою версию 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
безопасном пути, выполнив следующие действия:
Графический способ:
- Откройте файловый менеджер (он же Nautilus).
- Перейдите в домашнюю папку.
- Нажмите Ctrl+, Hчтобы показать скрытые файлы.
- Откройте файл под названием
.npmrc
с помощью вашего любимого текстового редактора. Найдите в этом файле строку с таким содержанием:
prefix=/home/<your_username>/npm
- Замените
/home/<your_username>/npm
на безопасный путь (например/usr/local/bin
, ). После замены это будет выглядеть так:
prefix=/usr/local/bin
- Сохраните файл.
- Беги снова
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 дляизменение глобального каталога по умолчанию.