Fehler: Der Schritt "Brew Link" wurde nicht erfolgreich abgeschlossen

158

Ich versuche, node.js über Homebrew zu installieren. Leider bekomme ich diesen Fehler:

  ~  brew install node
==> Downloading http://nodejs.org/dist/v0.8.10/node-v0.8.10.tar.gz
######################################################################## 100.0%
==> ./configure --prefix=/usr/local/Cellar/node/0.8.10
==> make install
==> Caveats
Homebrew installed npm.
We recommend prepending the following path to your PATH environment
variable to have npm-installed binaries picked up:
  /usr/local/share/npm/bin
Warning: Could not link node. Unlinking...
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
You can try again using `brew link node'
==> Summary
/usr/local/Cellar/node/0.8.10: 856 files, 13M, built in 103 seconds

Also versuche ich dann, den Knoten manuell zu verknüpfen ...

  ~  brew link node
Linking /usr/local/Cellar/node/0.8.10... Warning: Could not link node. Unlinking...

Error: Could not symlink file: /usr/local/Cellar/node/0.8.10/lib/node_modules/npm/scripts/relocate.sh
Target /usr/local/lib/node_modules/npm/scripts/relocate.sh already exists. You may need to delete it.
To force the link and delete this file, do:
  brew link -f formula_name

To list all files that would be deleted:
  brew link -n formula_name

Kein Glück, also versuche ich, den Knoten zwangsweise zu verknüpfen ...

  ~  brew link -f node
Linking /usr/local/Cellar/node/0.8.10... Warning: Could not link node. Unlinking...

Error: Permission denied - /usr/local/lib/dtrace/node.d

Ich bin in keiner Hinsicht mit dtrace vertraut und habe Angst, mich mit Berechtigungen herumzuschlagen, also habe ich versucht zu sudo ..

 ~ git:(master) sudo brew link -f node
Password:
Error: Cowardly refusing to `sudo brew link'
You can use brew with sudo, but only if the brew executable is owned by root.
However, this is both not recommended and completely unsupported so do so at
your own risk.

Ich habe versucht, Node über zu deinstallieren brew uninstall nodeund die Installation ohne Glück erneut zu versuchen.

chandlervdw
quelle
Ich kann kein Auto bekommen. Mongodb und Knoten zu verbinden mit Homebrew
Pixel 67

Antworten:

136

Das Homebrew-Paket für node.js enthält jetzt wieder npm. Dies ist mir passiert, als ich die Meldung des Homebrew-Pakets über das Entfernen der Standalone-Version zuerst verpasst habe.

Angenommen, Sie haben wie ich bereits Node / Npm beschädigt, indem Sie das Upgrade versucht haben, bevor Sie zuerst wissen npm uninstall npm -g, dass Sie es können rm -rf /usr/local/lib/node_modules/npmund dann brew link node. Dies entfernt die eigenständige selbst gehostete npm-Paket entfernt (anstatt dasjenige, das Brew installieren möchte), und Brew kann das mitgelieferte Paket aus Cellar mit Symlink verknüpfen.

natevw
quelle
9
Nachdem Sie npm entfernt haben, müssen Sie Ihr Terminal schließen und erneut öffnen, um es aus Ihrem Pfad zu entfernen, damit die Verknüpfung ordnungsgemäß funktioniert, wie @dain in seinem Kommentar erwähnt.
Kflorence
Das hat bei mir funktioniert. In meinem Fall konnte ich Elixir und Erlang während eines Upgrades nicht verbinden. Die betroffenen Verzeichnisse gehörten nicht meinem Benutzernamen, sondern "root". Ich habe beschlossen, diese Verzeichnisse zu löschen und neu zu installieren.
Trainer Roebuck
Wenn ich Linkknoten versuche, erhalte ich: * Fehler: Kein solches Fass: / usr / local / Cellar / node * | irgendwelche Ideen?
SuperUberDuper
1
Nachdem ich versucht hatte, npm zu aktualisieren, verbrachte ich eine Stunde damit, dies herauszufinden. Brew ließ mich nicht verlinken, bis die eigenständige Version zuerst entfernt wurde. Empfehlungen von Nate haben bei mir funktioniert.
Brandon Clapp
Wie installiere ich npm neu? Oder wird es mit dem Brew Install Node installiert?
Marciokoko
153

