Я только что переустановил Ubuntu 12.04 LTS и прежде всего проделал следующие шаги :
Установлен узел через диспетчер пакетов со следующим скриптом
sudo apt-get update sudo apt-get install python-software-properties python g++ make sudo add-apt-repository ppa:chris-lea/node.js sudo apt-get update sudo apt-get install nodejs
Пытался установить генераторы yeoman, express, n, yeoman глобально, и все они вернули одну и ту же ошибку
npm ERR! Ошибка: EACCES, символическая ссылка '../lib/node_modules/n/bin/n'
npm ERR! {[Ошибка: EACCES, символическая ссылка '../lib/node_modules/n/bin/n'] номер ошибки: 3, код: 'EACCES', путь: '../lib/node_modules/n/bin/n'}
npm ERR!
npm ERR! Пожалуйста, попробуйте запустить эту команду еще раз от имени пользователя root / администратора.
npm ERR! Система Linux 3.8.0-29-generic
npm ERR! команда "/ usr / bin / node" "/ usr / bin / npm" "install" "-g" "-d" "n"
npm ERR! cwd / home / heberlz
npm ERR! узел -v v0.10.20
npm ERR! npm -v 1.3.11
npm ERR! путь ../lib/node_modules/n/bin/n
npm ERR! код EACCES
npm ERR! ошибка 3
npm ERR! Ошибка стека: EACCES, символическая ссылка '../lib/node_modules/n/bin/n'
npm ERR!
npm ERR! Дополнительные сведения о регистрации можно найти в:
npm ERR! /home/heberlz/npm-debug.log
npm ERR! не в порядке код 0
Рекурсивно восстановлено право собственности на следующие папки ~ / .npm, / usr / lib / node, / usr / lib / node_modules и следующие символические ссылки / usr / bin / node, / usr / bin / nodejs, но безуспешно.
Мне нужно установить yeoman и его генераторы без sudo, чтобы потом не было проблем :(
ln -s /usr/bin/nodejs /usr/bin/node
Ответы:
Ubuntu 12.04 и использование PPA Криса Ли для установки у меня работает следующим образом:
и добавив $ HOME / .npm-packages / bin в $ PATH
добавить к
.bashrc
см. https://stackoverflow.com/a/18277225 из @passy
источник
/usr/lib/node_modules/
. Или, может быть, даже целесообразно создать группу Unix nodejs и дать этой группе разрешение на запись в этот каталог.Если у вас уже есть
$HOME/bin
на вашем пути, более простое решение просто ...$HOME/bin
каталог.Поскольку это обсуждение действительно касается снижения рисков безопасности при запуске
sudo
, вы также должны знать, что любое приложение узла потенциально может устанавливать приложение, имя которого не соответствует зарегистрированному имени пакета узла, который, по вашему мнению, вы устанавливаете. Таким образом, существует риск того, что командаnpm install
заменит существующую системную команду или команду, которая у вас уже есть$HOME/bin
. Если вас беспокоит, проверьтеbin
, иscripts
свойство вpackage.json
файле приложения вы устанавливаете первый.В общем, безопаснее всего:
$HOME/bin
последний в своем пути, чтобы системные команды не заменялись.$PATH
чтобы вы случайно не запустили команду, которая находится в текущем каталоге.Ссылка:
источник
npm
заключается в том, что исходный код, который вы видите вgithub.com
репозитории для пакета узла, может не совпадать с кодом, который вы устанавливаете сnpm.org
сервера реестра!~/bin
, некоторые пакеты узлов (или их зависимые пакеты) были протестированы только как устанавливаемые,sudo
поэтому имейте в виду, что вы можете столкнуться с непроверенной проблемой «среды установки». Как и в случае с любой другой проблемой среды (например, смена ОС), принцип «пиши один раз, тестируй везде» все еще остается в силе.По состоянию на октябрь 2014 г .:
Node.js доступен из репозитория двоичных дистрибутивов NodeSource Debian и Ubuntu .
Вот и все.
Устаревший ответ:
Самый быстрый способ без использования sudo описан здесь isaac
РЕДАКТИРОВАТЬ:
Существуют определенные проблемы безопасности и ограничения функциональности, связанные с передачей права собственности на / usr / local текущему пользователю:
Сказав это, если вы хотите установить глобальный модуль без использования sudo, я не вижу лучшего решения (с прагматической точки зрения), чем упомянуто. Безопасность и простота использования - это очень обширная тема, и на нее нет простого ответа - все зависит от ваших требований.
источник
/usr/local/lib/node_modules
иnode
Проблема заключалась в том, что я установил узел с помощью sudo , чтобы избежать ошибок при установке модулей npm по всему миру, НИКОГДА НЕ ДОЛЖЕН устанавливать узел с помощью sudo.
Мое решение состояло в том, чтобы переустановить узел следующим образом:
Загрузите последние стабильные исходные коды узлов с nodejs.org # в моем случае node-v0.10.20.tar.gz
Следует отметить, что в моем случае не сработает только владение папкой / usr / local, потому что сама установка узла была произведена с помощью sudo
Последний шаг для установки yeoman: # хотя на yeoman.io сказано, что выполнение "npm install -g yo" уже устанавливает bower и grunt, есть некоторые подмодули grunt, которые не работают, поэтому я исправил это, установив его самостоятельно
источник
Я решил эту проблему с помощью переменной окружения и псевдонима оболочки:
Для меня npm не соблюдал настройку конфигурации "префикс" в .npmrc.
источник
Согласно этому аналогичному сообщению SO: npm выдает ошибку без sudo
Похоже, у вас может быть проблема с владельцем
~/.npm
каталога.Как и в этом случае, попробуйте:
источник
Найдите путь к каталогу npm:
Для многих систем это будет / usr / local.
Измените владельца каталогов npm на имя текущего пользователя (ваше имя пользователя!):
Это изменяет разрешения подпапок, используемых npm и некоторыми другими инструментами (lib / node_modules, bin и share).
Вот ссылка для получения полной информации
https://docs.npmjs.com/getting-started/fixing-npm-permissions
источник
bin
иshare
в скобки. Игнорирование может привести к смене владельца этих папок на текущего пользователя и проблемам с установкой новых пакетов в систему,sudo
потому что его право собственности также будет измененоЕсли вы работаете на разрабатываемой машине, возможно, вам лучше подумать об использовании nvm .
Если нет, вы просто хотите установить, используя свой любимый менеджер пакетов.
В любом случае, я бы рекомендовал проверить этот ответ на stackoverflow.
источник
На самом деле, я просто изменил разрешение папки пользователя, которая принадлежала root:
Тогда я мог бы "npm install" и "bower install" без sudo! Сработало нормально!
источник
используя lubuntu 14.04.3, я попытался сменить владельца префикса .npm и npm, обновил свой путь, модули, установленные npm, в мой домашний каталог без sudo, но путь был неправильным, поэтому такие модули, как ember, не были найдены, linuxbew быстро решил проблему руководство по настройке здесь для узла / npm
источник
Эту и другие проблемы, вызванные той же причиной, можно решить, установив Node в пользовательском пространстве.
Вы можете сделать это, просто скопировав и вставив в свой терминал
Те же команды можно запустить и для обновления Node до последней версии.
Не забудьте отредактировать свое окружение. Только один раз сделать
Прочтите эту статью, чтобы узнать, как установить Node.js без sudo .
Для более общего решения по этой теме (например, установка программного обеспечения локально) см. Dotsoftware .
источник
просто используйте nvm, вы сможете динамически переключаться между различными версиями узла, и он устанавливается локально для вашего пользователя. Нет необходимости в sudo. Просто убедитесь, что вы полностью очистили старый узел заранее.
https://github.com/nvm-sh/nvm
источник
Лучшим решением, которое я нашел, было установить Node.js из пакета tar в домашний каталог пользователя и связать местоположение папки lib. Вот что вам нужно сделать
Это установит Nodejs в ~ / .local / вместо / usr / local / по умолчанию.
Если вы по-прежнему сталкиваетесь с ошибкой владения или разрешения при установке пакетов, измените владельца ~ / .local / dir, запустив
Теперь вы должны уметь устанавливать пакеты через 'npm'
Примечание: ВСЕ ВЫШЕУКАЗАННЫЕ КОМАНДЫ ДОЛЖНЫ ВЫПОЛНЯТЬСЯ ОТ ПОЛЬЗОВАТЕЛЯ. НЕ ИСПОЛЬЗУЙТЕ СУДО ИЛИ ROOT LOGIN
НИКОГДА НЕ ИЗМЕНЯЙТЕ РАЗРЕШЕНИЕ НА ПАПКИ ПОД '/ USR / LIB /'. ПРИВЕДЕТ К НЕСТАБИЛЬНОЙ ОС
источник
Я считаю объяснения Павла Гржибека очень убедительными: они сводятся к 3 простым командам sudo, которым больше не нужно использовать sudo для глобальной установки npm:
источник