Fehler beim Installieren von node.js mit Homebrew


75

Ich versuche, Node.js mit Homebrew zu installieren (ich habe es zuvor ohne Brew installiert und versucht, alle diese Dateien zu löschen). Ich habe mir frühere Fragen mit ähnlichen Fragen angesehen, aber ich konnte sie nicht zum Laufen bringen. Zuerst habe ich versucht, brew link nodewas mir gab:

myusername@c126h060:~$ 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

Und wenn ich dann renne, brew link --overwrite nodebekomme ich folgendes:

myusername@c126h060:~$ 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.

Als ich versuchte brew link -n node, Dateien zum manuellen Löschen zu finden, konnte ich einige davon löschen, aber ich habe immer noch die folgenden Dateien, die ich nicht löschen kann:

myusername@c126h060:~$ 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

Wenn ich versuche zu löschen, erhalte ich Folgendes (dasselbe gilt für alle diese Dateien):

myusername@c126h060:~$ rm /usr/local/etc/bash_completion.d/npm
rm: /usr/local/etc/bash_completion.d/npm: No such file or directory

Was soll ich machen?

Antworten:


145

Es kann sein, dass Sie Ihr Systemtap-Verzeichnis nicht besitzen. Navigieren Sie zu /usr/local/sharediesem Befehl und führen Sie ihn aus, um sich selbst zum Eigentümer zu machen:

chown -R <yourusername>:<yourgroupname> systemtap

Als ich heute das gleiche Problem behoben habe, musste /usr/localich das gleiche für das lib-Verzeichnis tun.


8
vergiss nicht "sudo". sudo chown -R <IhrBenutzername>: <IhrGruppenname> Systemtap
1.

2
Ich erhalte systemtap: "Keine solche Datei oder kein solches Verzeichnis". Ich benutze macOS sierra.
lmc

3
hmm, unter Angabe des vollständigen Pfades / usr / local / share / systemtap /
working

2
Kann jemand ein Beispiel für die Futterlinie ohne Platzhalter geben? Ich möchte nicht die falschen Dinge eingeben.
Vielen

1
sudo chown -R victor:admin systemtapperfekt für mich gearbeitet !! Mein Knoten wurde erfolgreich auf v14.8.0 aktualisiert :)
Victor

22

Alternativ können Sie den Besitz und die Berechtigungen für systemtap überprüfen

$ 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

Fügen Sie sich dann der Eigentümergruppe hinzu (in diesem Fall Rad).

sudo dscl . append /Groups/wheel GroupMembership <username>

Ändern Sie dann die Berechtigungen für Tapset, um Gruppenänderungen zu ermöglichen

sudo chmod -R 775 /usr/local/share/systemtap/tapset/

18

Was hat bei mir funktioniert:

  1. cd /usr/local/share
  2. sudo chown -R <user>:<group> systemtap(Habe 1 & 2 auch für /usr/local)

Die obigen Schritte scheiterten. Ging zur nächsten Antwort. Versucht;

ls -al /usr/local/share/systemtap/ was einen 'Nicht gefundenen Fehler' warf.

Dann: brew link nodewarf einen Fehler. So tat ich:

  1. sudo rm -rf /usr/local/lib/node_modules
  2. brew postinstall node -v
  3. Und zuletzt brew link node
  4. node -v :) :)

Also habe ich im Grunde alle node_modules/Ordner entfernt und alles neu gestaltet.


18

Holen Sie sich Ihren Benutzernamen,

und holen Sie sich Ihre Gruppen: (könnte mehr als eine sein, ist im Allgemeinen 'admin')

whoami
groups

dann zum Beispiel:

sudo chown -R chrislee:admin /usr/local/share/systemtap/

7
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'

Führen Sie die folgenden Befehle aus

brew postinstall node -v
brew link node 

1

Das folgende Rezept hat bei mir funktioniert:

  1. Fügen Sie Ihren Benutzernamen hinzu, um das Gruppenrad hinzuzufügen sudo dscl . append /Groups/wheel GroupMembership username
  2. sudo chmod -R 775 /usr/local/share/systemtap/tapset/
  3. sudo rm -rf /usr/local/lib/node_modules
  4. brew cleanup
  5. brew link node
  6. brew uninstall --force node
  7. brew install node

Dann überprüfen Sie die Version mit node -vund npm -v.


2
Willkommen bei SO! Bitte beachten Sie die Richtlinien unter stackoverflow.com/help/how-to-answer und bearbeiten Sie Ihren Beitrag entsprechend, z. B. indem Sie weitere Erklärungen hinzufügen, warum Ihre Lösung funktioniert hat.
B - rian

0

Fügen Sie einfach sudo am Anfang des Befehls npm install expo-cli --global hinzu

wie sudo npm install expo-cli --globalund drücken Sie die Eingabetaste.

hoffe es wird dir helfen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.