Ich verwende Mac OS X Mavericks. Ich habe versucht, den Knoten 0.10.25 zu installieren, und die Top-Antwort hat bei mir nicht funktioniert.

natevw sagt dazu rm -rf /usr/local/lib/node_modules/npmaber wenn die berechtigungen auf so /usr/local/lib/node_modulesaussehen:

drwxr-xr-x   3 root      admin   102 Feb  2 20:45 node_modules

Dann kann Brew seinen npm-Symlink in diesem Verzeichnis nicht erstellen. Hier ist meine Lösung:

Schritt 1: Aktualisieren Sie Homebrew

$ brew update

Schritt 2: Entfernen Sie den Knoten / npm überall auf Ihrem System

Einige dieser Befehle sind nicht erforderlich, je nachdem, wie Sie node / npm in der Vergangenheit installiert haben.

$ brew uninstall npm
$ brew uninstall node
$ npm uninstall npm -g
$ sudo rm -rf /usr/local/lib/node_modules

Hinweis: Ich hatte streunende Knotendateien, die ich beim Ausführen gefunden habe brew -v link node(was mir die ausführliche Ausgabe der Verknüpfungsfehler gab, über die sich Brew beschwert hat). Möglicherweise müssen Sie:

$ sudo rm -rf /usr/local/include/node
$ sudo rm -rf /usr/local/lib/node

Schritt 3: Öffnen Sie ein neues Terminal und installieren Sie den Knoten

$ brew install node
Franksort
quelle
1
Vielen Dank! Das hat mir sehr geholfen und mein Problem behoben. +1
Ricky Mutschlechner
5
Arbeitete für mich ... obwohl ich das Verzeichnis node_modules (endend mit 's') entfernen musste ...
songololo
1
Dies sollte die akzeptierte Antwort werden. Auch für Yosemite relevant.
Rog
1
Dies funktionierte auch für mich, aber ich musste diesen chown-Befehl ausführen, um den Link endlich zuzulassen. sudo chown -R whoami/ usr / lokale Soße
straubcreative
1
Um Knoten überall auf Ihrem Mac zu entfernen, folgte ich diesem Artikel: stackabuse.com/how-to-uninstall-node-js-from-mac-osx
ankitkpd
40
sudo chown -R $(whoami) /usr/local 

würde gut tun, wie in der Fehlerbehebung auf der Braustelle erwähnt

https://github.com/Homebrew/homebrew/wiki/troubleshooter

