Глобальная установка ganache-cli для npm не удалась (из-за sudo/permissions)

У меня есть npm версии 6.5.0 и узел v10.10.0. Не было никаких предыдущих проблем с глобальными установками npm.

sudo npm install --global ganache-cli

npm ERR! code 128
npm ERR! Command failed: /usr/bin/git clone --depth=1 -q -b master https://github.com/ethereumjs/ethereumjs-abi.git /root/.npm/_cacache/tmp/git-clone-305900d8
npm ERR! fatal: could not create leading directories of '/root/.npm/_cacache/tmp/git-clone-305900d8': Permission denied
npm ERR!     
npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2018-12-12T20_49_21_325Z-debug.log

1 ответ

Решение

Основная проблема заключается в том, что глобальная установка пакетов с npm связывает их в каталогах под /usr/local/, которые обычно принадлежат пользователю root.

Node Version Manager (nvm) - это один из способов обойти такие сложные проблемы с разрешениями. Это позволяет глобально установленным пакетам связываться с каталогами в вашей домашней папке под ~/.nvm/versions/node/<version>

Используя мой менеджер пакетов, я удалил node и соответствующее программное обеспечение, такое как npm,

я использовал find /usr/local/ -name 'node_modules' прочесать /usr/local/ для любых остатков пакетов, которые я ранее установил глобально с npm, Удалить их все.

Затем я установил nvm используя последний установочный скрипт с https://github.com/creationix/nvm

В моем случае это было

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

Я должен был тогда связать nvm в мою среду пути. В моем случае это означало ручное редактирование моего .bashrc профиль, чтобы включить это:

export NVM_DIR="/home/zack/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm

Оттуда я был готов получить самую последнюю версию LTS узла через nvm

nvm install --lts

Теперь глобально установленные пакеты могут быть установлены без sudo потому что они хранятся под ~/.nvm/versions/node/v10.14.2/ и все работает отлично!

Другие вопросы по тегам