Устранение неполадок node.js с homebrew
Я пытаюсь установить Node.js с помощью Homebrew (я установил его ранее, не используя brew, и я попытался удалить все эти файлы). Я просмотрел предыдущие вопросы, задавая похожие вещи, но я не смог заставить их работать. Сначала я попробовал brew link node
, который дал мне:
[email protected]:~$ brew link node
Linking /usr/local/Cellar/node/0.12.6...
Error: Could not symlink share/systemtap/tapset/node.stp
Target /usr/local/share/systemtap/tapset/node.stp
already exists. You may want to remove it:
rm '/usr/local/share/systemtap/tapset/node.stp'
To force the link and overwrite all conflicting files:
brew link --overwrite node
To list all files that would be deleted:
brew link --overwrite --dry-run node
И затем, когда я запустил brew link --overwrite node
, я получаю следующее:
[email protected]:~$ brew link --overwrite node
Linking /usr/local/Cellar/node/0.12.6...
Error: Could not symlink share/systemtap/tapset/node.stp
/usr/local/share/systemtap/tapset is not writable.
Кроме того, когда я попытался использовать brew link -n node
для поиска файлов для ручного удаления, мне удалось удалить некоторые из них, но у меня все еще остались следующие файлы, которые я не могу удалить:
[email protected]:~$ brew link -n node
Would link:
/usr/local/etc/bash_completion.d/npm
/usr/local/bin/node
/usr/local/include/node
/usr/local/share/man/man1/node.1
/usr/local/share/systemtap/tapset/node.stp
/usr/local/lib/dtrace/node.d
Когда я пытаюсь удалить, я получаю следующее (то же самое для всех этих файлов):
[email protected]:~$ rm /usr/local/etc/bash_completion.d/npm
rm: /usr/local/etc/bash_completion.d/npm: No such file or directory
Что мне делать?
Ответы
Ответ 1
Возможно, у вас нет собственного каталога systemtap. Перейдите к /usr/local/share
и запустите эту команду, чтобы сделать себя владельцем:
chown -R <yourusername>:<yourgroupname> systemtap
Когда я исправлял эту же проблему ранее сегодня, мне также пришлось пойти в /usr/local
и сделать то же самое для каталога lib.
Ответ 2
Или, наоборот, проверьте права собственности и разрешения на systemtap
$ ls -al /usr/local/share/systemtap/
drwxr-xr-x 3 root wheel 102 Oct 23 18:06 .
drwxrwxr-x 15 root wheel 510 Oct 24 20:24 ..
drwxr-xr-x 2 root wheel 68 Oct 24 20:17 tapset
затем добавьте себя в группу владельца (в данном случае колесо)
sudo dscl . append /Groups/wheel GroupMembership <username>
затем измените разрешения на тапсет, чтобы разрешить изменения группы
sudo chmod -R 775 /usr/local/share/systemtap/tapset/
Ответ 3
Что сработало для меня:
-
cd /usr/local/share
-
sudo chown -R <user>:<group> systemtap
(Делал 1 и 2 для /usr/local
тоже)
Выше были неудачные шаги. Пошел к следующему ответу. Пытались;
ls -al /usr/local/share/systemtap/
который выбрал "Не найдена ошибка".
Затем: brew link node
выкидывает ошибку. Итак, я сделал:
-
sudo rm -rf /usr/local/lib/node_modules
-
brew postinstall node -v
- И наконец
brew link node
-
node -v
:)
Итак, в основном я удалил все папки node_modules/
и все изменил.
Ответ 4
arun:~$ brew link node
Linking /usr/local/Cellar/node/0.12.6...
Error: Could not symlink share/systemtap/tapset/node.stp
Target /usr/local/share/systemtap/tapset/node.stp
already exists. You may want to remove it:
rm '/usr/local/share/systemtap/tapset/node.stp'
Выполнить команду
brew postinstall node -v
brew link node
Ответ 5
получите свое имя пользователя,
и получить ваши группы: (может быть больше, чем один, как правило, "администратор")
whoami
groups
тогда, например:
sudo chown -R chrislee:admin /usr/local/share/systemtap/
Ответ 6
Следующий рецепт работал для меня:
- Добавьте свое имя пользователя, чтобы добавить групповое колесо
sudo dscl . append /Groups/wheel GroupMembership username
sudo chmod -R 775 /usr/local/share/systemtap/tapset/
sudo rm -rf /usr/local/lib/node_modules
brew cleanup
brew link node
brew uninstall --force node
brew install node
Затем проверьте версию с помощью node -v
и npm -v
.
Ответ 7
просто добавьте sudo в начале команды npm install expo-cli --global
как sudo npm install expo-cli --global
и нажмите ввод.
надеюсь, это тебе поможет.