Talal
quelle
3
Ich bin überrascht, dass sie dies empfehlen. Wäre es nicht besser zu tun: sudo chmod -R g+w /usr/local(obwohl ehrlich gesagt, beide erschrecken mich)
getWeberForStackExchange
@getWeberForStackExchange Ich habe versucht, was Sie gesagt haben, aber es hat für mich keinen Unterschied gemacht. Irgendwelche Ideen, warum das so sein könnte?
f1lt3r
@AlistairMacDonald Sie haben das wahrscheinlich schon herausgefunden, aber ich würde wahrscheinlich mehr Informationen benötigen, um herauszufinden, warum Sie Probleme hatten. Durch Ändern des Eigentums an allem in / usr / local soll der aktuelle Benutzer die Knotenverknüpfungen in der Struktur / usr / local erstellen können. Ich habe vorgeschlagen, nur die Gruppenberechtigungen jeder Datei zu ändern, anstatt den Besitz zu übernehmen, was etwas weniger verrückt ist. Mein Befehl ging davon aus, dass Ihr Benutzer Teil der Gruppe ist, die alle / usr / local besitzt. Es ist auch möglich, dass es in / usr / local verschiedene Gruppen gibt, für die ein chgrpBefehl erforderlich wäre .
getWeberForStackExchange
Ich habe Home-Brew unter OS X 10.11 speziell installiert, um Mitternachtskommandant und Wget zu erhalten. Ich habe npm nicht installiert. Der Schritt "Brew Link" ist fehlgeschlagen, wie in der Frage während der mc-Installation beschrieben. Diese Antwort hat bei mir funktioniert; Ich nahm die Änderung vor und führte den Link mit "Brew Link Midnight-Commander" erneut aus, der dann einwandfrei lief. Danach wurde durch Eingabe von "mc" in der Befehlszeile wie erwartet der Mitternachtskommandant aufgerufen. Danach funktionierte "Brew Install Wget" ohne Fanfare. Gute Antwort.
Fyngyrz
Dieser Befehl wird von empfohlen brew doctor, aber ich bevorzuge sudo su, die Befehle auszuführen und dann das Terminal zu schließen
jchnxu
37

Sie haben wahrscheinlich bereits eine ältere Version von node.js mit einer anderen Methode installiert, daher müssen Sie die Dateien, die Brew im Weg stehen, manuell entfernen.

Sie brew link -n nodeund manuell diese widersprüchlichen Dateien und Verzeichnisse löschen, dann versuchen Sie es brew link nodeerneut.

Trevor Dixon
quelle
4
Es hat einige Zeit gedauert, aber genau das, was ich tun musste. Danke :)
Christoffer
Ich habe das gleiche Problem mit aspell. Wie finde ich die widersprüchlichen Dateien und Verzeichnisse?
LWZ
33

Ich bin etwas spät dran. Was für mich funktioniert hat, war Folgendes:

* npm uninstall npm -g

* brew uninstall node

* brew install node

* sudo rm -rf /usr/local/lib/dtrace/node.d

* brew link node (caused error with permissions)

* sudo chmod 777 /usr/local/lib/dtrace/node.d

* brew link node

Nach dieser Sequenz war alles erfolgreich

Wille
quelle
Das hat endlich bei mir funktioniert. Ich bekam Probleme, nachdem ich versucht hatte, Node via Brew zu installieren, nachdem ich npm bereits installiert hatte. Es brach im Wesentlichen npm für mich. Ich musste den npm-Ordner rm -rf und dann per Brew installieren (die npm-Deinstallation funktionierte bei mir nicht mehr). Danach funktionierten die restlichen Schritte perfekt.
Rdrobinson3
5
sudo chmod 777Dies ist niemals die richtige Lösung. Wenn Sie Berechtigungsprobleme haben, untersuchen Sie, warum diese auftreten, und legen Sie die Mindestberechtigungsstufe fest, die für die Ausführung des Auftrags erforderlich ist. Mit diesem Befehl kann die Datei von jedem im System geändert werden.
Bobmagoo
Brillant. Danke dir. Obwohl ich brew link nodezum ersten Mal keine Dauerwellenprobleme hatte.
Bede Constantinides
Anstatt dieses Verzeichnis zu ändern, habe ich es einfach in Besitz genommen. chown myuser -R -v / usr / local / lib / dtrace / Ich hatte auch das Problem, dass dtrace nicht als Verzeichnis existiert. Der Fehler war der gleiche, aber es war kein Verzeichnis vorhanden.
Jason Short
15

Versuche dies. Habe von einer anderen Referenz bekommen und für mich gearbeitet.

