Errore: il passaggio 'brew link' non è stato completato correttamente


158

Sto cercando di installare node.js tramite Homebrew. Sfortunatamente, ricevo questo errore:

  ~  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

Quindi provo a collegare manualmente il nodo ...

  ~  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

Nessuna fortuna, quindi provo a collegare forzatamente il nodo ...

  ~  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

Non ho familiarità con dtrace in alcun modo e ho paura di pasticciare con le autorizzazioni, quindi ho provato a 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.

Ho provato a disinstallare il nodo tramite brew uninstall nodee riprovare l'installazione senza fortuna.


Non riesco ad avere automake. mongodb e nodo per il collegamento con homebrew
pixel 67

Risposte:


136

Il pacchetto homebrew per node.js ora include di nuovo npm, quindi questo è successo a me quando ho perso il messaggio del pacchetto homebrew sulla rimozione prima della versione standalone.

Supponendo che, come me, tu abbia già rotto il nodo / npm tentando l'aggiornamento prima di saperlo npm uninstall npm -gprima, puoi rm -rf /usr/local/lib/node_modules/npme poi brew link node. Questo rimuove il pacchetto npm autonomo ospitato (piuttosto che quello che brew vorrebbe installare) e consente a brew di connettere il suo bundle da Cellar.


9
Dopo aver rimosso npm, è necessario chiudere e riaprire il terminale per rimuoverlo dal percorso affinché il collegamento funzioni correttamente, come indicato da @dain nel suo commento.
kflorence,

Questo ha funzionato per me. Nel mio caso, non sono riuscito a collegare Elisir ed Erlang durante un aggiornamento. Le directory di interesse non erano di proprietà del mio nome utente, ma di proprietà di "root". Ho deciso di eliminare quelle directory e reinstallare.
Allenatore Roebuck,

quando provo il nodo di collegamento ottengo: * Errore: nessun tale barile: / usr / local / Cellar / node * | qualche idea?
SuperUberDuper

1
Dopo aver provato ad aggiornare npm, ho trascorso un'ora a cercare di capirlo. Brew non mi avrebbe permesso di collegarmi fino a quando non fosse stata rimossa prima la versione standalone. I consigli di Nate hanno funzionato per me.
Brandon Clapp,

Come posso reinstallare npm? O viene installato con il nodo di installazione brew?
marciokoko,

153

Corro Mac OS X Mavericks. Ho provato a installare il nodo 0.10.25 e la risposta migliore non ha funzionato per me.

natevw dice a rm -rf /usr/local/lib/node_modules/npmma se i permessi /usr/local/lib/node_modulessono simili a questo:

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

quindi brew non sarà in grado di creare il suo link simbolico npm in quella directory. Ecco la mia soluzione:

Passaggio 1: aggiorna Homebrew

$ brew update

Passaggio 2: rimuovere il nodo / npm ovunque sul sistema

Alcuni di questi comandi non sono necessari a seconda della modalità di installazione del nodo / npm in passato.

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

Nota: avevo file di nodi vaganti che ho trovato eseguendo brew -v link node(il che mi ha dato l'output dettagliato degli errori di collegamento che la birra si stava lamentando). Potrebbe essere necessario:

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

Passaggio 3: aprire un nuovo terminale e installare il nodo

$ brew install node

1
Grazie! Questo mi ha aiutato molto e risolto il mio problema. +1
Ricky Mutschlechner

5
Ha funzionato per me ... anche se ho dovuto rimuovere la directory node_modules (che termina in 's') ...
songololo

1
Questa dovrebbe diventare la risposta accettata. Rilevante anche per Yosemite.
Rog,

1
Questo ha funzionato anche per me, tuttavia ho dovuto eseguire questo comando chown per consentire finalmente il collegamento. sudo chown -R whoami/ usr / salsa
straubcreative

1
Per rimuovere il nodo ovunque sul tuo Mac ho seguito questo articolo: stackabuse.com/how-to-uninstall-node-js-from-mac-osx
ankitkpd

40
sudo chown -R $(whoami) /usr/local 

farebbe bene come menzionato nella risoluzione dei problemi del sito della birra

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


3
Sono sorpreso che lo raccomandino. Non sarebbe meglio fare: sudo chmod -R g+w /usr/local(anche se onestamente, entrambi mi spaventano)
getWeberForStackExchange

@getWeberForStackExchange Ho provato quello che hai detto ma non ha fatto differenza per me. Qualche idea sul perché potrebbe essere?
f1lt3r

@AlistairMacDonald Probabilmente hai già capito questo, ma probabilmente avrei bisogno di maggiori informazioni per capire perché hai avuto problemi. La modifica della proprietà di tutto in / usr / local dovrebbe consentire all'utente corrente di creare i collegamenti del nodo nella struttura / usr / local. Stavo proponendo di cambiare le autorizzazioni di gruppo di ogni file anziché la proprietà, il che è leggermente meno folle. Il mio comando presupponeva che il tuo utente facesse parte del gruppo proprietario di / usr / local. È anche possibile che ci siano diversi gruppi in / usr / local, che richiederebbe un chgrpcomando.
getWeberForStackExchange il

Ho installato la birra fatta in casa con OS X 10.11 appositamente per ottenere il comandante di mezzanotte e wget. Non ho installato npm. Il passaggio "brew link" non è riuscito come descritto nella domanda durante l'installazione di mc. Questa risposta ha funzionato per me; Ho apportato la modifica, ho eseguito nuovamente il collegamento con "brew link midnight-comandante", che poi ha funzionato bene. Dopodiché, digitando "mc" nella riga di comando è stato richiamato il comandante di mezzanotte come previsto. Successivamente, "brew install wget" ha funzionato senza fanfara. Bella risposta.
fyngyrz,

questo comando è consigliato da brew doctor, ma preferisco sudo su, esegui i comandi quindi chiudi il terminale
jchnxu,

37

Probabilmente hai già installato una versione precedente di node.js utilizzando un metodo diverso, quindi devi rimuovere manualmente i file che si stanno ostacolando.

Non brew link -n nodee cancellare manualmente i file e le directory in conflitto, quindi provare brew link nodedi nuovo.


4
Ci è voluto del tempo, ma proprio quello che dovevo fare. Grazie :)
Christoffer

