Npm/yoman установить генератор angular без sudo
Я попытался установить генератор-угловые с помощью Yo (Yoeman) без sudo:
npm install -g generator-angular
Я получаю:
Error: EACCES, mkdir '/usr/lib/node_modules/generator-angular'
Когда я набираю sudo yo
, yo говорит мне, что я не должен использовать sudo (что вполне понятно).
У меня есть каталог ~/node_modules
- почему вы не устанавливаете там свои пакеты?
Ответы
Ответ 1
Генераторы предназначены для установки по всему миру. В противном случае вам всегда нужно установить генератор, который вы собираетесь использовать в каждом проекте, что излишне болезненно. Кроме того, вы не можете увидеть прекрасное меню yo
, в котором перечислены все доступные генераторы (если, конечно, вы не установите их локально):
Настройка npm для глобальной установки
Итак, как мы получаем npm для установки пакетов по всему миру? Как вы правильно сказали, вы никогда не должны бегать yo
с помощью sudo. В этой проблеме есть множество разных решений, и вы можете часами обсуждать свои плюсы и минусы религиозно.
Мне лично не нравится устанавливать мои пользовательские пакеты в глобальную папку /usr/
. /usr/
предназначен для программного обеспечения, которое доступно для всех пользователей компьютера. Даже если он используется только с использованием аппарата, все еще есть веские основания уважать то, как разрабатывается иерархия файловой системы Unix. Например, если вы решите в какой-то момент стереть всю установку node.
Мой предпочтительный способ включения npm
для установки пакетов по всему миру без выхода из $HOME
- для установки локального префикса node, Это так же просто, как запуск
echo 'prefix = ~/.node' >> ~/.npmrc
в локальной оболочке. После этого вы хотите настроить $PATH, чтобы указать на новый пункт назначения для глобальных исполняемых файлов node, настроив вашу конфигурацию любимой оболочки. Например. добавив
export PATH="$PATH:$HOME/.node/bin"
на ваш ~/.bashrc
. После этого вы можете с радостью запустить npm install -g generator-angular
без sudo, не запуская конфликтов разрешений, и если что-то полностью сломано и вы хотите начать с нуля, все, что вам нужно сделать, это удалить каталог ~/.node
.
Ответ 2
Благодаря @passy мне удалось наконец запустить эту работу на ubuntu 13.04 (в случае, если у кого-то возникают подобные проблемы с настройкой) со следующим:
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
пытается запустить:
npm install -g yo
привело к
Error: EACCES, mkdir '/usr/lib/node_modules/yo'
Исправлено использование:
echo prefix = ~/.node >> ~/.npmrc
echo 'export PATH=$HOME/.node/bin:$PATH' >> ~/.bashrc
. ~/.bashrc
Продолжительность:
yo webapp
привело к:
Error: EACCES, permission denied '/home/username/.config/configstore/update-notifier-yo.yml'
Исправлено использование:
sudo chown yourusername:yourusername /home/yourusername/.config/configstore/update-notifier-yo.yml
Ответ 3
hi в моем случае (по ubuntu 12.04), добавление префикса в ~/.npmrc ничего не изменило.
если это так, создайте пакет node самостоятельно и установите его в /opt/ node или/home/user/.node.
Ответ 4
У меня была почти идентичная ошибка с участием файла rogue .yo-rc.json
в корневой директории из ранее установленного проекта. Yeoman переключал cdd из установочного каталога в корневую директорию на полпути через установку, но только выводил ошибку разрешений EACCESS без каких-либо подробностей, что каталог установки был /
. Потребовалось много времени, чтобы понять, почему это было, и включала отладку через источник Йомен, но я в конце концов узнал, что Йомен будет искать дерево каталогов, пока не найдет .yo-rc.json
, и сгенерирует там код, вызвав chdir в новый местоположение и др.
Йоман должен, возможно, проверить, что у пользователя есть права на запись для каталога. В качестве альтернативы, на выходе можно указать, что cwd изменился, или распечатать имя каталога установки, если там, где он находит .yo-rc.json
, отличается от cwd.
Команда поиска файлов rougue.yo-rc.json
sudo find / -name .yo-rc.json
Ответ 5
Из yoeman начало страницы появляется команда:
yo doctor
В моем случае $NODE_PATH (который в моем случае, Ubuntu 14.04, определен в файле /etc/profile.d) не совпадает с npm root. Добавление в корень npm в $NODE_PATH решает проблему.
Ответ 6
Я пытаюсь получить yeoman
, чтобы играть хорошо с моим vagrant
, и это то, что я должен был сделать, чтобы установить пакеты npm
глобально без sudo
на ubuntu
:
1. Создайте каталог для хранения глобальных пакетов
$ mkdir "${HOME}/.npm-packages"
2. Скажите npm
, куда поместить любые пакеты, установленные глобально
Вставьте этот фрагмент в ваш файл ~/.npmrc
:
prefix=${HOME}/.npm-packages
3. Убедитесь, что npm
может найти установленный binaries
et cetera
Вставьте этот фрагмент в свой .bashrc/.zshrc
:
NPM_PACKAGES="${HOME}/.npm-packages"
PATH="$NPM_PACKAGES/bin:$PATH"
// `unset` `manpath` to allow inheritance from `/etc/manpath` with
// the `manpath` command
unset MANPATH // remove this line if you have previously modified `manpath`
export MANPATH="$NPM_PACKAGES/share/man:$(manpath)"
4. Запустить следующий или перезапустить терминал
$ source ~/.bashrc
Надеюсь, это поможет любому, кто окажется в подобной ситуации.