brew uninstall node
brew update
brew upgrade
brew cleanup
brew install node
sudo chown -R $(whoami) /usr/local
brew link --overwrite node
brew postinstall node
Randula
quelle
brew postinstall nodewar das Ticket
Prototyp
Das war das Ticket! Aus irgendeinem Grund musste ich Brew Upgrade 2X ausführen und beim zweiten Mal wurde ich gebeten, ein Update für XCode zu installieren. Zwischen brew link --overwrite nodeund dem letzten Befehl scheint alles zu funktionieren. Der letzte Befehl, den Sie vorgeschlagen haben, funktioniert wegen 'sudo nicht. Verwenden Sie stattdessenbrew postinstall node
Dani Amsalem
10

Ich hatte das gleiche Problem, nachdem ich alle meine Anwendungen von meinem alten Mac auf meinen neuen übertragen hatte.

Ich habe die Lösung gefunden, indem ich ausgeführt habe brew doctor:

Warnung: Es wurden defekte Symlinks gefunden. Entfernen Sie sie mitbrew prune

Nach dem Laufen brew pruneist Homebrew endlich wieder auf dem richtigen Weg :)

Kévin LR
quelle
4

Mein Problem hatte eine etwas andere Lösung. Das Verzeichnis, in dem Brew die Symlinks erstellen wollte, gehörte nicht dem aktuellen Benutzer.

ls -la /usr/local/bin/lib/node | grep node ergab:

drwxr-xr-x    3 24561  wheel   102 May  4  2012 node
drwxr-xr-x    7 24561  wheel   238 Sep 18 16:37 node_modules

Für mich hat das folgende Problem behoben:

sudo chown $(users) /usr/local/bin/lib/node_modules
sudo chown $(users) /usr/local/bin/lib/node

ps. $(users)wird auf deinen Benutzernamen erweitert, hat sich ein wenig Mühe gegeben, faulen Kopierpastern zu helfen;)

suweller
quelle
2
Ich hatte das gleiche Problem. Dies kann anscheinend auftreten, wenn Sie "make install" für eine andere App manuell ausführen. Ich hatte vor kurzem genau das getan und die Lösung war, wie Sie zu chownen.
Richard Tuttle
4

Danke @suweller.

Ich habe das Problem behoben:

  bin git:(master)  brew link node
Linking /usr/local/Cellar/node/0.10.25... Warning: Could not link node. Unlinking...

Error: Permission denied - /usr/local/lib/node_modules/npm

Ich hatte das gleiche Problem wie Suweller:

  bin git:(master)  ls -la /usr/local/lib/ | grep node
drwxr-xr-x   3 24561  wheel   102 11 Okt  2012 node
drwxr-xr-x   3 24561  wheel   102 27 Jan 11:32 node_modules

Also habe ich dieses Problem behoben durch:

  bin git:(master)  sudo chown $(users) /usr/local/lib/node_modules
  bin git:(master)  sudo chown $(users) /usr/local/lib/node

Nachdem ich dieses Problem behoben hatte, bekam ich ein anderes:

  bin git:(master)  brew link node
Linking /usr/local/Cellar/node/0.10.25... Warning: Could not link node. Unlinking...

Error: Could not symlink file: /usr/local/Cellar/node/0.10.25/lib/dtrace/node.d
Target /usr/local/lib/dtrace/node.d already exists. You may need to delete it.
To force the link and overwrite all other conflicting files, do:
  brew link --overwrite formula_name

To list all files that would be deleted:
  brew link --overwrite --dry-run formula_name

Also entfernte ich node.d durch:

  bin git:(master)  sudo rm /usr/local/lib/dtrace/node.d

habe einen weiteren Berechtigungsfehler erhalten:

  bin git:(master)  brew link node
Linking /usr/local/Cellar/node/0.10.25... Warning: Could not link node. Unlinking...

Error: Could not symlink file: /usr/local/Cellar/node/0.10.25/lib/dtrace/node.d
/usr/local/lib/dtrace is not writable. You should change its permissions.

und behoben:

  bin git:(master)  sudo chown $(users) /usr/local/Cellar/node/0.10.25/lib/dtrace/node.d

und schließlich hat alles geklappt:

  bin git:(master)  brew link node
