Глобальная установка 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/
и все работает отлично!