2015-03-12 2 views
2

Как выполнить что-то вроде sudo npm rebuild или sudo node, если Node.js был установлен NVM?Использование SUDO с NVM?

Каждый раз, когда я печатаю sudo команду, моя консоль пытается выполнить npm или node программу в /usr/bin/ или /usr/lib, ни один из которых действительно существуют. enter image description here

+0

Что вы пытаетесь достичь? Если 'npm' или' node' существует с использованием 'sudo', они не будут работать. – Anthon

+0

Я попытался перестроить плагин, основанный на 'node-gyp'. Но 'npm rebuild' работает только с sudo. Я использую Linux Mint здесь, у меня был узел, установленный через 'apt-get' раньше. Но поскольку я перешел на NVM и загрузил последний пакет узлов, я удалил свой старый узел, теперь 'sudo npm rebuild' не работает. Мне просто нужно, чтобы мой «npm» работал с 'sudo' – DennyHiu

+0

Не рекомендуется запускать команды узлов и NVM с привилегией' sudo'. Не рекомендуется разработчикам Node.js и NVM ... – RikyTres

ответ

0

Попробуйте создать символические ссылки в /usr/bin или /usr/lib. Не сильное решение, но может быть и достаточно.

sudo ln -s /home/denny/.nvm/versions/node/v0.12.0/bin/npm /usr/bin/npm 

sudo для записи в системном расположении. Предложения here могут оказаться полезными, особенно rvmsudo или group access.

Другое предложение:

Согласно комментарий, вы можете попробовать создать Баш скрипт на /home/denny/npm.sh:

#!/bin/bash 
PTH="/home/denny/.nvm/versions/node/$(node -v)/bin/npm" 
$PTH 

chmode это +x правильно и создать символическую ссылку с этим:

sudo ln -s /home/denny/npm.sh /usr/bin/npm 

Всегда следует проверять на node -v и запускать npm из соответствующего каталога.

+0

После поиска целого дня это решение - лучшее, что я знаю. Единственная проблема: мне нужно создать еще одну символическую ссылку для node & npm: 'sudo ln -s/usr/bin/nodejs/home/denny/.nvm/versions/node/v0.12.0/bin/node' и делать это каждый раз, когда я меняю версию узла с помощью NVM. – DennyHiu

+0

@denny улучшил мой ответ, возможно, вам может быть интересно его проверить :) – yergo

0

Мне нужно было сделать это, чтобы запустить сценарий установки Atom, но я не хотел постоянно менять настройки своей машины. Итак, я сделал:

sudo bash 

, а затем я соерсед в nvm.sh файл в дереве домашней директории моего пользователя:

source /home/ada-lovelace/.nvm/nvm.sh 

Это позволит мне запустить необходимые команды с корнем. Конечно, это означает, что в следующий раз, когда мне нужно запустить узел в сеансе с корнем, мне придется сделать эти шаги еще раз, но я не ожидаю, что это нужно сделать в ближайшем будущем.

Смежные вопросы