Linking /usr/local/Cellar/node/0.10.25... 1225 symlinks created
zero3nna
quelle
3

Die meisten Probleme bei der Brew-Installation mit dem Knoten werden durch Berechtigungsfehler oder durch die vorherige Installation des Knotens und den Versuch, ihn über Brew zu installieren, verursacht. Die Lösung, die für mich endlich funktionierte, war:

WARNUNG: Dadurch werden NodeJS (mehrere Versionen) mit Vorsicht deinstalliert:

  1. Knoten über Brew entfernen:

    Brew Deinstallationsknoten

  2. auch mit Gewalt:

    Brew Deinstallationsknoten --force

  3. So verwenden Sie das Skript Quelle: Knoten entfernen :

    curl -O https://raw.githubusercontent.com/DomT4/scripts/master/OSX_Node_Removal/terminatenode.sh

Dann:

chmod +x /path/to/terminatenode.sh

Dann:

./terminatenode.sh .
  1. Stellen Sie dann sicher, dass Sie den folgenden Befehl ausführen:

    chown $ USER / usr / local

  2. Führen Sie dann ein Brau-Update durch (machen Sie so lange weiter, bis alle Dinge aktualisiert sind):

    Gebräu-Update

  3. Bereinigen Sie das Gebräu und führen Sie das Update erneut aus (möglicherweise redundant) und führen Sie den Arzt aus, um sicherzustellen, dass die Dinge in Ordnung sind:

    Aufräumen brauen; Gebräu-Update; Brau Doktor

  4. Und schließlich installieren Sie den Knoten über Brew (ausführlich):

    Brew install -v Knoten

AhsenB
quelle
Die Zahlen sind nicht richtig formatiert ... aber die Schritte sind da. Behebt das Formatierungsproblem morgen.
AhsenB
2

Die ultimative Antwort: Ändern Sie den Eigentümer dieses Verzeichnisses in den, der Sie sind

sudo chown -R `whoami` /usr/local/include

Dies wird auch von Brew empfohlen, wenn Sie einen Brew Doctor ausführen

Bobo
quelle
2

Während der Installation wurde eine Fehlermeldung angezeigt, dass die Verknüpfung von Knoten und / usr / local / include nicht beschreibbar ist

Die folgende Lösung hat bei mir funktioniert: - Erstellen Sie zuerst den Include-Ordner. Beachten Sie, dass hierfür Sudo-Berechtigungen erforderlich sind

cd /usr/local

sudo mkdir include