Ho lo stesso problema con aspell. Come trovo i file e le directory in conflitto?
LWZ,

33

Sono un po 'in ritardo, quello che ha funzionato per me è stato questo:

* 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

Tutto ha avuto successo dopo questa sequenza


Questo alla fine ha funzionato per me. Stavo riscontrando problemi dopo aver provato a installare il nodo tramite brew dopo aver già installato npm. Fondamentalmente ha rotto npm per me. Ho dovuto rm -rf la cartella npm quindi installare tramite brew (la disinstallazione di npm non funzionava più per me). Dopodiché il resto dei passaggi ha funzionato perfettamente.
rdrobinson3,

5
sudo chmod 777Questa non è mai la soluzione giusta, se hai problemi con le autorizzazioni, verifica perché si stanno verificando e imposta il livello minimo di autorizzazioni necessarie per eseguire il lavoro. Questo comando consentirà al file di essere modificato da chiunque nel sistema.
bobmagoo,

Brillante. Grazie. Anche se brew link nodeper la prima volta non ho avuto problemi di permessi .
Bede Constantinides,

Piuttosto che modificare quella directory, ne ho appena preso possesso. chown myuser -R -v / usr / local / lib / dtrace / Ho anche avuto il problema che dtrace non esisteva come directory. L'errore era lo stesso, ma non era presente alcuna directory.
Jason Short,

15

Prova questo. Ottenuto da un'altra referenza e ha funzionato per me.

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

brew postinstall nodeera il biglietto
prototipo il

Questo era il biglietto! Per qualche motivo, ho dovuto eseguire brew upgrade 2X e la seconda volta mi ha chiesto di installare un aggiornamento a XCode. Tra brew link --overwrite nodee il comando finale, tutto sembra funzionare. Il comando finale che hai suggerito non funziona a causa di 'sudo. Invece, usabrew postinstall node
Dani Amsalem l'

10

Ho avuto lo stesso problema dopo aver trasferito tutte le mie applicazioni dal mio vecchio Mac a quello nuovo.

Ho trovato la soluzione eseguendo brew doctor:

Avvertenza: sono stati trovati collegamenti simbolici non funzionanti. Rimuovili conbrew prune

Dopo l'esecuzione brew prune, Homebrew è finalmente tornato in pista :)


4

Il mio problema aveva una soluzione leggermente diversa. La directory in cui brew voleva creare i symlink non era di proprietà dell'utente corrente.

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

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

Per me, il seguente risolto:

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

ps. $(users)verrà ampliato con il tuo nome utente, è andato un po 'fuori dal mio modo di aiutare i paster copia pigri;)


2
Ho avuto lo stesso problema. Ciò può accadere apparentemente se si esegue "make install" manualmente per un'altra app. Di recente avevo fatto proprio questo e la soluzione era quella di vestire come hai fatto tu.
Richard Tuttle,

4

grazie @suweller.

Ho risolto il problema:

  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

Ho avuto lo stesso problema del 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

quindi ho risolto questo problema con:

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

dopo aver risolto questo problema ne ho ottenuto un altro:

  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

Quindi ho rimosso node.d da:

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

ha ricevuto un altro errore di autorizzazione:

  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.

e risolto:

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

e finalmente tutto ha funzionato:

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

3

La maggior parte dei problemi di installazione di brew con il nodo sono causati da errori di autorizzazione o dal fatto che il nodo sia stato precedentemente installato e che quindi provi a installarlo tramite brew. La soluzione che ha funzionato per me alla fine è stata:

ATTENZIONE: Questo disinstallerà nodejs (più versioni) da usare con cautela:

  1. Rimuovi nodo tramite brew:

    brew disinstalla nodo

  2. anche con la forza:

    brew disinstallazione nodo --force

  3. Per utilizzare lo script Origine: Rimuovi nodo :

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

Poi:

chmod +x /path/to/terminatenode.sh

Poi:

./terminatenode.sh .
  1. Quindi assicurati di eseguire il seguente comando:

    chown $ USER / usr / local

  2. Quindi fai un aggiornamento della birra (continua fino a quando tutte le cose non vengono aggiornate):

    aggiornamento della birra

  3. Pulisci la preparazione ed esegui di nuovo l'aggiornamento (potrebbe essere ridondante) ed esegui il medico per assicurarti che le cose siano a posto:

    pulizia della birra; aggiornamento della birra; preparare il dottore

  4. E infine installa il nodo tramite brew (dettagliato):

    brew install -v nodo


I numeri non vengono formattati correttamente ... ma i passaggi ci sono. Risolverò il problema di formattazione domani.
AhsenB,

2

la risposta definitiva: cambia il proprietario di quella directory in chiunque tu sia

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

che è raccomandato anche da brew se si esegue brew doctor


2

Stavo ricevendo un errore durante l'installazione che non è in grado di collegare il nodo e / usr / local / include non è scrivibile

Di seguito la soluzione ha funzionato per me: - Innanzitutto crea la cartella include, nota che questo richiede privilegi sudo

cd /usr/local

sudo mkdir include

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

brew link node

1

Sono anche riuscito a rovinare il mio NPM e i pacchetti installati tra queste versioni di Homebrew e non importa quante volte ho scollegato / collegato e disinstallato / installato il nodo non funzionava ancora.

A quanto pare devi rimuovere NPM dal percorso altrimenti Homebrew non lo installerà: https://github.com/mxcl/homebrew/blob/master/Library/Formula/node.rb#L117

Spero che questo possa aiutare qualcuno con lo stesso problema e risparmiare quell'ora o così ho dovuto passare a cercare il problema ...


Grazie. Ho dovuto farlo in combinazione con la risposta più votata per farlo funzionare correttamente.
kflorence,

1

dal Finder, Elimina questo file:

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

nel terminal:

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

poi:

$ brew link node

1
Quando corro brew link --overwrite --dry-run node, vedo l'errore No such keg: /usr/local/Cellar/node. Cosa mi sto perdendo?
PKHunter


0

Non so se è una buona idea o meno: dopo aver provato tutte le altre soluzioni senza successo, ho semplicemente rinominato / usr / local / lib / dtrace, nodo collegato e rinominato di nuovo la directory. Successivamente, il nodo ha funzionato come previsto.


0

Ho lottato con questo per un po '. (per me "npm uninstall npm -g" non ha fatto nulla)

Ho provato un sacco di cose:

npm uninstall npm -g
brew uninstall node
brew install node

Stavo ancora riscontrando dei problemi e stavo riscontrando errori quando ho provato a collegare i file del nodo

Finalmente ho provato questo

brew link --overwrite node

Sembrava averlo risolto. (sovrascrive tutti i file in conflitto e collega anche nodo e npm)

Spero che questo ti aiuti


0

Ho disinstallato completamente brew e ho ricominciato, solo per ritrovare lo stesso problema.

Brew sembra funzionare collegando in modo simbolico i file binari richiesti al sistema in cui altri metodi di installazione in genere copiano i file.

Ho trovato un set esistente di librerie di nodi qui:

/usr/local/include/node

Dopo qualche grattata alla testa mi sono ricordato di aver installato il nodo alla data contro questa vecchia versione e non era stato tramite brew.

Ho eliminato manualmente l'intera cartella e ho collegato correttamente npm.

Ciò spiegherebbe perché l'uso della disinstallazione brew o anche la disinstallazione brew stessa non ha avuto alcun effetto.

La risposta con il punteggio più alto lo pone in modo molto semplice, ma ho pensato di aggiungere le mie osservazioni sul perché sia ​​necessario.

Immagino che un sacco di problemi con altri pacchetti di birra potrebbero essere causati da vecchie istanze di non birra che si frappongono.


0

Avevo distrutto la mia testa sul nodo del collegamento simbolico ... e nulla sembrava funzionare ... ma alla fine quello che ha funzionato è impostare le autorizzazioni giuste. Questo 'sudo chown -R $ (whoami) / usr / local' ha funzionato per me.


0

Ho risolto questo problema in El Capitan usando il seguente comando. Onestamente, non ho idea di cosa faccia, ma ho pensato che avrei condiviso perché risolto il mio problema.

brew link --overwrite node

-5

È necessario rimuovere manualmente il pacchetto npm.

primo nodo non collegato: brew link -n node

rimuovere la cartella npm: rm -R /usr/local/Cellar/node/0.8.10/lib/node_modules/npm

collega di nuovo: brew link node

ci sarà un collegamento soft alla nuova posizione di npm


5
Questo non rimuove il NUOVO npm che brew sta cercando di installare? In seguito ciò mi ha lasciato senza un npm funzionante installato, mentre l'eliminazione della cartella npm OLD come nella mia risposta funziona.
natevw,

mi sembra che tu stia cercando di rimuovere anche il nuovo pacchetto - mentre sicuramente è quello vecchio che deve essere rimosso? In realtà ho scoperto che era rimasto un link simbolico per / usr / local / bin / npm
Caroline,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.