sudo chown -R $(whoami) $(brew --prefix)/*

brew link node
Pukhraj soni
quelle
1

Ich habe es auch geschafft, mein NPM durcheinander zu bringen und Pakete zwischen diesen Homebrew-Versionen zu installieren, und egal wie oft ich den Knoten gelöst / verlinkt und deinstalliert / installiert habe, es hat immer noch nicht funktioniert.

Wie sich herausstellt, müssen Sie NPM aus dem Pfad entfernen, da Homebrew es sonst nicht installiert: https://github.com/mxcl/homebrew/blob/master/Library/Formula/node.rb#L117

Hoffe, dies hilft jemandem mit dem gleichen Problem und spart ungefähr die Stunde, die ich damit verbringen musste, nach dem Problem zu suchen ...

dain
quelle
Danke dir. Ich musste dies in Kombination mit der am höchsten bewerteten Antwort tun, damit es richtig funktioniert.
Kflorence
1

Löschen Sie diese Datei im Finder:

/usr/local/lib/dtrace/node.d

im Terminal:

$ brew link --overwrite --dry-run node

dann:

$ brew link node
monimen
quelle
1
Wenn ich laufe brew link --overwrite --dry-run node, sehe ich den Fehler No such keg: /usr/local/Cellar/node. Was vermisse ich?
PKHunter
1

Ich habe alle Methoden ausprobiert und keine davon funktioniert. Am einfachsten ist es, den Knoten von https://nodejs.org/en/download/ neu zu installieren.

Einfach herunterladen pkgund installieren. Jetzt habe ich eine Arbeit npmund nodewieder.

Jäger
quelle
0

Ich weiß nicht, ob es eine gute Idee ist oder nicht: Nachdem ich alle anderen Lösungen ohne Erfolg ausprobiert hatte, habe ich einfach / usr / local / lib / dtrace umbenannt, den Knoten verknüpft und das Verzeichnis erneut umbenannt. Danach funktionierte der Knoten wie erwartet.

Alex Maiburg
quelle
0

Ich hatte eine Weile damit zu kämpfen. (für mich hat "npm uninstall npm -g" nichts getan)

Ich habe ein paar Dinge ausprobiert:

npm uninstall npm -g
brew uninstall node
brew install node

Ich hatte immer noch einige Probleme und bekam Fehler, als ich versuchte, die Knotendateien zu verknüpfen

Endlich habe ich es versucht

brew link --overwrite node

Das schien es behoben zu haben. (Es überschreibt alle in Konflikt stehenden Dateien und verknüpft auch Node und Npm.)

Hoffe das hilft

Tanuj
quelle
0

Ich habe Brew vollständig deinstalliert und erneut gestartet, nur um das gleiche Problem erneut zu finden.

Brew scheint zu funktionieren, indem die erforderlichen Binärdateien mit Ihrem System verknüpft werden, wobei andere Installationsmethoden normalerweise die Dateien kopieren.

Ich habe hier einen vorhandenen Satz von Knotenbibliotheken gefunden:

/usr/local/include/node

Nach einigem Kopfkratzen erinnerte ich mich daran, dass ich den Knoten zum Zeitpunkt dieser alten Version installiert hatte und es nicht über Brew war.

Ich habe diesen gesamten Ordner manuell gelöscht und npm erfolgreich verknüpft.

Dies würde erklären, warum die Verwendung von Brew Deinstallation oder sogar Deinstallation von Brew selbst keine Auswirkungen hatte.

Die Antwort mit dem höchsten Rang drückt dies sehr einfach aus, aber ich dachte, ich würde meine Beobachtungen darüber hinzufügen, warum es notwendig ist.

Ich vermute, dass eine Reihe von Problemen mit anderen Brühpaketen durch alte, nicht gebraute Instanzen von Paketen verursacht werden könnten.

Henry
quelle
0

Hatte meinen Kopf am Symlinking-Knoten zerstört ... und nichts schien zu funktionieren ... aber schließlich funktionierte es, die richtigen Berechtigungen festzulegen. Dieser 'sudo chown -R $ (whoami) / usr / local' hat die Arbeit für mich erledigt.

Shahsayyad
quelle
0

Ich habe dies in El Capitan mit dem folgenden Befehl behoben. Ehrlich gesagt, keine Ahnung, was es tut, aber ich dachte, ich würde teilen, da es mein Problem behoben hat.

brew link --overwrite node
Fizzix
quelle
-5

Sie müssen das npm-Paket manuell entfernen.

erster Verknüpfungsknoten: brew link -n node

npm-Ordner entfernen: rm -R /usr/local/Cellar/node/0.8.10/lib/node_modules/npm

wieder verlinken: brew link node

Es wird einen weichen Link zum neuen Standort von npm geben

soenke
quelle
5
Entfernt dies nicht die NEUE npm, die Brew zu installieren versucht? Im Anschluss daran blieb mir keine funktionierende npm installiert, während das Löschen des ALTEN npm-Ordners wie in meiner Antwort funktioniert.
Natevw
Es sieht für mich so aus, als würden Sie auch versuchen, das neue Paket zu entfernen - während es sicherlich das alte ist, das entfernt werden muss? Ich fand tatsächlich, dass ein Symlink für / usr / local / bin / npm
Caroline